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

pdf.worker.js.map « build « pdfjs « js - github.com/nextcloud/files_pdfviewer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 351f7f8a16d3d459ea211482cfc93c596fd1b3fa (plain)
1
{"version":3,"sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/obj.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js"],"names":["pdfjsVersion","pdfjsBuild","pdfjsCoreWorker","require","exports","WorkerTask","finish","terminate","ensureNotTerminated","WorkerMessageHandler","setup","testMessageProcessed","handler","supportTransfers","data","setVerbosityLevel","createDocumentHandler","terminated","cancelXHRs","WorkerTasks","verbosity","apiVersion","docParams","workerVersion","enumerableProperties","docId","docBaseUrl","workerHandlerName","task","i","pdfManager","pdfManagerCapability","source","cachedChunks","pdfStream","fullRequest","disableAutoFetch","msgHandler","password","length","rangeChunkSize","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","chunk","arrayByteLength","total","Math","reject","pdfInfo","ex","startWorkerTask","finishWorkerTask","pdfManagerReady","loadDocument","onFailure","evaluatorOptions","forceDataSchema","maxImageSize","disableFontFace","nativeImageDecoderSupport","ignoreErrors","isEvalSupported","getPdfManager","newPdfManager","stream","ref","Ref","catalog","page","pageIndex","start","VerbosityLevel","Date","intent","renderInteractiveForms","info","operatorListInfo","sink","featureId","UNSUPPORTED_FEATURES","normalizeWhitespace","combineTextItems","waitOn","cleanupPromise","setupDoc","initializeFromPort","maybePort","isMessagePort","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","NativeImageDecoding","NONE","DECODE","DISPLAY","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","smask","shadingPattern","font","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","Number","console","unreachable","base","other","url","absoluteUrl","baseUrl","_isValidProtocol","Object","enumerable","configurable","writable","BaseException","constructor","NullCharactersRegExp","str","assert","bytes","MAX_ARGUMENT_COUNT","String","strBuf","chunkEnd","arr","resultLength","pos","item","stringToBytes","itemLength","value","buffer8","view32","IsLittleEndianCached","shadow","isLittleEndian","IsEvalSupportedCached","rgbBuf","m1","m2","xt","p","m","yt","d","p1","Util","p2","r","p3","p4","v","transpose","a","b","c","first","second","sx","sy","rect","orderedX","rect1","rect2","orderedY","result","PDFStringTranslateTable","code","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","element","capability","isSettled","get","resolve","createObjectURL","digits","URL","blob","type","buffer","ii","b1","b2","b3","d1","d2","d3","d4","EOF","Name","nameCache","nameValue","Cmd","cmdCache","cmdValue","Dict","nonSerializable","assignXref","key2","key3","getArray","Array","getRaw","getKeys","set","has","forEach","callback","mergedDict","dictArray","dict","isDict","refCache","toString","key","gen","refValue","RefSet","put","remove","RefSetCache","putAlias","clear","isName","v1","v2","createValidAbsoluteUrl","onLoadedStream","ensureDoc","ensureXRef","ensureCatalog","getPage","fontFallback","cleanup","requestRange","requestLoadedStream","sendProgressiveData","updatePassword","Promise","obj","args","getMissingChunks","chunks","n","getBaseStreams","allChunksLoaded","onReceiveData","chunkSize","begin","end","beginChunk","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","numChunks","hasChunk","getByte","getUint16","b0","getInt32","getBytes","forceClamped","strEnd","subarray","peekByte","peekedByte","peekBytes","getByteRange","skip","reset","moveStart","makeSubStream","ChunkedStreamSubstream","missingChunks","subStream","sendRequest","rangeReader","promise","chunkData","requestAllChunks","_requestChunks","requestId","chunksNeeded","isEmptyObj","chunksToRequest","groupedChunksToRequest","groupedChunk","getStream","requestRanges","ranges","range","groupChunks","groupedChunks","prevChunk","onProgress","isProgressive","loadedRequests","requestIds","lastChunk","onError","getBeginChunk","getEndChunk","abort","lookup","initializer","stopWhenFound","LOOP_LIMIT","loopCount","values","ROMAN_NUMBER_MAP","lowerCase","number","romanBuf","romanStr","x","offset","ch","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","annotation","idCounters","createObjId","getDocId","_getInheritableProperty","_getBoundingBox","box","isNum","cropBox","isArrayEqual","view","rotate","getContentStream","content","xref","streams","isStream","loadResources","objectLoader","getOperatorList","contentStreamPromise","resourcesPromise","partialEvaluator","idFactory","fontCache","builtInCMapCache","options","pdfFunctionFactory","dataPromises","pageListPromise","opList","transparency","resources","operatorList","annotations","pageOpList","opListPromises","isAnnotationRenderable","extractTextContent","getAnnotationsData","annotationsData","parsedAnnotations","annotationRefs","annotationPromises","AnnotationFactory","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","limit","backwards","signatureLength","signature","scanBytes","scanLength","signatureEnd","j","isArrayBuffer","parse","version","fields","collection","linearization","Linearization","err","startXRef","find","step","startXRefLength","found","isWhiteSpace","parseInt","isNaN","checkHeader","MAX_PDF_VERSION_LENGTH","parseStartXRef","num","DocumentInfoValidators","Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped","docInfo","PDFFormatVersion","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","infoDict","stringToPDFString","isString","customValue","isBool","idArray","hash","calculateMD5","fingerprintBuf","hex","_getLinearizationPage","reason","checkFirstPage","dest","streamRef","isRef","suppressEncryption","subtype","metadata","stringToUTF8String","bytesToString","e","pagesObj","_readDocumentOutline","root","items","queue","parent","processed","blackColor","outlineDict","Catalog","destDict","resultObj","title","flags","color","count","rgbColor","ColorSpace","outlineItem","unsafeUrl","newWindow","bold","italic","permissions","_readPermissions","encrypt","dests","names","fetchDestination","getDestination","_readDests","_readPageLabels","pageLabels","style","prefix","numberTree","nums","currentLabel","currentIndex","labelDict","s","st","toRomanNumerals","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","jj","pageLayout","pageMode","ViewerPreferencesValidators","HideToolbar","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","prefs","prefValue","isValid","openAction","action","attachments","nameTree","fs","jsDict","js","appendIfJavaScriptDict","promises","translatedFonts","translatedFont","getPageDict","nodesToVisit","visitedNodes","pageKidsCountCache","currentPageIndex","currentNode","next","objId","kids","last","getPageIndex","isRefsEqual","node","parentRef","kidPromises","kid","params","actionType","actionName","addDefaultProtocolToUrl","urlDict","remoteDest","JSON","namedAction","jsAction","URL_OPEN_METHODS","regex","jsUrl","tryConvertUrlEncoding","XRef","streamTypes","fontTypes","setStartXRef","trailerDict","ids","fileId","processXRefTable","entryNum","streamPos","parser","parserBuf1","parserBuf2","isCmd","readXRefTable","tableState","entry","processXRefStream","streamParameters","byteWidths","entryRanges","readXRefStream","streamState","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","indexObjects","TAB","LF","CR","SPACE","PERCENT","LT","token","what","dataLength","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","readToken","skipUntil","uncompressed","startPos","endPos","contentLength","checkPos","tokenStr","objToken","xrefTagOffset","lexer","allowStreams","recoveryMode","rootDict","readXRef","startXRefParsedCache","getEntry","xrefEntry","fetchIfRef","fetch","cacheEntry","fetchUncompressed","obj1","obj2","obj3","fetchCompressed","tableOffset","entries","getCatalogObj","getAll","kidsOrEntries","MAX_LEVELS","l","limits","tmp","currentKey","mm","FileSpec","filename","pickPlatformItem","fileObj","ObjectLoader","dictKeys","rawValue","mayHaveChildren","keys","nodesToRevisit","pendingRequests","baseStreams","foundMissingData","addChildren","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","bytesLength","refill","shift","tryShift","getObj","cipherTransform","buf1","array","isEOF","findDefaultInlineStreamEnd","E","I","NUL","state","maybeEIPos","followingBytes","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","inlineStreamSkipEI","makeInlineImage","dictLength","filter","filterName","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","cacheKey","computeAdler32","_findStreamLength","SCAN_BLOCK_LENGTH","makeStream","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","lastByte","filterArray","paramsArray","makeFilter","xrefStreamStats","name","earlyChange","specialChars","knownCommands","nextChar","peekChar","getNumber","eNotation","divideBy","sign","baseValue","powerValue","powerValueSign","currentDigit","getString","numParen","done","charBuffered","getName","toHexDigit","previousCh","x2","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","knownCommandFound","possibleCommand","skipToNextLine","allowZeroValue","linDict","hints","hintsLength","index","hint","getInt","getHints","objectNumberFirst","endFirst","numPages","mainXRefEntriesOffset","pageFirst","Stream","arrayBuffer","StringStream","DecodeStream","emptyBuffer","maybeMinBufferLength","ensureBuffer","requested","size","buffer2","bufEnd","StreamsSequenceStream","bufferLength","newLength","FlateStream","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","codes","table","maxLen","codeLen","codeVal","lengths","len","val","code2","t","hdr","blockLen","check","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","repeatLength","code1","dist","k","PredictorStream","predictor","colors","bits","columns","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","kk","pixBytes","prevRow","up","upLeft","left","pa","pb","pc","DecryptStream","hasMoreData","decrypt","Ascii85Stream","TILDA_CHAR","Z_LOWER_CHAR","input","AsciiHexStream","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","RunLengthStream","repeatHeader","LZWStream","maxLzwDictionarySize","lzwState","codeLength","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","bitsCached","cachedData","blockSize","estimatedDecodedSize","decodedSizeDelta","prevCode","decodedLength","currentBufferLength","hasPrev","q","NullStream","CCITTFaxStream","K","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","CCITTFaxDecoder","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoblock","readNextChar","refLine","codingLine","refPos","blackPixels","code3","gotEOL","_addPixels","codingPos","a1","_addPixelsNeg","_findTableCode","limitValue","_getTwoDimCode","_getWhiteCode","_getBlackCode","_lookBits","_eatBits","Jbig2Stream","jbig2Image","globalsStream","globals","Jbig2Image","ContextCache","getContexts","id","DecodingContext","decoder","cache","contexts","contextCache","prev","bit","readBits","SegmentTypes","CodingTemplates","y","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodingContext","bitmap","OLD_PIXEL_MASK","row","row1","row2","contextLabel","pixel","decodeMMRBitmap","templateIndex","at","decodeBitmapTemplate0","useskip","template","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","minX","maxX","minY","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","width","pseudoPixelContext","ltp","sltp","i0","j0","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceBitmap","referenceHeight","huffman","newSymbols","currentHeight","symbolCodeLength","log2","symbols","tableB1","getStandardTable","symbolWidths","deltaHeight","huffmanTables","decodeInteger","currentWidth","totalWidth","firstSymbol","deltaWidth","numberOfInstances","decodeTextRegion","symbolId","decodeIAID","rdx","rdy","symbol","decodeRefinement","decodeBitmap","bitmapSize","huffmanInput","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","bitmapWidth","xMax","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","stripT","firstS","deltaT","deltaFirstS","currentS","currentT","stripSize","applyRefinement","refinement","inputSymbols","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","maxWidth","t2","deltaS","collectiveWidth","patterns","patternBitmap","patternWidth","combinationOperator","regionBitmap","numberOfPatterns","pattern0","patternHeight","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","gridOffsetX","gridOffsetY","regionRow","patternRow","regionY","regionX","segmentHeader","readUint32","segmentType","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","readUint16","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","genericRegionMmr","searchPatternLength","searchPattern","segments","readSegmentHeader","segment","header","height","RegionSegmentInformationFieldLength","dictionary","dictionaryFlags","atLength","readInt8","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","callbackName","visitor","processSegment","readSegments","processSegments","bitPacked","imgData","mask","SimpleSegmentVisitor","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","onSymbolDictionary","getSymbolDictionaryHuffmanTables","referredSegments","referredSymbols","decodeSymbolDictionary","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","decodePatternDictionary","onImmediateHalftoneRegion","decodeHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","customTables","decodeTablesSegment","lineData","line","HuffmanTreeNode","buildTree","decodeNode","htOffset","reader","lines","HuffmanTable","decode","assignPrefixCodes","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","prefixLength","rangeLength","standardTablesCache","Reader","readBit","numBits","byteAlign","runCodesTable","numberOfRepeats","repeatedLength","symbolIDTable","customIndex","tableFirstS","getCustomHuffmanTable","tableDeltaS","tableDeltaT","tableDeltaHeight","tableDeltaWidth","tableBitmapSize","tableAggregateInstances","eof","currentByte","endOfBlock","lookForEOFLimit","parseChunks","parseJbig2Chunks","parseJbig2","QeTable","qe","nmps","nlps","switchFlag","byteIn","bp","cx_index","cx_mps","qeTableIcx","qeIcx","JpegStream","jpegOptions","decodeTransform","colorTransform","decodeArr","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","forceRGB","isSourcePDF","dictHeight","validDimensions","foundSOF","scanLines","JpegImage","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","children","parseDNLMarker","mcusPerLine","frame","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","receive","decodeHuffman","component","diff","receiveAndExtend","rs","z","eobrun","successiveACState","offsetZ","successiveACNextValue","mcuRow","mcu","mcuCol","blockCol","getBlockBufferOffset","componentsLength","components","spectralStart","decodeFn","successivePrev","mcuExpected","mcuToRead","resetInterval","decodeBlock","h","decodeMcu","fileMarker","findNextFileMarker","marker","qt","blockData","p0","blockBufferOffset","p5","p6","p7","v0","v3","v4","v7","v5","v6","col","blocksPerLine","blocksPerColumn","computationBuffer","quantizeAndInverse","maxPos","newPos","currentPos","currentMarker","invalid","newMarker","dnlScanLines","mcusPerColumn","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","appData","readDataBlock","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","sofScanLines","componentsCount","maxH","maxV","componentId","qId","quantizationId","quantizationTable","prepareComponents","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","buildHuffmanTable","selectorsCount","componentIndex","tableSpec","spectralEnd","successiveApproximation","decodeScan","nextFileMarker","output","buildComponentData","scaleX","scaleY","_getLinearizedBlockData","numComponents","xScaleBlockOffset","mask3LSB","componentScaleX","componentScaleY","blocksPerScanline","lastComponentScaleX","_convertYccToRgb","Y","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","getData","rgbData","grayColor","JpxStream","jpxImage","tileCount","tileComponents","tileWidth","tileHeight","tileLeft","tileTop","src","srcPosition","dataPosition","imgRowSize","tileRowSize","JpxImage","SubbandsGainLog2","LL","LH","HL","HH","head","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","parseCodestream","context","doNotRecover","siz","precision","isSigned","XRsiz","YRsiz","calculateComponentDimensions","calculateTileGrids","qcd","sqcd","spqcdSize","scalarExpounded","spqcds","spqcd","qcc","cqcc","cod","scod","blockStyle","precinctsSizes","precinctsSize","PPx","PPy","unsupported","tile","initializeTile","buildPackets","parseTilePackets","transformComponents","tiles","numXtiles","numYtiles","tileComponent","codOrCoc","precinctWidth","dimensions","precinctHeight","isZeroRes","resolution","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","numprecinctshigh","numprecincts","xcb_","ycb_","codeblockWidth","codeblockHeight","cbx0","subband","cby0","cbx1","cby1","precinctParameters","codeblocks","precincts","codeblock","cbx","cby","tbx0","tby0","tbx1","tby1","pi","pj","precinctNumber","precinct","cbxMin","cbyMin","cbxMax","cbyMax","numcodeblockwide","numcodeblockhigh","precinctCodeblocks","subbands","tileIndex","layersCount","maxDecompositionLevelsCount","packet","createPacket","maxNumPrecinctsInLevel","maxNumPrecincts","resolutions","getPrecinctSizesInImageScale","precinctsIterationSizes","px","py","decompositionLevelsCount","sizeInImageScale","getPrecinctIndexIfExist","posX","pxIndex","precinctIterationSizes","posY","pyIndex","startPrecinctRowIndex","minWidth","minHeight","maxNumWide","maxNumHigh","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","scale","widthCurrentResolution","heightCurrentResolution","blocksDimensions","getBlocksDimensions","buildPrecincts","buildCodeblocks","bscale","resolutionSubbands","progressionOrder","bufferSize","skipNextBit","skipBytes","sopMarkerUsed","ephMarkerUsed","packetsIterator","alignToByte","skipMarkerIfEqual","layerNumber","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","inclusionTree","zeroBitPlanesTree","valueReady","codingpasses","readCodingpasses","codingpassesLog2","codedDataLength","packetItem","x0","y0","right","bottom","blockWidth","blockHeight","bitModel","currentCodingpassType","totalLength","dataItem","encodedData","magnitude","bitsDecoded","magnitudeCorrection","reversible","interleave","levelOffset","nb","coefficients","mb","codingStyleParameters","quantizationParameters","guardBits","segmentationSymbolUsed","subbandCoefficients","mu","epsilon","gainLog2","delta","copyCoefficients","top","resultImages","transformedTiles","transformTile","tile0","out","fourComponents","y0items","y1items","y2items","y3items","component0","alpha01","y1","y2","g","qcdOrQcc","TagTree","levelsLength","level","currentLevel","incrementValue","nextLevel","InclusionTree","stopValue","propagateValues","levelIndex","currentValue","BitModel","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","coefficentsMagnitude","zeroBitPlanes","setDecoder","setNeighborsSignificance","neighborsSignificance","column","runSignificancePropagationPass","coefficentsSign","processingFlags","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","significance1","sign1","sign0","contribution","horizontalContribution","decoded","runMagnitudeRefinementPass","width4","index0","indexNext","significance","runCleanupPass","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","checkSegmentationSymbol","Transform","ll","j1","j2","llWidth","llHeight","llItems","hl_lh_hh","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","u","IrreversibleTransform","alpha","beta","gamma","K_","current","ReversibleTransform","ARCFourCipher","keyLength","encryptBlock","tmp2","h0","h1","h2","h3","paddedLength","padded","w","f","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","high","low","not","add","lowAdd","highAdd","copyTo","assign","calculateSHA256","rotr","h4","h5","h6","h7","littleSigmaPrime","littleSigma","t1","sigmaPrime","sigma","maj","calculateSHA512","mode384","tmp1","tmp3","calculateSHA384","NullCipher","decryptBlock","_expandKey","_decrypt","s0","s1","s3","_encrypt","_decryptBlock2","sourceLength","iv","plain","outputLength","lastBlock","psLen","cipher","rcon","t3","t4","PDF17","array1","array2","checkOwnerPassword","hashData","ownerValidationSalt","compareByteArrays","checkUserPassword","getOwnerKey","ownerKeySalt","getUserKey","PDF20","arrayLength","userBytes","k1","concatArrays","remainder","calculatePDF20Hash","CipherTransform","createStream","decryptString","CipherTransformFactory","defaultPasswordBytes","passwordLength","revision","pdfAlgorithm","hashDataSize","ownerPassword","keyLengthInBytes","encryptionKey","checkData","derivedKey","userPassword","identityName","algorithm","cfDict","streamCryptoName","handlerDict","encryptMetadata","fileIdBytes","utf8StringToString","passwordBytes","prepareKeyData","uBytes","userValidationSalt","userKeySalt","ownerEncryption","userEncryption","perms","createEncryptionKey20","decodedPassword","decodeUserPassword","cf","cryptFilter","cfm","buildObjectKey","createCipherTransform","buildCipherConstructor","cipherConstructor","COMPONENTS","xRatio","w1","yRatio","newIndex","xScaled","w1Scanline","oldIndex","getRgb","rgb","getRgbItem","getRgbBuffer","getOutputLength","isPassthrough","isDefaultDecode","fillRgb","originalWidth","numComponentColors","needsResizing","originalHeight","allColors","bpc","colorMap","destPos","comps","rgbPos","resizeRgbImage","IR","whitePoint","blackPoint","matrix","basePatternCS","baseIndexedCS","hiVal","numComps","alt","tintFn","res","cs","colorSpaces","resCS","mode","altIR","altCS","tmpBuf","baseNumComps","usesZeroToOneRange","baseBuf","scaled","tinted","srcOffset","inputLength","outputDelta","lookupPos","destOffset","decodeMap","DeviceCmykCS","convertToRgb","CalGrayCS","A","AG","L","CalRGBCS","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","LMS","sourceWhitePoint","D65X","D65Y","D65Z","adjustToRange","decodeL","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","XYZ_In","matrixProduct","LMS_Flat","convertToFlat","LMS_D65","convertToD65","B","C","AGR","BGG","CGB","X","Z","XYZ","normalizeWhitePointToFlat","XYZ_Black","compensateBlackPoint","XYZ_D65","normalizeWhitePointToD65","SRGB","sRGBTransferFunction","XW","YW","ZW","XB","YB","ZB","LabCS","low2","Ls","as","bs","maxVal","M","N","fn_g","parameters","fieldType","quadPoints","quadPointsLists","annotationFlags","borderStyle","contents","hasAppearance","modificationDate","_hasFlag","_isViewable","_isPrintable","setContents","setModificationDate","setFlags","hasFlag","setRectangle","setColor","setBorderStyle","dictType","setAppearance","appearanceStates","normalAppearanceState","appearanceDict","bbox","getTransformMatrix","setWidth","maxHeight","setStyle","setDashArray","dashArray","allZeros","validNumber","setHorizontalCornerRadius","setVerticalCornerRadius","rawIRT","rt","setCreationDate","_constructFieldName","fieldName","loopDict","hasFieldFlag","alignment","maximumLength","renderForms","_processCheckBox","customAppearance","exportValueOptionsDict","exportValues","hasCorrectOptionCount","_processRadioButton","fieldParent","fieldParentValue","_processPushButton","option","isOptionArray","exportValue","displayValue","DEFAULT_ICON_SIZE","getQuadPoints","parentItem","parentSubtype","rawParent","parentFlags","rawVertices","originalInkLists","file","QueueOptimizer","pattern","iFirstPIMXO","iFirstSave","arg","argsArray","imageMask","fnArray","InitialState","addState","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","map","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","dataOffset","kind","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","handlePaintSolidColorImageMask","isSameImage","firstPIMXOArg0","firstTransformArg0","firstTransformArg3","iTransform","iPIMXO","transformArgs","positions","images","maskParams","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","iCurr","_optimize","match","iterate","push","flush","NullOptimizer","OperatorList","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","addOp","fn","addDependency","addDependencies","addOpList","getIR","transfers","PartialEvaluator","DefaultPartialEvaluatorOptions","readableStream","pump","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","TimeSlotManager","parsingArray","maybeBM","normalizeBlendMode","deferred","TILING_PATTERN","SHADING_PATTERN","clone","newOptions","newEvaluator","hasBlendModes","nodes","graphicStates","graphicStatesKeys","graphicState","bm","xObjects","xObjectsKeys","xObject","xResources","xobj","group","groupOptions","isolated","knockout","groupSubtype","colorSpace","isInline","forceDisableNativeImageDecoder","image","bitStrideLength","imgArray","imageIsFromDecodeStream","inverseDecode","imageCache","softMask","SMALL_IMAGE_DIMENSIONS","imageObj","NativeImageDecoder","nativeImageDecoder","imgPromise","nativeDecoder","handleSMask","smaskContent","smaskOptions","backdrop","transferObj","isPDFFunction","transferFn","transferMap","stateManager","handleTilingType","tilingOpList","resourcesArray","patternDict","patternResources","handleSetFont","fontArgs","fontName","translated","handleText","glyphs","isAddToPathSet","ensureStateFont","gStateObj","gStateKeys","gState","loadFont","fontRef","fontRes","partialMsg","errorFont","fontCapability","preEvaluatedFont","fontRefIsRef","fontID","descriptor","fontAliases","aliasFontRef","Font","translatedPromise","xrefFontStats","fontFile3","fontType","getFontType","buildPath","parsingText","lastIndex","opArgs","parseColorSpace","patternName","typeNum","shading","Pattern","initialState","self","xobjs","preprocessor","timeSlotManager","promiseBody","operation","resolveXObject","fontSize","combinedGlyphs","arrLength","arrItem","shadingRes","patternIR","dictName","extGState","closePendingRestoreOPS","getTextContent","seenStyles","WhitespaceRegexp","textContent","styles","textContentItem","initialized","vertical","lastAdvanceWidth","lastAdvanceHeight","textAdvanceScale","spaceWidth","fakeSpaceMin","fakeMultiSpaceMin","fakeMultiSpaceMax","textRunBreakAllowed","SPACE_FACTOR","MULTI_SPACE_FACTOR","MULTI_SPACE_FACTOR_MAX","skipEmptyXObjs","textState","fontFamily","ascent","descent","tsm","glyphHeight","trm","scaleLineX","scaleCtmX","textChunk","bidiResult","bidi","replaceWhitespace","dir","ensureTextContentItem","glyph","glyphWidth","glyphUnicode","NormalizedUnicodes","reverseIfRtl","charSpacing","wordSpacing","addFakeSpaces","tx","ty","w0","fakeSpaces","runBidiTransform","enqueueChunk","fontNameArg","fontSizeArg","flushTextContentItem","isSameTextLine","advance","buildTextContentItem","breakTextRun","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","enqueue","gStateFont","stop","extractDataStructures","toUnicode","baseDict","toUnicodePromise","properties","cidSystemInfo","registry","ordering","supplement","cidToGidMap","cidToGidBytes","differences","baseEncodingName","encoding","diffEncoding","getEncoding","isSymbolicFont","FontFlags","isNonsymbolicFont","_buildSimpleFontToUnicode","forceGlyphs","glyphName","glyphsUnicodeMap","codeStr","unicode","getUnicodeForGlyph","baseEncoding","buildToUnicode","ucs2CMapName","fetchBuiltInCMap","useCMap","cMap","cid","ucs2","ucs2CMap","readToUnicode","cmapObj","cmap","w2","readCidToGidMap","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","widths","vmetrics","defaultVMetrics","vmetric","firstChar","parseFloat","baseFontName","metrics","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getBaseFontMetrics","monospace","stdFontMap","lookupName","Metrics","glyphWidths","buildCharCodeToWidth","charCode","widthsByGlyphName","preEvaluateFont","composite","df","diffLength","diffBuf","diffEntry","lastChar","uint8array","translateFont","maxCharIndex","baseFont","fontNameStr","baseFontStr","fontFile","length1","length2","length3","loadedName","wideChars","fixedPitch","fontMatrix","xHeight","capHeight","italicAngle","isType3Font","cidEncoding","cMapPromise","accent","TranslatedFont","send","fallback","loadType3Data","type3Options","evaluator","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcKeys","charProcOperatorList","glyphStream","parentOperatorList","StateManager","old","TextState","setTextLineMatrix","translateTextMatrix","translateTextLineMatrix","calcTextLineMatrixAdvance","txDiff","tyDiff","denominator","calcRenderMatrix","carriageReturn","EvalState","EvaluatorPreprocessor","getOPMap","numArgs","variableArgs","MAX_INVALID_PATH_OPS","read","cmd","opSpec","argsLength","nonProcessedArgs","preprocessCommand","BUILT_IN_CMAPS","builtInCMap","addCodespaceRange","mapCidRange","dstLow","mapBfRange","mapBfRangeToArray","mapOne","contains","charCodeOf","getMap","readCharCode","codespaceRanges","nn","codespaceRange","BinaryCMapReader","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","readSigned","readHex","readHexNumber","stack","sp","readHexSigned","readString","char","sequence","dataSize","ucs2DataSize","subitemsCount","addHex","hexToInt","incHex","hexToStr","extend","process","CMapFactory","expectString","strToInt","dst","expectInt","parseWMode","parseCMapName","previous","embeddedUseCMap","parseCodespaceRange","parseBfChar","parseCidChar","parseBfRange","parseCidRange","extendCMap","useCodespaceRanges","cMapData","compressionType","parseCMap","createBuiltInCMap","parsedCMap","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","SEAC_ANALYSIS_ENABLED","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","builtInEncoding","Glyph","ToUnicodeMap","amend","IdentityToUnicodeMap","OpenTypeFileBuilder","maxPower2","searchRange","rangeShift","entrySize","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","toArray","sfnt","tables","tablesNames","numTables","tableOffsets","writeData","string32","writeInt16","searchParams","tableName","checksum","quad","writeInt32","addTable","tag","fallbackName","getFontFileType","cff","adjustWidths","ID","isTrueTypeFile","isTrueTypeCollectionFile","fileType","isOpenTypeFile","isType1File","isCFFFile","fileSubtype","toFontChar","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","originalCharCode","glyphId","charCodeToGlyphId","hasGlyph","fontCharCode","codeIndices","getRanges","string16","bmpLength","trailingRangesCount","segCount","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","format31012","header31012","os2","selection","usWinAscent","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","getUnicodeRangeFor","typoAscent","typoDescent","winAscent","winDescent","angle","proto","strings","stringsUnicode","strBufUnicode","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","mimetype","renderer","FontRendererFactory","exportData","fallbackToSystemFont","nonStdFontMap","isStandardFont","GlyphMapForStandardFonts","SupplementalGlyphMapForArialBlack","SupplementalGlyphMapForCalibri","isIdentityUnicode","buildToFontChar","unicodeCharCode","checkAndRepair","VALID_TABLES","readTableEntry","previousPosition","ttf","entrySelector","ttcTag","ttc","majorVersion","minorVersion","numFonts","offsetTable","readTrueTypeCollectionHeader","potentialHeader","readOpenTypeHeader","potentialTables","readTables","readNameTable","nameEntry","platformId","encodingId","mappings","hasShortCmap","canBreak","useTable","potentialTable","format","segIndex","offsetsCount","rangeOffset","offsetIndex","offsets","entryCount","numOfMetrics","numOfSidebearings","numGlyphs","numMissing","glyphProfile","sizeOfInstructions","sourceEnd","glyf","contoursCount","signedInt16","writeSignedInt16","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","flag","xLength","yLength","xyLength","repeat","glyphDataLength","destStart","int32","indexToLocFormat","int16","numGlyphsPlusOne","locaLength","itemSize","itemDecode","itemEncode","numGlyphsOut","dupFirstEntry","locaDataSize","locaData","loca","oldGlyfData","oldGlyfDataLength","newGlyfData","writeOffset","missingGlyphs","sanitizeGlyph","maxSizeOfInstructions","simpleGlyph","firstEntryLength","post","valid","glyphNames","glyphNameIndexes","customNames","stringLength","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","record","nameIndex","TTOpsStackDeltas","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","ttContext","inFDEF","ifLevel","inELSE","op","funcId","newStackLength","stackTop","stackDelta","foldTTTable","functionsDefined","functionsUsed","functionsStackDeltas","hintsValid","sanitizeTTProgram","checkInvalidFunctions","cvt","cvtData","ttcData","readTrueTypeCollectionData","isTrueType","isComposite","cffFile","maxFunctionDefs","maxZones","sanitizeTTPrograms","sanitizeMetrics","sanitizeHead","isGlyphLocationsLong","glyphsInfo","sanitizeGlyphLocations","metricsOverride","readPostScriptTable","createPostTable","isCidToGidMapEmpty","cmapTable","readCmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","StandardEncoding","standardGlyphName","recoverGlyphName","unicodeOrCharCode","MacRomanEncoding","glyphZeroId","newMapping","adjustMapping","createCmapTable","validateOS2Table","createOS2Table","compiler","createNameTable","namePrototype","builder","convert","adjustToUnicode","mapping","charCodes","seacs","charset","seacMap","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","getCharCodes","baseFontCharCode","createCharCode","accentFontCharCode","safeString16","charstrings","cffWidths","hmtx","charstring","possibleSpaceReplacements","charcode","charToGlyph","widthCode","isInFont","mapSpecialUnicodeValues","operatorListId","fontChar","charsToGlyphs","charsCache","charsCacheKey","chars","isSpace","ErrorFont","error","Type1Font","streamBytesLength","streamBytes","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","findBlock","suggestedLength","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","getHeaderBlock","headerBlockParser","eexecBlock","getEexecBlock","eexecBlockParser","type2Charstrings","subrs","getCharset","getGlyphMapping","type1FontGlyphMapping","hasGlyphId","getSeacs","getType2Charstrings","type1Charstrings","getType2Subrs","type1Subrs","type2Subrs","wrap","topDict","charsetArray","CFFStandardStrings","charStringsIndex","privateDict","field","subrIndex","CFFFont","charsets","MAX_SUBR_NESTING","NUM_STANDARD_CFF_STRINGS","CFFParser","CharstringValidationData","min","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","charStringsAndSeacs","charStrings","localSubrIndex","fdSelect","fdArray","parseHeader","hdrSize","offSize","parseDict","parseFloatOperand","operands","parseOperand","parseIndex","cffIndex","offsetSize","offsetStart","offsetEnd","parseNameIndex","parseStringIndex","createDict","cffDict","pair","parseCharString","stackSize","validationCommand","subrsIndex","subrNumber","parseCharStrings","callDepth","firstStackClearing","hasVStems","localSubrToUse","privateDictToUse","fdIndex","nominalWidth","emptyPrivateDictionary","parentDict","parsePrivateDict","privateOffset","privateDictEnd","dictData","subrsOffset","relativeOffset","parseCharsets","CFFCharsetPredefinedTypes","raw","parseEncoding","predefined","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","dataEnd","readSupplement","parseFDSelect","CFF","duplicateFirstGlyph","glyphZero","CFFHeader","CFFStrings","getSID","CFFIndex","CFFDict","setByKey","valueLength","setByName","hasName","getByName","removeByName","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","layout","CFFTopDict","CFFPrivateDict","ISO_ADOBE","EXPERT","EXPERT_SUBSET","CFFCharset","CFFEncoding","CFFFDSelect","getFDIndex","glyphIndex","CFFOffsetTracker","isTracking","track","setEntryLocation","offset1","offset2","offset3","offset4","CFFCompiler","compile","subDict","compiled","topDictTracker","fontDictTrackers","encodeNumber","encodeFloat","nibbles","encodeInteger","compileHeader","compileNameIndex","sanitizedName","compileTopDicts","dicts","fontDictTracker","fontDictData","trackers","compilePrivateDicts","privateDictTracker","privateDictData","compileDict","offsetTracker","compileStringIndex","compileGlobalSubrIndex","compileCharStrings","compileCharset","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileEncoding","compileFDSelect","lastFD","currentFD","numRanges","compileTypedArray","compileIndex","objects","lastOffset","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","ExpertEncoding","MacExpertEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getLookupTableFactory","getGlyphsUnicode","getDingbatsGlyphsUnicode","getStdFontMap","getNonStdFontMap","getSerifFonts","getSymbolsFonts","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","getSpecialPUASymbols","undefined","nameLen","hexStr","substring","toUpperCase","UnicodeRanges","isRTLRangeFor","getNormalizedUnicodes","charsLength","charCodeAt","numSubrs","getUshort","getLong","idOffset","groups","idDelta","gsubrs","isCFFCIDFont","cmds","numberOfContours","arg1","arg2","scale01","scale10","subglyph","compileGlyf","endPtsOfContours","instructionLength","numberOfPoints","points","startPoint","contour","quadraticCurveTo","stems","stackClean","xa","ya","xb","yb","bezierCurveTo","subrCode","getSubroutineBias","y3","achar","bchar","lookupCmap","compileCharString","NOOP","getPathJs","compileGlyph","compileGlyphImpl","hasBuiltPath","cffInfo","glyphNameMap","create","parseCmap","parseCff","parseGlyfTable","HINTING_ENABLED","Type1CharString","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","encoded","dy","wx","sbx","sby","num2","num1","flexArgs","executeCommand","stackLength","howManyArgs","Type1Parser","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","discardNumber","c1","c2","decrypted","digit1","isHexDigit","digit2","isBinary","decryptAscii","readNumberArray","readInt","readBoolean","getToken","isSpecial","readCharStrings","lenIV","extractFontProgram","privateData","program","blueArray","charString","charStringObject","lsb","extractFontHeader","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","getPattern","Shadings","t0","domainArr","extendStart","extendEnd","extendArr","x1","r1","r2","distance","fnObj","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","background","RadialAxial","coordsArr","shadingType","r0","csNumComps","MeshStreamReader","align","readFlag","readCoordinate","bitsPerCoordinate","xi","yi","readComponents","ci","coords","mesh","operators","ps","verticesLeft","coord","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","getB","lut","t_","buildB","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","verticesPerRow","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","tmp4","maxY","coordsPacked","xy","colorsPacked","figures","decodeContext","bitsPerFlag","colorFn","patchMesh","decodeType4Shading","decodeType5Shading","decodeType6Shading","decodeType7Shading","updateBounds","buildFigureFromPatch","packData","Mesh","Dummy","xstep","ystep","paintType","tilingType","baseTypes","arabicTypes","temp","isLTR","strLength","createBidiText","numBidi","charType","startLevel","levels","isOdd","sor","eor","lastType","findUnequal","before","after","setValues","isEven","highestLevel","lowestOddLevel","reverseValues","getMetrics","createFromArray","PDFFunction","CONSTRUCT_SAMPLED","CONSTRUCT_INTERPOLATED","CONSTRUCT_STICHED","CONSTRUCT_POSTSCRIPT","getSampleArray","sampleMul","strBytes","strIdx","typeFn","fromIR","parseArray","constructSampled","domain","toNumberArray","inputSize","outputSize","toMultiArray","bps","encode","samples","constructSampledFromIR","ymin","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","interpolate","size_i","e0","n0","n1","rj","constructInterpolated","constructInterpolatedFromIR","constructStiched","fnRefs","fns","bounds","constructStichedFromIR","dmin","dmax","rmin","rmax","constructPostScript","constructPostScriptFromIR","numOutputs","numInputs","MAX_CACHE_SIZE","cache_available","cachedValue","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","pop","copy","roll","PostScriptEvaluator","execute","counter","operator","PostScriptCompiler","AstNode","AstArgument","AstLiteral","AstBinaryOperation","AstMin","AstVariable","AstVariableDefinition","ExpressionBuilderVisitor","visitArgument","visitVariable","variable","visitLiteral","literal","visitBinaryOperation","visitVariableDefinition","definition","visitMin","max","instructions","lastRegister","buildAddOperation","buildMulOperation","buildSubOperation","ast1","ast2","tmpVar","buildMinOperation","statementBuilder","instruction","expr","nextToken","accept","expect","PostScriptTokenTypes","parseBlock","parseCondition","conditionLocation","jumpLocation","endOfTrue","LBRACE","RBRACE","NUMBER","OPERATOR","IF","IFELSE","PostScriptToken","opCache","opValue","SEED","MASK_HIGH","MASK_LOW","seed","update","blockCounts","tailLength","dataUint32","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","hex1","hex2","canDecode","PDFImage","addend","isMask","isIndexed","maskDict","imagePromise","handleImageData","smaskPromise","maskPromise","computedLength","haveFullData","decodeBuffer","decodeAddends","decodeCoefficients","decodeAndClamp","getComponents","bufferPos","rowComps","loop1End","loop2End","buf","remainingBits","fillOpacity","sw","sh","alphaBuf","resizeImageMask","opacity","imageOffset","maskOffset","rgbaBuf","undoPreblend","matte","matteRgb","matteR","matteG","matteB","createImageData","forceRGBA","drawWidth","drawHeight","newArray","imageLength","actualHeight","maybeUndoPreblend","fillGrayBuffer","getImageBytes","isNodeJS","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","event","callbackId","wrapReason","sourceName","targetName","comObj","on","ah","sendWithPromise","sendWithStream","streamId","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancel","cancelCapability","_createStreamSink","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","ready","success","_processStreamMessage","_postMessage","destroy","getFullReader","getRangeReader","cancelAllRequests","readers"],"mappings":"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","file":"pdf.worker.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn "," \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","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-unused-vars */\n\n\"use strict\";\n\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nconst pdfjsCoreWorker = require(\"./core/worker.js\");\n\nexports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n  getVerbosityLevel,\n  info,\n  InvalidPDFException,\n  MissingPDFException,\n  PasswordException,\n  setVerbosityLevel,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  UNSUPPORTED_FEATURES,\n  VerbosityLevel,\n  warn,\n} from \"../shared/util.js\";\nimport { clearPrimitiveCaches, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nvar WorkerTask = (function WorkerTaskClosure() {\n  function WorkerTask(name) {\n    this.name = name;\n    this.terminated = false;\n    this._capability = createPromiseCapability();\n  }\n\n  WorkerTask.prototype = {\n    get finished() {\n      return this._capability.promise;\n    },\n\n    finish() {\n      this._capability.resolve();\n    },\n\n    terminate() {\n      this.terminated = true;\n    },\n\n    ensureNotTerminated() {\n      if (this.terminated) {\n        throw new Error(\"Worker task was terminated\");\n      }\n    },\n  };\n\n  return WorkerTask;\n})();\n\nvar WorkerMessageHandler = {\n  setup(handler, port) {\n    var testMessageProcessed = false;\n    handler.on(\"test\", function wphSetupTest(data) {\n      if (testMessageProcessed) {\n        return; // we already processed 'test' message once\n      }\n      testMessageProcessed = true;\n\n      // check if Uint8Array can be sent to worker\n      if (!(data instanceof Uint8Array)) {\n        handler.send(\"test\", null);\n        return;\n      }\n      // making sure postMessage transfers are working\n      const supportTransfers = data[0] === 255;\n      handler.postMessageTransfers = supportTransfers;\n\n      handler.send(\"test\", { supportTransfers });\n    });\n\n    handler.on(\"configure\", function wphConfigure(data) {\n      setVerbosityLevel(data.verbosity);\n    });\n\n    handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n      return WorkerMessageHandler.createDocumentHandler(data, port);\n    });\n  },\n  createDocumentHandler(docParams, port) {\n    // This context is actually holds references on pdfManager and handler,\n    // until the latter is destroyed.\n    var pdfManager;\n    var terminated = false;\n    var cancelXHRs = null;\n    var WorkerTasks = [];\n    const verbosity = getVerbosityLevel();\n\n    const apiVersion = docParams.apiVersion;\n    const workerVersion =\n      typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n        ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n        : null;\n    if (apiVersion !== workerVersion) {\n      throw new Error(\n        `The API version \"${apiVersion}\" does not match ` +\n          `the Worker version \"${workerVersion}\".`\n      );\n    }\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n      // Fail early, and predictably, rather than having (some) fonts fail to\n      // load/render with slightly cryptic error messages in environments where\n      // the `Array.prototype` has been *incorrectly* extended.\n      //\n      // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n      //              `hasOwnProperty` checks all over the code-base.\n      const enumerableProperties = [];\n      for (const property in []) {\n        enumerableProperties.push(property);\n      }\n      if (enumerableProperties.length) {\n        throw new Error(\n          \"The `Array.prototype` contains unexpected enumerable properties: \" +\n            enumerableProperties.join(\", \") +\n            \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n        );\n      }\n    }\n\n    var docId = docParams.docId;\n    var docBaseUrl = docParams.docBaseUrl;\n    var workerHandlerName = docParams.docId + \"_worker\";\n    var handler = new MessageHandler(workerHandlerName, docId, port);\n\n    // Ensure that postMessage transfers are always correctly enabled/disabled,\n    // to prevent \"DataCloneError\" in browsers without transfers support.\n    handler.postMessageTransfers = docParams.postMessageTransfers;\n\n    function ensureNotTerminated() {\n      if (terminated) {\n        throw new Error(\"Worker was terminated\");\n      }\n    }\n\n    function startWorkerTask(task) {\n      WorkerTasks.push(task);\n    }\n\n    function finishWorkerTask(task) {\n      task.finish();\n      var i = WorkerTasks.indexOf(task);\n      WorkerTasks.splice(i, 1);\n    }\n\n    async function loadDocument(recoveryMode) {\n      await pdfManager.ensureDoc(\"checkHeader\");\n      await pdfManager.ensureDoc(\"parseStartXRef\");\n      await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n      if (!recoveryMode) {\n        // Check that at least the first page can be successfully loaded,\n        // since otherwise the XRef table is definitely not valid.\n        await pdfManager.ensureDoc(\"checkFirstPage\");\n      }\n\n      const [numPages, fingerprint] = await Promise.all([\n        pdfManager.ensureDoc(\"numPages\"),\n        pdfManager.ensureDoc(\"fingerprint\"),\n      ]);\n      return { numPages, fingerprint };\n    }\n\n    function getPdfManager(data, evaluatorOptions) {\n      var pdfManagerCapability = createPromiseCapability();\n      var pdfManager;\n\n      var source = data.source;\n      if (source.data) {\n        try {\n          pdfManager = new LocalPdfManager(\n            docId,\n            source.data,\n            source.password,\n            evaluatorOptions,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(pdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        return pdfManagerCapability.promise;\n      }\n\n      var pdfStream,\n        cachedChunks = [];\n      try {\n        pdfStream = new PDFWorkerStream(handler);\n      } catch (ex) {\n        pdfManagerCapability.reject(ex);\n        return pdfManagerCapability.promise;\n      }\n\n      var fullRequest = pdfStream.getFullReader();\n      fullRequest.headersReady\n        .then(function() {\n          if (!fullRequest.isRangeSupported) {\n            return;\n          }\n\n          // We don't need auto-fetch when streaming is enabled.\n          var disableAutoFetch =\n            source.disableAutoFetch || fullRequest.isStreamingSupported;\n          pdfManager = new NetworkPdfManager(\n            docId,\n            pdfStream,\n            {\n              msgHandler: handler,\n              password: source.password,\n              length: fullRequest.contentLength,\n              disableAutoFetch,\n              rangeChunkSize: source.rangeChunkSize,\n            },\n            evaluatorOptions,\n            docBaseUrl\n          );\n          // There may be a chance that `pdfManager` is not initialized\n          // for first few runs of `readchunk` block of code. Be sure\n          // to send all cached chunks, if any, to chunked_stream via\n          // pdf_manager.\n          for (let i = 0; i < cachedChunks.length; i++) {\n            pdfManager.sendProgressiveData(cachedChunks[i]);\n          }\n\n          cachedChunks = [];\n          pdfManagerCapability.resolve(pdfManager);\n          cancelXHRs = null;\n        })\n        .catch(function(reason) {\n          pdfManagerCapability.reject(reason);\n          cancelXHRs = null;\n        });\n\n      var loaded = 0;\n      var flushChunks = function() {\n        var pdfFile = arraysToBytes(cachedChunks);\n        if (source.length && pdfFile.length !== source.length) {\n          warn(\"reported HTTP length is different from actual\");\n        }\n        // the data is array, instantiating directly from it\n        try {\n          pdfManager = new LocalPdfManager(\n            docId,\n            pdfFile,\n            source.password,\n            evaluatorOptions,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(pdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        cachedChunks = [];\n      };\n      var readPromise = new Promise(function(resolve, reject) {\n        var readChunk = function(chunk) {\n          try {\n            ensureNotTerminated();\n            if (chunk.done) {\n              if (!pdfManager) {\n                flushChunks();\n              }\n              cancelXHRs = null;\n              return;\n            }\n\n            var data = chunk.value;\n            loaded += arrayByteLength(data);\n            if (!fullRequest.isStreamingSupported) {\n              handler.send(\"DocProgress\", {\n                loaded,\n                total: Math.max(loaded, fullRequest.contentLength || 0),\n              });\n            }\n\n            if (pdfManager) {\n              pdfManager.sendProgressiveData(data);\n            } else {\n              cachedChunks.push(data);\n            }\n\n            fullRequest.read().then(readChunk, reject);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        fullRequest.read().then(readChunk, reject);\n      });\n      readPromise.catch(function(e) {\n        pdfManagerCapability.reject(e);\n        cancelXHRs = null;\n      });\n\n      cancelXHRs = function(reason) {\n        pdfStream.cancelAllRequests(reason);\n      };\n\n      return pdfManagerCapability.promise;\n    }\n\n    function setupDoc(data) {\n      function onSuccess(doc) {\n        ensureNotTerminated();\n        handler.send(\"GetDoc\", { pdfInfo: doc });\n      }\n\n      function onFailure(ex) {\n        ensureNotTerminated();\n\n        if (ex instanceof PasswordException) {\n          var task = new WorkerTask(`PasswordException: response ${ex.code}`);\n          startWorkerTask(task);\n\n          handler\n            .sendWithPromise(\"PasswordRequest\", ex)\n            .then(function(data) {\n              finishWorkerTask(task);\n              pdfManager.updatePassword(data.password);\n              pdfManagerReady();\n            })\n            .catch(function() {\n              finishWorkerTask(task);\n              handler.send(\"DocException\", ex);\n            });\n        } else if (\n          ex instanceof InvalidPDFException ||\n          ex instanceof MissingPDFException ||\n          ex instanceof UnexpectedResponseException ||\n          ex instanceof UnknownErrorException\n        ) {\n          handler.send(\"DocException\", ex);\n        } else {\n          handler.send(\n            \"DocException\",\n            new UnknownErrorException(ex.message, ex.toString())\n          );\n        }\n      }\n\n      function pdfManagerReady() {\n        ensureNotTerminated();\n\n        loadDocument(false).then(\n          onSuccess,\n          function loadFailure(ex) {\n            ensureNotTerminated();\n\n            // Try again with recoveryMode == true\n            if (!(ex instanceof XRefParseException)) {\n              onFailure(ex);\n              return;\n            }\n            pdfManager.requestLoadedStream();\n            pdfManager.onLoadedStream().then(function() {\n              ensureNotTerminated();\n\n              loadDocument(true).then(onSuccess, onFailure);\n            });\n          },\n          onFailure\n        );\n      }\n\n      ensureNotTerminated();\n\n      var evaluatorOptions = {\n        forceDataSchema: data.disableCreateObjectURL,\n        maxImageSize: data.maxImageSize,\n        disableFontFace: data.disableFontFace,\n        nativeImageDecoderSupport: data.nativeImageDecoderSupport,\n        ignoreErrors: data.ignoreErrors,\n        isEvalSupported: data.isEvalSupported,\n      };\n\n      getPdfManager(data, evaluatorOptions)\n        .then(function(newPdfManager) {\n          if (terminated) {\n            // We were in a process of setting up the manager, but it got\n            // terminated in the middle.\n            newPdfManager.terminate(\n              new AbortException(\"Worker was terminated.\")\n            );\n            throw new Error(\"Worker was terminated\");\n          }\n          pdfManager = newPdfManager;\n\n          pdfManager.onLoadedStream().then(function(stream) {\n            handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n          });\n        })\n        .then(pdfManagerReady, onFailure);\n    }\n\n    handler.on(\"GetPage\", function wphSetupGetPage(data) {\n      return pdfManager.getPage(data.pageIndex).then(function(page) {\n        return Promise.all([\n          pdfManager.ensure(page, \"rotate\"),\n          pdfManager.ensure(page, \"ref\"),\n          pdfManager.ensure(page, \"userUnit\"),\n          pdfManager.ensure(page, \"view\"),\n        ]).then(function([rotate, ref, userUnit, view]) {\n          return {\n            rotate,\n            ref,\n            userUnit,\n            view,\n          };\n        });\n      });\n    });\n\n    handler.on(\"GetPageIndex\", function wphSetupGetPageIndex(data) {\n      var ref = Ref.get(data.ref.num, data.ref.gen);\n      var catalog = pdfManager.pdfDocument.catalog;\n      return catalog.getPageIndex(ref);\n    });\n\n    handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n      return pdfManager.ensureCatalog(\"destinations\");\n    });\n\n    handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n      return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n    });\n\n    handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n      return pdfManager.ensureCatalog(\"pageLabels\");\n    });\n\n    handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n      return pdfManager.ensureCatalog(\"pageLayout\");\n    });\n\n    handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n      return pdfManager.ensureCatalog(\"pageMode\");\n    });\n\n    handler.on(\"GetViewerPreferences\", function(data) {\n      return pdfManager.ensureCatalog(\"viewerPreferences\");\n    });\n\n    handler.on(\"GetOpenAction\", function(data) {\n      return pdfManager.ensureCatalog(\"openAction\");\n    });\n\n    handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n      return pdfManager.ensureCatalog(\"attachments\");\n    });\n\n    handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n      return pdfManager.ensureCatalog(\"javaScript\");\n    });\n\n    handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n      return pdfManager.ensureCatalog(\"documentOutline\");\n    });\n\n    handler.on(\"GetPermissions\", function(data) {\n      return pdfManager.ensureCatalog(\"permissions\");\n    });\n\n    handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n      return Promise.all([\n        pdfManager.ensureDoc(\"documentInfo\"),\n        pdfManager.ensureCatalog(\"metadata\"),\n      ]);\n    });\n\n    handler.on(\"GetData\", function wphSetupGetData(data) {\n      pdfManager.requestLoadedStream();\n      return pdfManager.onLoadedStream().then(function(stream) {\n        return stream.bytes;\n      });\n    });\n\n    handler.on(\"GetStats\", function wphSetupGetStats(data) {\n      return pdfManager.pdfDocument.xref.stats;\n    });\n\n    handler.on(\"GetAnnotations\", function({ pageIndex, intent }) {\n      return pdfManager.getPage(pageIndex).then(function(page) {\n        return page.getAnnotationsData(intent);\n      });\n    });\n\n    handler.on(\n      \"GetOperatorList\",\n      function wphSetupRenderPage(data, sink) {\n        var pageIndex = data.pageIndex;\n        pdfManager.getPage(pageIndex).then(function(page) {\n          var task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n          startWorkerTask(task);\n\n          // NOTE: Keep this condition in sync with the `info` helper function.\n          const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n          // Pre compile the pdf page and fetch the fonts/images.\n          page\n            .getOperatorList({\n              handler,\n              sink,\n              task,\n              intent: data.intent,\n              renderInteractiveForms: data.renderInteractiveForms,\n            })\n            .then(\n              function(operatorListInfo) {\n                finishWorkerTask(task);\n\n                if (start) {\n                  info(\n                    `page=${pageIndex + 1} - getOperatorList: time=` +\n                      `${Date.now() - start}ms, len=${operatorListInfo.length}`\n                  );\n                }\n                sink.close();\n              },\n              function(reason) {\n                finishWorkerTask(task);\n                if (task.terminated) {\n                  return; // ignoring errors from the terminated thread\n                }\n                // For compatibility with older behavior, generating unknown\n                // unsupported feature notification on errors.\n                handler.send(\"UnsupportedFeature\", {\n                  featureId: UNSUPPORTED_FEATURES.unknown,\n                });\n\n                sink.error(reason);\n\n                // TODO: Should `reason` be re-thrown here (currently that\n                //       casues \"Uncaught exception: ...\" messages in the\n                //       console)?\n              }\n            );\n        });\n      },\n      this\n    );\n\n    handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n      var pageIndex = data.pageIndex;\n      sink.onPull = function(desiredSize) {};\n      sink.onCancel = function(reason) {};\n\n      pdfManager.getPage(pageIndex).then(function(page) {\n        var task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n        startWorkerTask(task);\n\n        // NOTE: Keep this condition in sync with the `info` helper function.\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n        page\n          .extractTextContent({\n            handler,\n            task,\n            sink,\n            normalizeWhitespace: data.normalizeWhitespace,\n            combineTextItems: data.combineTextItems,\n          })\n          .then(\n            function() {\n              finishWorkerTask(task);\n\n              if (start) {\n                info(\n                  `page=${pageIndex + 1} - getTextContent: time=` +\n                    `${Date.now() - start}ms`\n                );\n              }\n              sink.close();\n            },\n            function(reason) {\n              finishWorkerTask(task);\n              if (task.terminated) {\n                return; // ignoring errors from the terminated thread\n              }\n              sink.error(reason);\n\n              // TODO: Should `reason` be re-thrown here (currently that casues\n              //       \"Uncaught exception: ...\" messages in the console)?\n            }\n          );\n      });\n    });\n\n    handler.on(\"FontFallback\", function(data) {\n      return pdfManager.fontFallback(data.id, handler);\n    });\n\n    handler.on(\"Cleanup\", function wphCleanup(data) {\n      return pdfManager.cleanup();\n    });\n\n    handler.on(\"Terminate\", function wphTerminate(data) {\n      terminated = true;\n\n      const waitOn = [];\n      if (pdfManager) {\n        pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n        const cleanupPromise = pdfManager.cleanup();\n        waitOn.push(cleanupPromise);\n\n        pdfManager = null;\n      } else {\n        clearPrimitiveCaches();\n      }\n      if (cancelXHRs) {\n        cancelXHRs(new AbortException(\"Worker was terminated.\"));\n      }\n\n      WorkerTasks.forEach(function(task) {\n        waitOn.push(task.finished);\n        task.terminate();\n      });\n\n      return Promise.all(waitOn).then(function() {\n        // Notice that even if we destroying handler, resolved response promise\n        // must be sent back.\n        handler.destroy();\n        handler = null;\n      });\n    });\n\n    handler.on(\"Ready\", function wphReady(data) {\n      setupDoc(docParams);\n      docParams = null; // we don't need docParams anymore -- saving memory.\n    });\n    return workerHandlerName;\n  },\n  initializeFromPort(port) {\n    var handler = new MessageHandler(\"worker\", \"main\", port);\n    WorkerMessageHandler.setup(handler, port);\n    handler.send(\"ready\", null);\n  },\n};\n\nfunction isMessagePort(maybePort) {\n  return (\n    typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n  );\n}\n\n// Worker thread (and not node.js)?\nif (\n  typeof window === \"undefined\" &&\n  !isNodeJS &&\n  typeof self !== \"undefined\" &&\n  isMessagePort(self)\n) {\n  WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerTask, WorkerMessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst NativeImageDecoding = {\n  NONE: \"none\",\n  DECODE: \"decode\",\n  DISPLAY: \"display\",\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n  MARKED: \"Marked\",\n  REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n  MARKED: \"Marked\",\n  UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n  ACCEPTED: \"Accepted\",\n  REJECTED: \"Rejected\",\n  CANCELLED: \"Cancelled\",\n  COMPLETED: \"Completed\",\n  NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst StreamType = {\n  UNKNOWN: \"UNKNOWN\",\n  FLATE: \"FLATE\",\n  LZW: \"LZW\",\n  DCT: \"DCT\",\n  JPX: \"JPX\",\n  JBIG: \"JBIG\",\n  A85: \"A85\",\n  AHX: \"AHX\",\n  CCF: \"CCF\",\n  RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n  UNKNOWN: \"UNKNOWN\",\n  TYPE1: \"TYPE1\",\n  TYPE1C: \"TYPE1C\",\n  CIDFONTTYPE0: \"CIDFONTTYPE0\",\n  CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n  TRUETYPE: \"TRUETYPE\",\n  CIDFONTTYPE2: \"CIDFONTTYPE2\",\n  TYPE3: \"TYPE3\",\n  OPENTYPE: \"OPENTYPE\",\n  TYPE0: \"TYPE0\",\n  MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n  unknown: \"unknown\",\n  forms: \"forms\",\n  javaScript: \"javaScript\",\n  smask: \"smask\",\n  shadingPattern: \"shadingPattern\",\n  font: \"font\",\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n  let base;\n  try {\n    base = new URL(baseUrl);\n    if (!base.origin || base.origin === \"null\") {\n      return false; // non-HTTP url\n    }\n  } catch (e) {\n    return false;\n  }\n\n  const other = new URL(otherUrl, base);\n  return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the whitelisted protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n  switch (url.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n  if (!url) {\n    return null;\n  }\n  try {\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {\n    /* `new URL()` will throw on incorrect data. */\n  }\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  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    this.message = message;\n    this.name = this.constructor.name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg);\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg);\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {}\n\nclass MissingPDFException extends BaseException {}\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg);\n    this.status = status;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {}\n\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  return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n  assert(\n    bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n    \"Invalid argument for bytesToString\"\n  );\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  assert(arr.byteLength !== undefined);\n  return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array} arr - the array of the arrays (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n  const length = arr.length;\n  // Shortcut: if first and only item is Uint8Array, return it.\n  if (length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n  let resultLength = 0;\n  for (let i = 0; i < length; i++) {\n    resultLength += arrayByteLength(arr[i]);\n  }\n  let pos = 0;\n  const data = new Uint8Array(resultLength);\n  for (let i = 0; i < length; i++) {\n    let item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === \"string\") {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    const itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\n\nfunction string32(value) {\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n  get value() {\n    return shadow(this, \"value\", isLittleEndian());\n  },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nconst IsEvalSupportedCached = {\n  get value() {\n    return shadow(this, \"value\", isEvalSupported());\n  },\n};\n\nconst rgbBuf = [\"rgb(\", 0, \",\", 0, \",\", 0, \")\"];\n\nclass Util {\n  // makeCssRgb() can be called thousands of times. Using ´rgbBuf` avoids\n  // creating many intermediate strings.\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  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = Util.applyTransform(r, m);\n    const p2 = Util.applyTransform(r.slice(2, 4), m);\n    const p3 = Util.applyTransform([r[0], r[3]], m);\n    const p4 = Util.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\n    ];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // Apply a generic 3d matrix M on a 3-vector v:\n  //   | a b c |   | X |\n  //   | d e f | x | Y |\n  //   | g h i |   | Z |\n  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n  // with v as [X,Y,Z]\n  static apply3dTransform(m, v) {\n    return [\n      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n      m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'false'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n\n    // Order points along the axes\n    const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n    const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n    const result = [];\n\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n\n    // X: first and second points belong to different rectangles?\n    if (\n      (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n      (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n    ) {\n      // Intersection must be between second and third points\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return null;\n    }\n\n    // Y: first and second points belong to different rectangles?\n    if (\n      (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n      (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n    ) {\n      // Intersection must be between second and third points\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return null;\n    }\n\n    return result;\n  }\n}\n\n// prettier-ignore\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n  0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n  0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n  0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n  const length = str.length,\n    strBuf = [];\n  if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n    // UTF16BE BOM\n    for (let i = 2; i < length; i += 2) {\n      strBuf.push(\n        String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n      );\n    }\n  } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n    // UTF16LE BOM\n    for (let i = 2; i < length; i += 2) {\n      strBuf.push(\n        String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n      );\n    }\n  } else {\n    for (let i = 0; i < length; ++i) {\n      const code = PDFStringTranslateTable[str.charCodeAt(i)];\n      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n    }\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n  for (const key in obj) {\n    return false;\n  }\n  return true;\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  return arr1.every(function(element, index) {\n    return element === arr2[index];\n  });\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n  const capability = Object.create(null);\n  let isSettled = false;\n\n  Object.defineProperty(capability, \"settled\", {\n    get() {\n      return isSettled;\n    },\n  });\n  capability.promise = new Promise(function(resolve, reject) {\n    capability.resolve = function(data) {\n      isSettled = true;\n      resolve(data);\n    };\n    capability.reject = function(reason) {\n      isSettled = true;\n      reject(reason);\n    };\n  });\n  return capability;\n}\n\nconst createObjectURL = (function createObjectURLClosure() {\n  // Blob/createObjectURL is not available, falling back to data schema.\n  const digits =\n    \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n  return function createObjectURL(data, contentType, forceDataSchema = false) {\n    if (!forceDataSchema && URL.createObjectURL) {\n      const blob = new Blob([data], { type: contentType });\n      return URL.createObjectURL(blob);\n    }\n\n    let buffer = `data:${contentType};base64,`;\n    for (let i = 0, ii = data.length; i < ii; i += 3) {\n      const b1 = data[i] & 0xff;\n      const b2 = data[i + 1] & 0xff;\n      const b3 = data[i + 2] & 0xff;\n      const d1 = b1 >> 2,\n        d2 = ((b1 & 3) << 4) | (b2 >> 4);\n      const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n      const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n    }\n    return buffer;\n  };\n})();\n\nexport {\n  BaseException,\n  FONT_IDENTITY_MATRIX,\n  IDENTITY_MATRIX,\n  OPS,\n  VerbosityLevel,\n  UNSUPPORTED_FEATURES,\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMarkedState,\n  AnnotationReplyType,\n  AnnotationReviewState,\n  AnnotationStateModelType,\n  AnnotationType,\n  FontType,\n  ImageKind,\n  CMapCompressionType,\n  AbortException,\n  InvalidPDFException,\n  MissingPDFException,\n  NativeImageDecoding,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  StreamType,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  Util,\n  FormatError,\n  arrayByteLength,\n  arraysToBytes,\n  assert,\n  bytesToString,\n  createPromiseCapability,\n  createObjectURL,\n  getVerbosityLevel,\n  info,\n  isArrayBuffer,\n  isArrayEqual,\n  isBool,\n  isEmptyObj,\n  isNum,\n  isString,\n  isSameOrigin,\n  createValidAbsoluteUrl,\n  IsLittleEndianCached,\n  IsEvalSupportedCached,\n  removeNullCharacters,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  utf8StringToString,\n  warn,\n  unreachable,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\n// Skip compatibility checks for modern builds (unless we're running the\n// unit-tests in Node.js/Travis) and if we already ran the module.\nif (\n  (typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!SKIP_BABEL || (LIB && TESTING)\")) &&\n  (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n  // Provides support for globalThis in legacy browsers.\n  // Support: IE11/Edge, Opera\n  if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n    // eslint-disable-next-line no-global-assign\n    globalThis = require(\"core-js/es/global-this\");\n  }\n  globalThis._pdfjsCompatibilityChecked = true;\n\n  const { isNodeJS } = require(\"./is_node.js\");\n\n  const hasDOM = typeof window === \"object\" && typeof document === \"object\";\n  const userAgent =\n    (typeof navigator !== \"undefined\" && navigator.userAgent) || \"\";\n  const isIE = /Trident/.test(userAgent);\n\n  // Support: Node.js\n  (function checkNodeBtoa() {\n    if (globalThis.btoa || !isNodeJS) {\n      return;\n    }\n    globalThis.btoa = function(chars) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(chars, \"binary\").toString(\"base64\");\n    };\n  })();\n\n  // Support: Node.js\n  (function checkNodeAtob() {\n    if (globalThis.atob || !isNodeJS) {\n      return;\n    }\n    globalThis.atob = function(input) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(input, \"base64\").toString(\"binary\");\n    };\n  })();\n\n  // Provides support for ChildNode.remove in legacy browsers.\n  // Support: IE.\n  (function checkChildNodeRemove() {\n    if (!hasDOM) {\n      return;\n    }\n    if (typeof Element.prototype.remove !== \"undefined\") {\n      return;\n    }\n    Element.prototype.remove = function() {\n      if (this.parentNode) {\n        // eslint-disable-next-line mozilla/avoid-removeChild\n        this.parentNode.removeChild(this);\n      }\n    };\n  })();\n\n  // Provides support for DOMTokenList.prototype.{add, remove}, with more than\n  // one parameter, in legacy browsers.\n  // Support: IE\n  (function checkDOMTokenListAddRemove() {\n    if (!hasDOM || isNodeJS) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    div.classList.add(\"testOne\", \"testTwo\");\n\n    if (\n      div.classList.contains(\"testOne\") === true &&\n      div.classList.contains(\"testTwo\") === true\n    ) {\n      return;\n    }\n    const OriginalDOMTokenListAdd = DOMTokenList.prototype.add;\n    const OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;\n\n    DOMTokenList.prototype.add = function(...tokens) {\n      for (const token of tokens) {\n        OriginalDOMTokenListAdd.call(this, token);\n      }\n    };\n    DOMTokenList.prototype.remove = function(...tokens) {\n      for (const token of tokens) {\n        OriginalDOMTokenListRemove.call(this, token);\n      }\n    };\n  })();\n\n  // Provides support for DOMTokenList.prototype.toggle, with the optional\n  // \"force\" parameter, in legacy browsers.\n  // Support: IE\n  (function checkDOMTokenListToggle() {\n    if (!hasDOM || isNodeJS) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    if (div.classList.toggle(\"test\", 0) === false) {\n      return;\n    }\n\n    DOMTokenList.prototype.toggle = function(token) {\n      const force =\n        arguments.length > 1 ? !!arguments[1] : !this.contains(token);\n      return this[force ? \"add\" : \"remove\"](token), force;\n    };\n  })();\n\n  // Provides support for window.history.{pushState, replaceState}, with the\n  // `url` parameter set to `undefined`, without breaking the document URL.\n  // Support: IE\n  (function checkWindowHistoryPushStateReplaceState() {\n    if (!hasDOM || !isIE) {\n      return;\n    }\n    const OriginalPushState = window.history.pushState;\n    const OriginalReplaceState = window.history.replaceState;\n\n    window.history.pushState = function(state, title, url) {\n      const args = url === undefined ? [state, title] : [state, title, url];\n      OriginalPushState.apply(this, args);\n    };\n    window.history.replaceState = function(state, title, url) {\n      const args = url === undefined ? [state, title] : [state, title, url];\n      OriginalReplaceState.apply(this, args);\n    };\n  })();\n\n  // Provides support for String.prototype.startsWith in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringStartsWith() {\n    if (String.prototype.startsWith) {\n      return;\n    }\n    require(\"core-js/es/string/starts-with.js\");\n  })();\n\n  // Provides support for String.prototype.endsWith in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringEndsWith() {\n    if (String.prototype.endsWith) {\n      return;\n    }\n    require(\"core-js/es/string/ends-with.js\");\n  })();\n\n  // Provides support for String.prototype.includes in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringIncludes() {\n    if (String.prototype.includes) {\n      return;\n    }\n    require(\"core-js/es/string/includes.js\");\n  })();\n\n  // Provides support for Array.prototype.includes in legacy browsers.\n  // Support: IE, Chrome<47\n  (function checkArrayIncludes() {\n    if (Array.prototype.includes) {\n      return;\n    }\n    require(\"core-js/es/array/includes.js\");\n  })();\n\n  // Provides support for Array.from in legacy browsers.\n  // Support: IE\n  (function checkArrayFrom() {\n    if (Array.from) {\n      return;\n    }\n    require(\"core-js/es/array/from.js\");\n  })();\n\n  // Provides support for Object.assign in legacy browsers.\n  // Support: IE\n  (function checkObjectAssign() {\n    if (Object.assign) {\n      return;\n    }\n    require(\"core-js/es/object/assign.js\");\n  })();\n\n  // Provides support for Math.log2 in legacy browsers.\n  // Support: IE, Chrome<38\n  (function checkMathLog2() {\n    if (Math.log2) {\n      return;\n    }\n    Math.log2 = require(\"core-js/es/math/log2.js\");\n  })();\n\n  // Provides support for Number.isNaN in legacy browsers.\n  // Support: IE.\n  (function checkNumberIsNaN() {\n    if (Number.isNaN) {\n      return;\n    }\n    Number.isNaN = require(\"core-js/es/number/is-nan.js\");\n  })();\n\n  // Provides support for Number.isInteger in legacy browsers.\n  // Support: IE, Chrome<34\n  (function checkNumberIsInteger() {\n    if (Number.isInteger) {\n      return;\n    }\n    Number.isInteger = require(\"core-js/es/number/is-integer.js\");\n  })();\n\n  // Support: IE, Safari<11, Chrome<63\n  (function checkPromise() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `Promise` shouldn't\n      // need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    if (globalThis.Promise && globalThis.Promise.allSettled) {\n      return;\n    }\n    globalThis.Promise = require(\"core-js/es/promise/index.js\");\n  })();\n\n  // Support: IE\n  (function checkURL() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders don't use the `URL` constructor, so it\n      // doesn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n      // The `URL` constructor is assumed to be available in the extension\n      // builds.\n      return;\n    }\n    globalThis.URL = require(\"core-js/web/url.js\");\n  })();\n\n  // Support: IE, Node.js\n  (function checkReadableStream() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `ReadableStream`\n      // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    let isReadableStreamSupported = false;\n\n    if (typeof ReadableStream !== \"undefined\") {\n      // MS Edge may say it has ReadableStream but they are not up to spec yet.\n      try {\n        // eslint-disable-next-line no-new\n        new ReadableStream({\n          start(controller) {\n            controller.close();\n          },\n        });\n        isReadableStreamSupported = true;\n      } catch (e) {\n        // The ReadableStream constructor cannot be used.\n      }\n    }\n    if (isReadableStreamSupported) {\n      return;\n    }\n    globalThis.ReadableStream = require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n  })();\n\n  // We want to support Map iteration, but it doesn't seem possible to easily\n  // test for that specifically; hence using a similarly unsupported property.\n  // Support: IE11\n  (function checkMapEntries() {\n    if (globalThis.Map && globalThis.Map.prototype.entries) {\n      return;\n    }\n    globalThis.Map = require(\"core-js/es/map/index.js\");\n  })();\n\n  // We want to support Set iteration, but it doesn't seem possible to easily\n  // test for that specifically; hence using a similarly unsupported property.\n  // Support: IE11\n  (function checkSetEntries() {\n    if (globalThis.Set && globalThis.Set.prototype.entries) {\n      return;\n    }\n    globalThis.Set = require(\"core-js/es/set/index.js\");\n  })();\n\n  // Support: IE<11, Safari<8, Chrome<36\n  (function checkWeakMap() {\n    if (globalThis.WeakMap) {\n      return;\n    }\n    globalThis.WeakMap = require(\"core-js/es/weak-map/index.js\");\n  })();\n\n  // Support: IE11\n  (function checkWeakSet() {\n    if (globalThis.WeakSet) {\n      return;\n    }\n    globalThis.WeakSet = require(\"core-js/es/weak-set/index.js\");\n  })();\n\n  // Provides support for String.codePointAt in legacy browsers.\n  // Support: IE11.\n  (function checkStringCodePointAt() {\n    if (String.prototype.codePointAt) {\n      return;\n    }\n    require(\"core-js/es/string/code-point-at.js\");\n  })();\n\n  // Provides support for String.fromCodePoint in legacy browsers.\n  // Support: IE11.\n  (function checkStringFromCodePoint() {\n    if (String.fromCodePoint) {\n      return;\n    }\n    String.fromCodePoint = require(\"core-js/es/string/from-code-point.js\");\n  })();\n\n  // Support: IE\n  (function checkSymbol() {\n    if (globalThis.Symbol) {\n      return;\n    }\n    require(\"core-js/es/symbol/index.js\");\n  })();\n\n  // Provides support for String.prototype.padStart in legacy browsers.\n  // Support: IE, Chrome<57\n  (function checkStringPadStart() {\n    if (String.prototype.padStart) {\n      return;\n    }\n    require(\"core-js/es/string/pad-start.js\");\n  })();\n\n  // Provides support for String.prototype.padEnd in legacy browsers.\n  // Support: IE, Chrome<57\n  (function checkStringPadEnd() {\n    if (String.prototype.padEnd) {\n      return;\n    }\n    require(\"core-js/es/string/pad-end.js\");\n  })();\n\n  // Provides support for Object.values in legacy browsers.\n  // Support: IE, Chrome<54\n  (function checkObjectValues() {\n    if (Object.values) {\n      return;\n    }\n    Object.values = require(\"core-js/es/object/values.js\");\n  })();\n}\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* uses XRef */\n\nimport { assert, unreachable } from \"../shared/util.js\";\n\nvar EOF = {};\n\nvar Name = (function NameClosure() {\n  let nameCache = Object.create(null);\n\n  function Name(name) {\n    this.name = name;\n  }\n\n  Name.prototype = {};\n\n  Name.get = function Name_get(name) {\n    var nameValue = nameCache[name];\n    // eslint-disable-next-line no-restricted-syntax\n    return nameValue ? nameValue : (nameCache[name] = new Name(name));\n  };\n\n  Name._clearCache = function() {\n    nameCache = Object.create(null);\n  };\n\n  return Name;\n})();\n\nvar Cmd = (function CmdClosure() {\n  let cmdCache = Object.create(null);\n\n  function Cmd(cmd) {\n    this.cmd = cmd;\n  }\n\n  Cmd.prototype = {};\n\n  Cmd.get = function Cmd_get(cmd) {\n    var cmdValue = cmdCache[cmd];\n    // eslint-disable-next-line no-restricted-syntax\n    return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n  };\n\n  Cmd._clearCache = function() {\n    cmdCache = Object.create(null);\n  };\n\n  return Cmd;\n})();\n\nvar Dict = (function DictClosure() {\n  var nonSerializable = function nonSerializableClosure() {\n    return nonSerializable; // creating closure on some variable\n  };\n\n  // xref is optional\n  function Dict(xref) {\n    // Map should only be used internally, use functions below to access.\n    this._map = Object.create(null);\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable; // disable cloning of the Dict\n  }\n\n  Dict.prototype = {\n    assignXref: function Dict_assignXref(newXref) {\n      this.xref = newXref;\n    },\n\n    // automatically dereferences Ref objects\n    get(key1, key2, key3) {\n      let value = this._map[key1];\n      if (value === undefined && key2 !== undefined) {\n        value = this._map[key2];\n        if (value === undefined && key3 !== undefined) {\n          value = this._map[key3];\n        }\n      }\n      if (value instanceof Ref && this.xref) {\n        return this.xref.fetch(value, this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // Same as get(), but returns a promise and uses fetchIfRefAsync().\n    async getAsync(key1, key2, key3) {\n      let value = this._map[key1];\n      if (value === undefined && key2 !== undefined) {\n        value = this._map[key2];\n        if (value === undefined && key3 !== undefined) {\n          value = this._map[key3];\n        }\n      }\n      if (value instanceof Ref && this.xref) {\n        return this.xref.fetchAsync(value, this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // Same as get(), but dereferences all elements if the result is an Array.\n    getArray(key1, key2, key3) {\n      let value = this.get(key1, key2, key3);\n      if (!Array.isArray(value) || !this.xref) {\n        return value;\n      }\n      value = value.slice(); // Ensure that we don't modify the Dict data.\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        if (!(value[i] instanceof Ref)) {\n          continue;\n        }\n        value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // no dereferencing\n    getRaw: function Dict_getRaw(key) {\n      return this._map[key];\n    },\n\n    getKeys: function Dict_getKeys() {\n      return Object.keys(this._map);\n    },\n\n    set: function Dict_set(key, value) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        value === undefined\n      ) {\n        unreachable('Dict.set: The \"value\" cannot be undefined.');\n      }\n      this._map[key] = value;\n    },\n\n    has: function Dict_has(key) {\n      return this._map[key] !== undefined;\n    },\n\n    forEach: function Dict_forEach(callback) {\n      for (var key in this._map) {\n        callback(key, this.get(key));\n      }\n    },\n  };\n\n  Dict.empty = new Dict(null);\n\n  Dict.merge = function(xref, dictArray) {\n    const mergedDict = new Dict(xref);\n\n    for (let i = 0, ii = dictArray.length; i < ii; i++) {\n      const dict = dictArray[i];\n      if (!isDict(dict)) {\n        continue;\n      }\n      for (const keyName in dict._map) {\n        if (mergedDict._map[keyName] !== undefined) {\n          continue;\n        }\n        mergedDict._map[keyName] = dict._map[keyName];\n      }\n    }\n    return mergedDict;\n  };\n\n  return Dict;\n})();\n\nvar Ref = (function RefClosure() {\n  let refCache = Object.create(null);\n\n  function Ref(num, gen) {\n    this.num = num;\n    this.gen = gen;\n  }\n\n  Ref.prototype = {\n    toString: function Ref_toString() {\n      // This function is hot, so we make the string as compact as possible.\n      // |this.gen| is almost always zero, so we treat that case specially.\n      if (this.gen === 0) {\n        return `${this.num}R`;\n      }\n      return `${this.num}R${this.gen}`;\n    },\n  };\n\n  Ref.get = function(num, gen) {\n    const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n    const refValue = refCache[key];\n    // eslint-disable-next-line no-restricted-syntax\n    return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n  };\n\n  Ref._clearCache = function() {\n    refCache = Object.create(null);\n  };\n\n  return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nvar RefSet = (function RefSetClosure() {\n  function RefSet() {\n    this.dict = Object.create(null);\n  }\n\n  RefSet.prototype = {\n    has: function RefSet_has(ref) {\n      return ref.toString() in this.dict;\n    },\n\n    put: function RefSet_put(ref) {\n      this.dict[ref.toString()] = true;\n    },\n\n    remove: function RefSet_remove(ref) {\n      delete this.dict[ref.toString()];\n    },\n  };\n\n  return RefSet;\n})();\n\nvar RefSetCache = (function RefSetCacheClosure() {\n  function RefSetCache() {\n    this.dict = Object.create(null);\n  }\n\n  RefSetCache.prototype = {\n    get: function RefSetCache_get(ref) {\n      return this.dict[ref.toString()];\n    },\n\n    has: function RefSetCache_has(ref) {\n      return ref.toString() in this.dict;\n    },\n\n    put: function RefSetCache_put(ref, obj) {\n      this.dict[ref.toString()] = obj;\n    },\n\n    putAlias: function RefSetCache_putAlias(ref, aliasRef) {\n      this.dict[ref.toString()] = this.get(aliasRef);\n    },\n\n    forEach: function RefSetCache_forEach(callback) {\n      for (const i in this.dict) {\n        callback(this.dict[i]);\n      }\n    },\n\n    clear: function RefSetCache_clear() {\n      this.dict = Object.create(null);\n    },\n  };\n\n  return RefSetCache;\n})();\n\nfunction isEOF(v) {\n  return v === EOF;\n}\n\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n  return (\n    v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n  );\n}\n\nfunction isRef(v) {\n  return v instanceof Ref;\n}\n\nfunction isRefsEqual(v1, v2) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      v1 instanceof Ref && v2 instanceof Ref,\n      \"isRefsEqual: Both parameters should be `Ref`s.\"\n    );\n  }\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction isStream(v) {\n  return typeof v === \"object\" && v !== null && v.getBytes !== undefined;\n}\n\nfunction clearPrimitiveCaches() {\n  Cmd._clearCache();\n  Name._clearCache();\n  Ref._clearCache();\n}\n\nexport {\n  EOF,\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n  isEOF,\n  isCmd,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  createValidAbsoluteUrl,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nclass BasePdfManager {\n  constructor() {\n    if (this.constructor === BasePdfManager) {\n      unreachable(\"Cannot initialize BasePdfManager.\");\n    }\n  }\n\n  get docId() {\n    return this._docId;\n  }\n\n  get password() {\n    return this._password;\n  }\n\n  get docBaseUrl() {\n    let docBaseUrl = null;\n    if (this._docBaseUrl) {\n      const absoluteUrl = createValidAbsoluteUrl(this._docBaseUrl);\n      if (absoluteUrl) {\n        docBaseUrl = absoluteUrl.href;\n      } else {\n        warn(`Invalid absolute docBaseUrl: \"${this._docBaseUrl}\".`);\n      }\n    }\n    return shadow(this, \"docBaseUrl\", docBaseUrl);\n  }\n\n  onLoadedStream() {\n    unreachable(\"Abstract method `onLoadedStream` called\");\n  }\n\n  ensureDoc(prop, args) {\n    return this.ensure(this.pdfDocument, prop, args);\n  }\n\n  ensureXRef(prop, args) {\n    return this.ensure(this.pdfDocument.xref, prop, args);\n  }\n\n  ensureCatalog(prop, args) {\n    return this.ensure(this.pdfDocument.catalog, prop, args);\n  }\n\n  getPage(pageIndex) {\n    return this.pdfDocument.getPage(pageIndex);\n  }\n\n  fontFallback(id, handler) {\n    return this.pdfDocument.fontFallback(id, handler);\n  }\n\n  cleanup() {\n    return this.pdfDocument.cleanup();\n  }\n\n  async ensure(obj, prop, args) {\n    unreachable(\"Abstract method `ensure` called\");\n  }\n\n  requestRange(begin, end) {\n    unreachable(\"Abstract method `requestRange` called\");\n  }\n\n  requestLoadedStream() {\n    unreachable(\"Abstract method `requestLoadedStream` called\");\n  }\n\n  sendProgressiveData(chunk) {\n    unreachable(\"Abstract method `sendProgressiveData` called\");\n  }\n\n  updatePassword(password) {\n    this._password = password;\n  }\n\n  terminate(reason) {\n    unreachable(\"Abstract method `terminate` called\");\n  }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n  constructor(docId, data, password, evaluatorOptions, docBaseUrl) {\n    super();\n\n    this._docId = docId;\n    this._password = password;\n    this._docBaseUrl = docBaseUrl;\n    this.evaluatorOptions = evaluatorOptions;\n\n    const stream = new Stream(data);\n    this.pdfDocument = new PDFDocument(this, stream);\n    this._loadedStreamPromise = Promise.resolve(stream);\n  }\n\n  async ensure(obj, prop, args) {\n    const value = obj[prop];\n    if (typeof value === \"function\") {\n      return value.apply(obj, args);\n    }\n    return value;\n  }\n\n  requestRange(begin, end) {\n    return Promise.resolve();\n  }\n\n  requestLoadedStream() {}\n\n  onLoadedStream() {\n    return this._loadedStreamPromise;\n  }\n\n  terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n  constructor(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {\n    super();\n\n    this._docId = docId;\n    this._password = args.password;\n    this._docBaseUrl = docBaseUrl;\n    this.msgHandler = args.msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n\n    this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n      msgHandler: args.msgHandler,\n      length: args.length,\n      disableAutoFetch: args.disableAutoFetch,\n      rangeChunkSize: args.rangeChunkSize,\n    });\n    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n  }\n\n  async ensure(obj, prop, args) {\n    try {\n      const value = obj[prop];\n      if (typeof value === \"function\") {\n        return value.apply(obj, args);\n      }\n      return value;\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.requestRange(ex.begin, ex.end);\n      return this.ensure(obj, prop, args);\n    }\n  }\n\n  requestRange(begin, end) {\n    return this.streamManager.requestRange(begin, end);\n  }\n\n  requestLoadedStream() {\n    this.streamManager.requestAllChunks();\n  }\n\n  sendProgressiveData(chunk) {\n    this.streamManager.onReceiveData({ chunk });\n  }\n\n  onLoadedStream() {\n    return this.streamManager.onLoadedStream();\n  }\n\n  terminate(reason) {\n    this.streamManager.abort(reason);\n  }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n  isEmptyObj,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nclass ChunkedStream {\n  constructor(length, chunkSize, manager) {\n    this.bytes = new Uint8Array(length);\n    this.start = 0;\n    this.pos = 0;\n    this.end = length;\n    this.chunkSize = chunkSize;\n    this.loadedChunks = [];\n    this.numChunksLoaded = 0;\n    this.numChunks = Math.ceil(length / chunkSize);\n    this.manager = manager;\n    this.progressiveDataLength = 0;\n    this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n  }\n\n  // If a particular stream does not implement one or more of these methods,\n  // an error should be thrown.\n  getMissingChunks() {\n    const chunks = [];\n    for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n      if (!this.loadedChunks[chunk]) {\n        chunks.push(chunk);\n      }\n    }\n    return chunks;\n  }\n\n  getBaseStreams() {\n    return [this];\n  }\n\n  allChunksLoaded() {\n    return this.numChunksLoaded === this.numChunks;\n  }\n\n  onReceiveData(begin, chunk) {\n    const chunkSize = this.chunkSize;\n    if (begin % chunkSize !== 0) {\n      throw new Error(`Bad begin offset: ${begin}`);\n    }\n\n    // Using `this.length` is inaccurate here since `this.start` can be moved\n    // (see the `moveStart` method).\n    const end = begin + chunk.byteLength;\n    if (end % chunkSize !== 0 && end !== this.bytes.length) {\n      throw new Error(`Bad end offset: ${end}`);\n    }\n\n    this.bytes.set(new Uint8Array(chunk), begin);\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      if (!this.loadedChunks[curChunk]) {\n        this.loadedChunks[curChunk] = true;\n        ++this.numChunksLoaded;\n      }\n    }\n  }\n\n  onReceiveProgressiveData(data) {\n    let position = this.progressiveDataLength;\n    const beginChunk = Math.floor(position / this.chunkSize);\n\n    this.bytes.set(new Uint8Array(data), position);\n    position += data.byteLength;\n    this.progressiveDataLength = position;\n    const endChunk =\n      position >= this.end\n        ? this.numChunks\n        : Math.floor(position / this.chunkSize);\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      if (!this.loadedChunks[curChunk]) {\n        this.loadedChunks[curChunk] = true;\n        ++this.numChunksLoaded;\n      }\n    }\n  }\n\n  ensureByte(pos) {\n    if (pos < this.progressiveDataLength) {\n      return;\n    }\n\n    const chunk = Math.floor(pos / this.chunkSize);\n    if (chunk === this.lastSuccessfulEnsureByteChunk) {\n      return;\n    }\n\n    if (!this.loadedChunks[chunk]) {\n      throw new MissingDataException(pos, pos + 1);\n    }\n    this.lastSuccessfulEnsureByteChunk = chunk;\n  }\n\n  ensureRange(begin, end) {\n    if (begin >= end) {\n      return;\n    }\n    if (end <= this.progressiveDataLength) {\n      return;\n    }\n\n    const chunkSize = this.chunkSize;\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      if (!this.loadedChunks[chunk]) {\n        throw new MissingDataException(begin, end);\n      }\n    }\n  }\n\n  nextEmptyChunk(beginChunk) {\n    const numChunks = this.numChunks;\n    for (let i = 0; i < numChunks; ++i) {\n      const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n      if (!this.loadedChunks[chunk]) {\n        return chunk;\n      }\n    }\n    return null;\n  }\n\n  hasChunk(chunk) {\n    return !!this.loadedChunks[chunk];\n  }\n\n  get length() {\n    return this.end - this.start;\n  }\n\n  get isEmpty() {\n    return this.length === 0;\n  }\n\n  getByte() {\n    const pos = this.pos;\n    if (pos >= this.end) {\n      return -1;\n    }\n    if (pos >= this.progressiveDataLength) {\n      this.ensureByte(pos);\n    }\n    return this.bytes[this.pos++];\n  }\n\n  getUint16() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    if (b0 === -1 || b1 === -1) {\n      return -1;\n    }\n    return (b0 << 8) + b1;\n  }\n\n  getInt32() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    const b2 = this.getByte();\n    const b3 = this.getByte();\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  // Returns subarray of original buffer, should only be read.\n  getBytes(length, forceClamped = false) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      if (strEnd > this.progressiveDataLength) {\n        this.ensureRange(pos, strEnd);\n      }\n      const subarray = bytes.subarray(pos, strEnd);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    }\n\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(pos, end);\n    }\n\n    this.pos = end;\n    const subarray = bytes.subarray(pos, end);\n    // `this.bytes` is always a `Uint8Array` here.\n    return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  peekByte() {\n    const peekedByte = this.getByte();\n    if (peekedByte !== -1) {\n      this.pos--;\n    }\n    return peekedByte;\n  }\n\n  peekBytes(length, forceClamped = false) {\n    const bytes = this.getBytes(length, forceClamped);\n    this.pos -= bytes.length;\n    return bytes;\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(begin, end);\n    }\n    return this.bytes.subarray(begin, end);\n  }\n\n  skip(n) {\n    if (!n) {\n      n = 1;\n    }\n    this.pos += n;\n  }\n\n  reset() {\n    this.pos = this.start;\n  }\n\n  moveStart() {\n    this.start = this.pos;\n  }\n\n  makeSubStream(start, length, dict) {\n    if (length) {\n      if (start + length > this.progressiveDataLength) {\n        this.ensureRange(start, start + length);\n      }\n    } else {\n      // When the `length` is undefined you do *not*, under any circumstances,\n      // want to fallback on calling `this.ensureRange(start, this.end)` since\n      // that would force the *entire* PDF file to be loaded, thus completely\n      // breaking the whole purpose of using streaming and/or range requests.\n      //\n      // However, not doing any checking here could very easily lead to wasted\n      // time/resources during e.g. parsing, since `MissingDataException`s will\n      // require data to be re-parsed, which we attempt to minimize by at least\n      // checking that the *beginning* of the data is available here.\n      if (start >= this.progressiveDataLength) {\n        this.ensureByte(start);\n      }\n    }\n\n    function ChunkedStreamSubstream() {}\n    ChunkedStreamSubstream.prototype = Object.create(this);\n    ChunkedStreamSubstream.prototype.getMissingChunks = function() {\n      const chunkSize = this.chunkSize;\n      const beginChunk = Math.floor(this.start / chunkSize);\n      const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n      const missingChunks = [];\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!this.loadedChunks[chunk]) {\n          missingChunks.push(chunk);\n        }\n      }\n      return missingChunks;\n    };\n    ChunkedStreamSubstream.prototype.allChunksLoaded = function() {\n      if (this.numChunksLoaded === this.numChunks) {\n        return true;\n      }\n      return this.getMissingChunks().length === 0;\n    };\n\n    const subStream = new ChunkedStreamSubstream();\n    subStream.pos = subStream.start = start;\n    subStream.end = start + length || this.end;\n    subStream.dict = dict;\n    return subStream;\n  }\n}\n\nclass ChunkedStreamManager {\n  constructor(pdfNetworkStream, args) {\n    this.length = args.length;\n    this.chunkSize = args.rangeChunkSize;\n    this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n    this.pdfNetworkStream = pdfNetworkStream;\n    this.disableAutoFetch = args.disableAutoFetch;\n    this.msgHandler = args.msgHandler;\n\n    this.currRequestId = 0;\n\n    this.chunksNeededByRequest = Object.create(null);\n    this.requestsByChunk = Object.create(null);\n    this.promisesByRequest = Object.create(null);\n    this.progressiveDataLength = 0;\n    this.aborted = false;\n\n    this._loadedStreamCapability = createPromiseCapability();\n  }\n\n  onLoadedStream() {\n    return this._loadedStreamCapability.promise;\n  }\n\n  sendRequest(begin, end) {\n    const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n    if (!rangeReader.isStreamingSupported) {\n      rangeReader.onProgress = this.onProgress.bind(this);\n    }\n\n    let chunks = [],\n      loaded = 0;\n    const promise = new Promise((resolve, reject) => {\n      const readChunk = chunk => {\n        try {\n          if (!chunk.done) {\n            const data = chunk.value;\n            chunks.push(data);\n            loaded += arrayByteLength(data);\n            if (rangeReader.isStreamingSupported) {\n              this.onProgress({ loaded });\n            }\n            rangeReader.read().then(readChunk, reject);\n            return;\n          }\n          const chunkData = arraysToBytes(chunks);\n          chunks = null;\n          resolve(chunkData);\n        } catch (e) {\n          reject(e);\n        }\n      };\n      rangeReader.read().then(readChunk, reject);\n    });\n    promise.then(data => {\n      if (this.aborted) {\n        return; // Ignoring any data after abort.\n      }\n      this.onReceiveData({ chunk: data, begin });\n    });\n    // TODO check errors\n  }\n\n  /**\n   * Get all the chunks that are not yet loaded and group them into\n   * contiguous ranges to load in as few requests as possible.\n   */\n  requestAllChunks() {\n    const missingChunks = this.stream.getMissingChunks();\n    this._requestChunks(missingChunks);\n    return this._loadedStreamCapability.promise;\n  }\n\n  _requestChunks(chunks) {\n    const requestId = this.currRequestId++;\n\n    const chunksNeeded = Object.create(null);\n    this.chunksNeededByRequest[requestId] = chunksNeeded;\n    for (const chunk of chunks) {\n      if (!this.stream.hasChunk(chunk)) {\n        chunksNeeded[chunk] = true;\n      }\n    }\n\n    if (isEmptyObj(chunksNeeded)) {\n      return Promise.resolve();\n    }\n\n    const capability = createPromiseCapability();\n    this.promisesByRequest[requestId] = capability;\n\n    const chunksToRequest = [];\n    for (let chunk in chunksNeeded) {\n      chunk = chunk | 0;\n      if (!(chunk in this.requestsByChunk)) {\n        this.requestsByChunk[chunk] = [];\n        chunksToRequest.push(chunk);\n      }\n      this.requestsByChunk[chunk].push(requestId);\n    }\n\n    if (!chunksToRequest.length) {\n      return capability.promise;\n    }\n\n    const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n    for (const groupedChunk of groupedChunksToRequest) {\n      const begin = groupedChunk.beginChunk * this.chunkSize;\n      const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n      this.sendRequest(begin, end);\n    }\n\n    return capability.promise;\n  }\n\n  getStream() {\n    return this.stream;\n  }\n\n  /**\n   * Loads any chunks in the requested range that are not yet loaded.\n   */\n  requestRange(begin, end) {\n    end = Math.min(end, this.length);\n\n    const beginChunk = this.getBeginChunk(begin);\n    const endChunk = this.getEndChunk(end);\n\n    const chunks = [];\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      chunks.push(chunk);\n    }\n    return this._requestChunks(chunks);\n  }\n\n  requestRanges(ranges = []) {\n    const chunksToRequest = [];\n    for (const range of ranges) {\n      const beginChunk = this.getBeginChunk(range.begin);\n      const endChunk = this.getEndChunk(range.end);\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!chunksToRequest.includes(chunk)) {\n          chunksToRequest.push(chunk);\n        }\n      }\n    }\n\n    chunksToRequest.sort(function(a, b) {\n      return a - b;\n    });\n    return this._requestChunks(chunksToRequest);\n  }\n\n  /**\n   * Groups a sorted array of chunks into as few contiguous larger\n   * chunks as possible.\n   */\n  groupChunks(chunks) {\n    const groupedChunks = [];\n    let beginChunk = -1;\n    let prevChunk = -1;\n\n    for (let i = 0, ii = chunks.length; i < ii; ++i) {\n      const chunk = chunks[i];\n      if (beginChunk < 0) {\n        beginChunk = chunk;\n      }\n\n      if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n        groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n        beginChunk = chunk;\n      }\n      if (i + 1 === chunks.length) {\n        groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n      }\n\n      prevChunk = chunk;\n    }\n    return groupedChunks;\n  }\n\n  onProgress(args) {\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n      total: this.length,\n    });\n  }\n\n  onReceiveData(args) {\n    const chunk = args.chunk;\n    const isProgressive = args.begin === undefined;\n    const begin = isProgressive ? this.progressiveDataLength : args.begin;\n    const end = begin + chunk.byteLength;\n\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    const endChunk =\n      end < this.length\n        ? Math.floor(end / this.chunkSize)\n        : Math.ceil(end / this.chunkSize);\n\n    if (isProgressive) {\n      this.stream.onReceiveProgressiveData(chunk);\n      this.progressiveDataLength = end;\n    } else {\n      this.stream.onReceiveData(begin, chunk);\n    }\n\n    if (this.stream.allChunksLoaded()) {\n      this._loadedStreamCapability.resolve(this.stream);\n    }\n\n    const loadedRequests = [];\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      // The server might return more chunks than requested.\n      const requestIds = this.requestsByChunk[chunk] || [];\n      delete this.requestsByChunk[chunk];\n\n      for (const requestId of requestIds) {\n        const chunksNeeded = this.chunksNeededByRequest[requestId];\n        if (chunk in chunksNeeded) {\n          delete chunksNeeded[chunk];\n        }\n\n        if (!isEmptyObj(chunksNeeded)) {\n          continue;\n        }\n        loadedRequests.push(requestId);\n      }\n    }\n\n    // If there are no pending requests, automatically fetch the next\n    // unfetched chunk of the PDF file.\n    if (!this.disableAutoFetch && isEmptyObj(this.requestsByChunk)) {\n      let nextEmptyChunk;\n      if (this.stream.numChunksLoaded === 1) {\n        // This is a special optimization so that after fetching the first\n        // chunk, rather than fetching the second chunk, we fetch the last\n        // chunk.\n        const lastChunk = this.stream.numChunks - 1;\n        if (!this.stream.hasChunk(lastChunk)) {\n          nextEmptyChunk = lastChunk;\n        }\n      } else {\n        nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n      }\n      if (Number.isInteger(nextEmptyChunk)) {\n        this._requestChunks([nextEmptyChunk]);\n      }\n    }\n\n    for (const requestId of loadedRequests) {\n      const capability = this.promisesByRequest[requestId];\n      delete this.promisesByRequest[requestId];\n      capability.resolve();\n    }\n\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize,\n      total: this.length,\n    });\n  }\n\n  onError(err) {\n    this._loadedStreamCapability.reject(err);\n  }\n\n  getBeginChunk(begin) {\n    return Math.floor(begin / this.chunkSize);\n  }\n\n  getEndChunk(end) {\n    return Math.floor((end - 1) / this.chunkSize) + 1;\n  }\n\n  abort(reason) {\n    this.aborted = true;\n    if (this.pdfNetworkStream) {\n      this.pdfNetworkStream.cancelAllRequests(reason);\n    }\n    for (const requestId in this.promisesByRequest) {\n      this.promisesByRequest[requestId].reject(reason);\n    }\n  }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\n\nfunction getLookupTableFactory(initializer) {\n  let lookup;\n  return function() {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\n\nclass MissingDataException extends BaseException {\n  constructor(begin, end) {\n    super(`Missing data [${begin}, ${end})`);\n    this.begin = begin;\n    this.end = end;\n  }\n}\n\nclass XRefEntryException extends BaseException {}\n\nclass XRefParseException extends BaseException {}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned. To avoid infinite loops, the traversal is stopped when\n * the loop limit is reached.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n *   array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n *   the key is found. If set to `false`, we always walk up the entire parent\n *   chain, for example to be able to find `\\Resources` placed on multiple\n *   levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n  dict,\n  key,\n  getArray = false,\n  stopWhenFound = true,\n}) {\n  const LOOP_LIMIT = 100;\n  let loopCount = 0;\n  let values;\n\n  while (dict) {\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      if (!values) {\n        values = [];\n      }\n      values.push(value);\n    }\n    if (++loopCount > LOOP_LIMIT) {\n      warn(`getInheritableProperty: maximum loop count exceeded for \"${key}\"`);\n      break;\n    }\n    dict = dict.get(\"Parent\");\n  }\n  return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n  \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n  \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n  \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n *   to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(\n    Number.isInteger(number) && number > 0,\n    \"The number should be a positive integer.\"\n  );\n  const romanBuf = [];\n  let pos;\n  // Thousands\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push(\"M\");\n  }\n  // Hundreds\n  pos = (number / 100) | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  // Tens\n  pos = (number / 10) | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  // Ones\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n\n  const romanStr = romanBuf.join(\"\");\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n  return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return (\n    ((data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]) >>>\n    0\n  );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\nexport {\n  getLookupTableFactory,\n  MissingDataException,\n  XRefEntryException,\n  XRefParseException,\n  getInheritableProperty,\n  toRomanNumerals,\n  log2,\n  readInt8,\n  readUint16,\n  readUint32,\n  isWhiteSpace,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isBool,\n  isNum,\n  isString,\n  OPS,\n  shadow,\n  stringToBytes,\n  stringToPDFString,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { Catalog, ObjectLoader, XRef } from \"./obj.js\";\nimport {\n  clearPrimitiveCaches,\n  Dict,\n  isDict,\n  isName,\n  isStream,\n  Ref,\n} from \"./primitives.js\";\nimport {\n  getInheritableProperty,\n  isWhiteSpace,\n  MissingDataException,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { NullStream, Stream, StreamsSequenceStream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Linearization } from \"./parser.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { PDFFunctionFactory } from \"./function.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nfunction isAnnotationRenderable(annotation, intent) {\n  return (\n    (intent === \"display\" && annotation.viewable) ||\n    (intent === \"print\" && annotation.printable)\n  );\n}\n\nclass Page {\n  constructor({\n    pdfManager,\n    xref,\n    pageIndex,\n    pageDict,\n    ref,\n    fontCache,\n    builtInCMapCache,\n    pdfFunctionFactory,\n  }) {\n    this.pdfManager = pdfManager;\n    this.pageIndex = pageIndex;\n    this.pageDict = pageDict;\n    this.xref = xref;\n    this.ref = ref;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.pdfFunctionFactory = pdfFunctionFactory;\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\n    this.resourcesPromise = null;\n\n    const idCounters = {\n      obj: 0,\n    };\n    this.idFactory = {\n      createObjId() {\n        return `p${pageIndex}_${++idCounters.obj}`;\n      },\n      getDocId() {\n        return `g_${pdfManager.docId}`;\n      },\n    };\n  }\n\n  /**\n   * @private\n   */\n  _getInheritableProperty(key, getArray = false) {\n    const value = getInheritableProperty({\n      dict: this.pageDict,\n      key,\n      getArray,\n      stopWhenFound: false,\n    });\n    if (!Array.isArray(value)) {\n      return value;\n    }\n    if (value.length === 1 || !isDict(value[0])) {\n      return value[0];\n    }\n    return Dict.merge(this.xref, value);\n  }\n\n  get content() {\n    return this.pageDict.get(\"Contents\");\n  }\n\n  get resources() {\n    // For robustness: The spec states that a \\Resources entry has to be\n    // present, but can be empty. Some documents still omit it; in this case\n    // we return an empty dictionary.\n    return shadow(\n      this,\n      \"resources\",\n      this._getInheritableProperty(\"Resources\") || Dict.empty\n    );\n  }\n\n  _getBoundingBox(name) {\n    const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n    if (Array.isArray(box) && box.length === 4) {\n      if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        return box;\n      }\n      warn(`Empty /${name} entry.`);\n    }\n    return null;\n  }\n\n  get mediaBox() {\n    // Reset invalid media box to letter size.\n    return shadow(\n      this,\n      \"mediaBox\",\n      this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n    );\n  }\n\n  get cropBox() {\n    // Reset invalid crop box to media box.\n    return shadow(\n      this,\n      \"cropBox\",\n      this._getBoundingBox(\"CropBox\") || this.mediaBox\n    );\n  }\n\n  get userUnit() {\n    let obj = this.pageDict.get(\"UserUnit\");\n    if (!isNum(obj) || obj <= 0) {\n      obj = DEFAULT_USER_UNIT;\n    }\n    return shadow(this, \"userUnit\", obj);\n  }\n\n  get view() {\n    // From the spec, 6th ed., p.963:\n    // \"The crop, bleed, trim, and art boxes should not ordinarily\n    // extend beyond the boundaries of the media box. If they do, they are\n    // effectively reduced to their intersection with the media box.\"\n    const { cropBox, mediaBox } = this;\n    let view;\n    if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n      view = mediaBox;\n    } else {\n      const box = Util.intersect(cropBox, mediaBox);\n      if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        view = box;\n      } else {\n        warn(\"Empty /CropBox and /MediaBox intersection.\");\n      }\n    }\n    return shadow(this, \"view\", view || mediaBox);\n  }\n\n  get rotate() {\n    let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n    // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n    if (rotate % 90 !== 0) {\n      rotate = 0;\n    } else if (rotate >= 360) {\n      rotate = rotate % 360;\n    } else if (rotate < 0) {\n      // The spec doesn't cover negatives. Assume it's counterclockwise\n      // rotation. The following is the other implementation of modulo.\n      rotate = ((rotate % 360) + 360) % 360;\n    }\n    return shadow(this, \"rotate\", rotate);\n  }\n\n  getContentStream() {\n    const content = this.content;\n    let stream;\n\n    if (Array.isArray(content)) {\n      // Fetching the individual streams from the array.\n      const xref = this.xref;\n      const streams = [];\n      for (const stream of content) {\n        streams.push(xref.fetchIfRef(stream));\n      }\n      stream = new StreamsSequenceStream(streams);\n    } else if (isStream(content)) {\n      stream = content;\n    } else {\n      // Replace non-existent page content with empty content.\n      stream = new NullStream();\n    }\n    return stream;\n  }\n\n  loadResources(keys) {\n    if (!this.resourcesPromise) {\n      // TODO: add async `_getInheritableProperty` and remove this.\n      this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n    }\n    return this.resourcesPromise.then(() => {\n      const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n      return objectLoader.load();\n    });\n  }\n\n  getOperatorList({ handler, sink, task, intent, renderInteractiveForms }) {\n    const contentStreamPromise = this.pdfManager.ensure(\n      this,\n      \"getContentStream\"\n    );\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"ColorSpace\",\n      \"Pattern\",\n      \"Shading\",\n      \"XObject\",\n      \"Font\",\n    ]);\n\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this.idFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      options: this.evaluatorOptions,\n      pdfFunctionFactory: this.pdfFunctionFactory,\n    });\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    const pageListPromise = dataPromises.then(([contentStream]) => {\n      const opList = new OperatorList(intent, sink, this.pageIndex);\n\n      handler.send(\"StartRenderPage\", {\n        transparency: partialEvaluator.hasBlendModes(this.resources),\n        pageIndex: this.pageIndex,\n        intent,\n      });\n\n      return partialEvaluator\n        .getOperatorList({\n          stream: contentStream,\n          task,\n          resources: this.resources,\n          operatorList: opList,\n        })\n        .then(function() {\n          return opList;\n        });\n    });\n\n    // Fetch the page's annotations and add their operator lists to the\n    // page's operator list to render them.\n    return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n      function([pageOpList, annotations]) {\n        if (annotations.length === 0) {\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        }\n\n        // Collect the operator list promises for the annotations. Each promise\n        // is resolved with the complete operator list for a single annotation.\n        const opListPromises = [];\n        for (const annotation of annotations) {\n          if (isAnnotationRenderable(annotation, intent)) {\n            opListPromises.push(\n              annotation.getOperatorList(\n                partialEvaluator,\n                task,\n                renderInteractiveForms\n              )\n            );\n          }\n        }\n\n        return Promise.all(opListPromises).then(function(opLists) {\n          pageOpList.addOp(OPS.beginAnnotations, []);\n          for (const opList of opLists) {\n            pageOpList.addOpList(opList);\n          }\n          pageOpList.addOp(OPS.endAnnotations, []);\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        });\n      }\n    );\n  }\n\n  extractTextContent({\n    handler,\n    task,\n    normalizeWhitespace,\n    sink,\n    combineTextItems,\n  }) {\n    const contentStreamPromise = this.pdfManager.ensure(\n      this,\n      \"getContentStream\"\n    );\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"XObject\",\n      \"Font\",\n    ]);\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    return dataPromises.then(([contentStream]) => {\n      const partialEvaluator = new PartialEvaluator({\n        xref: this.xref,\n        handler,\n        pageIndex: this.pageIndex,\n        idFactory: this.idFactory,\n        fontCache: this.fontCache,\n        builtInCMapCache: this.builtInCMapCache,\n        options: this.evaluatorOptions,\n        pdfFunctionFactory: this.pdfFunctionFactory,\n      });\n\n      return partialEvaluator.getTextContent({\n        stream: contentStream,\n        task,\n        resources: this.resources,\n        normalizeWhitespace,\n        combineTextItems,\n        sink,\n      });\n    });\n  }\n\n  getAnnotationsData(intent) {\n    return this._parsedAnnotations.then(function(annotations) {\n      const annotationsData = [];\n      for (let i = 0, ii = annotations.length; i < ii; i++) {\n        if (!intent || isAnnotationRenderable(annotations[i], intent)) {\n          annotationsData.push(annotations[i].data);\n        }\n      }\n      return annotationsData;\n    });\n  }\n\n  get annotations() {\n    return shadow(\n      this,\n      \"annotations\",\n      this._getInheritableProperty(\"Annots\") || []\n    );\n  }\n\n  get _parsedAnnotations() {\n    const parsedAnnotations = this.pdfManager\n      .ensure(this, \"annotations\")\n      .then(() => {\n        const annotationRefs = this.annotations;\n        const annotationPromises = [];\n        for (let i = 0, ii = annotationRefs.length; i < ii; i++) {\n          annotationPromises.push(\n            AnnotationFactory.create(\n              this.xref,\n              annotationRefs[i],\n              this.pdfManager,\n              this.idFactory\n            )\n          );\n        }\n\n        return Promise.all(annotationPromises).then(\n          function(annotations) {\n            return annotations.filter(function isDefined(annotation) {\n              return !!annotation;\n            });\n          },\n          function(reason) {\n            warn(`_parsedAnnotations: \"${reason}\".`);\n            return [];\n          }\n        );\n      });\n\n    return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n  }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\n// prettier-ignore\nconst STARTXREF_SIGNATURE = new Uint8Array([\n  0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n  \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.[0-9]$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(limit > 0, 'The \"limit\" must be a positive integer.');\n  }\n  const signatureLength = signature.length;\n\n  const scanBytes = stream.peekBytes(limit);\n  const scanLength = scanBytes.length - signatureLength;\n\n  if (scanLength <= 0) {\n    return false;\n  }\n  if (backwards) {\n    const signatureEnd = signatureLength - 1;\n\n    let pos = scanBytes.length - 1;\n    while (pos >= signatureEnd) {\n      let j = 0;\n      while (\n        j < signatureLength &&\n        scanBytes[pos - j] === signature[signatureEnd - j]\n      ) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos - signatureEnd;\n        return true;\n      }\n      pos--;\n    }\n  } else {\n    // forwards\n    let pos = 0;\n    while (pos <= scanLength) {\n      let j = 0;\n      while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos;\n        return true;\n      }\n      pos++;\n    }\n  }\n  return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n  constructor(pdfManager, arg) {\n    let stream;\n    if (isStream(arg)) {\n      stream = arg;\n    } else if (isArrayBuffer(arg)) {\n      stream = new Stream(arg);\n    } else {\n      throw new Error(\"PDFDocument: Unknown argument type\");\n    }\n    if (stream.length <= 0) {\n      throw new InvalidPDFException(\n        \"The PDF file is empty, i.e. its size is zero bytes.\"\n      );\n    }\n\n    this.pdfManager = pdfManager;\n    this.stream = stream;\n    this.xref = new XRef(stream, pdfManager);\n\n    this.pdfFunctionFactory = new PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: pdfManager.evaluatorOptions.isEvalSupported,\n    });\n    this._pagePromises = [];\n  }\n\n  parse(recoveryMode) {\n    this.setup(recoveryMode);\n\n    const version = this.catalog.catDict.get(\"Version\");\n    if (isName(version)) {\n      this.pdfFormatVersion = version.name;\n    }\n\n    // Check if AcroForms are present in the document.\n    try {\n      this.acroForm = this.catalog.catDict.get(\"AcroForm\");\n      if (this.acroForm) {\n        this.xfa = this.acroForm.get(\"XFA\");\n        const fields = this.acroForm.get(\"Fields\");\n        if ((!Array.isArray(fields) || fields.length === 0) && !this.xfa) {\n          this.acroForm = null; // No fields and no XFA, so it's not a form.\n        }\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch AcroForm entry; assuming no AcroForms are present\");\n      this.acroForm = null;\n    }\n\n    // Check if a Collection dictionary is present in the document.\n    try {\n      const collection = this.catalog.catDict.get(\"Collection\");\n      if (isDict(collection) && collection.getKeys().length > 0) {\n        this.collection = collection;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch Collection dictionary.\");\n    }\n  }\n\n  get linearization() {\n    let linearization = null;\n    try {\n      linearization = Linearization.create(this.stream);\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(err);\n    }\n    return shadow(this, \"linearization\", linearization);\n  }\n\n  get startXRef() {\n    const stream = this.stream;\n    let startXRef = 0;\n\n    if (this.linearization) {\n      // Find the end of the first object.\n      stream.reset();\n      if (find(stream, ENDOBJ_SIGNATURE)) {\n        startXRef = stream.pos + 6 - stream.start;\n      }\n    } else {\n      // Find `startxref` by checking backwards from the end of the file.\n      const step = 1024;\n      const startXRefLength = STARTXREF_SIGNATURE.length;\n      let found = false,\n        pos = stream.end;\n\n      while (!found && pos > 0) {\n        pos -= step - startXRefLength;\n        if (pos < 0) {\n          pos = 0;\n        }\n        stream.pos = pos;\n        found = find(stream, STARTXREF_SIGNATURE, step, true);\n      }\n\n      if (found) {\n        stream.skip(9);\n        let ch;\n        do {\n          ch = stream.getByte();\n        } while (isWhiteSpace(ch));\n        let str = \"\";\n        while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n          str += String.fromCharCode(ch);\n          ch = stream.getByte();\n        }\n        startXRef = parseInt(str, 10);\n        if (isNaN(startXRef)) {\n          startXRef = 0;\n        }\n      }\n    }\n    return shadow(this, \"startXRef\", startXRef);\n  }\n\n  // Find the header, get the PDF format version and setup the\n  // stream to start from the header.\n  checkHeader() {\n    const stream = this.stream;\n    stream.reset();\n\n    if (!find(stream, PDF_HEADER_SIGNATURE)) {\n      // May not be a PDF file, but don't throw an error and let\n      // parsing continue.\n      return;\n    }\n    stream.moveStart();\n\n    // Read the PDF format version.\n    const MAX_PDF_VERSION_LENGTH = 12;\n    let version = \"\",\n      ch;\n    while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n      if (version.length >= MAX_PDF_VERSION_LENGTH) {\n        break;\n      }\n      version += String.fromCharCode(ch);\n    }\n    if (!this.pdfFormatVersion) {\n      // Remove the \"%PDF-\" prefix.\n      this.pdfFormatVersion = version.substring(5);\n    }\n  }\n\n  parseStartXRef() {\n    this.xref.setStartXRef(this.startXRef);\n  }\n\n  setup(recoveryMode) {\n    this.xref.parse(recoveryMode);\n    this.catalog = new Catalog(this.pdfManager, this.xref);\n  }\n\n  get numPages() {\n    const linearization = this.linearization;\n    const num = linearization ? linearization.numPages : this.catalog.numPages;\n    return shadow(this, \"numPages\", num);\n  }\n\n  get documentInfo() {\n    const DocumentInfoValidators = {\n      Title: isString,\n      Author: isString,\n      Subject: isString,\n      Keywords: isString,\n      Creator: isString,\n      Producer: isString,\n      CreationDate: isString,\n      ModDate: isString,\n      Trapped: isName,\n    };\n\n    let version = this.pdfFormatVersion;\n    if (\n      typeof version !== \"string\" ||\n      !PDF_HEADER_VERSION_REGEXP.test(version)\n    ) {\n      warn(`Invalid PDF header version number: ${version}`);\n      version = null;\n    }\n\n    const docInfo = {\n      PDFFormatVersion: version,\n      IsLinearized: !!this.linearization,\n      IsAcroFormPresent: !!this.acroForm,\n      IsXFAPresent: !!this.xfa,\n      IsCollectionPresent: !!this.collection,\n    };\n\n    let infoDict;\n    try {\n      infoDict = this.xref.trailer.get(\"Info\");\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(\"The document information dictionary is invalid.\");\n    }\n\n    if (isDict(infoDict)) {\n      // Fill the document info with valid entries from the specification,\n      // as well as any existing well-formed custom entries.\n      for (const key of infoDict.getKeys()) {\n        const value = infoDict.get(key);\n\n        if (DocumentInfoValidators[key]) {\n          // Make sure the (standard) value conforms to the specification.\n          if (DocumentInfoValidators[key](value)) {\n            docInfo[key] =\n              typeof value !== \"string\" ? value : stringToPDFString(value);\n          } else {\n            info(`Bad value in document info for \"${key}\".`);\n          }\n        } else if (typeof key === \"string\") {\n          // For custom values, only accept white-listed types to prevent\n          // errors that would occur when trying to send non-serializable\n          // objects to the main-thread (for example `Dict` or `Stream`).\n          let customValue;\n          if (isString(value)) {\n            customValue = stringToPDFString(value);\n          } else if (isName(value) || isNum(value) || isBool(value)) {\n            customValue = value;\n          } else {\n            info(`Unsupported value in document info for (custom) \"${key}\".`);\n            continue;\n          }\n\n          if (!docInfo[\"Custom\"]) {\n            docInfo[\"Custom\"] = Object.create(null);\n          }\n          docInfo[\"Custom\"][key] = customValue;\n        }\n      }\n    }\n    return shadow(this, \"documentInfo\", docInfo);\n  }\n\n  get fingerprint() {\n    let hash;\n    const idArray = this.xref.trailer.get(\"ID\");\n    if (\n      Array.isArray(idArray) &&\n      idArray[0] &&\n      isString(idArray[0]) &&\n      idArray[0] !== EMPTY_FINGERPRINT\n    ) {\n      hash = stringToBytes(idArray[0]);\n    } else {\n      hash = calculateMD5(\n        this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n        0,\n        FINGERPRINT_FIRST_BYTES\n      );\n    }\n\n    const fingerprintBuf = [];\n    for (let i = 0, ii = hash.length; i < ii; i++) {\n      const hex = hash[i].toString(16);\n      fingerprintBuf.push(hex.padStart(2, \"0\"));\n    }\n    return shadow(this, \"fingerprint\", fingerprintBuf.join(\"\"));\n  }\n\n  _getLinearizationPage(pageIndex) {\n    const { catalog, linearization } = this;\n    assert(linearization && linearization.pageFirst === pageIndex);\n\n    const ref = Ref.get(linearization.objectNumberFirst, 0);\n    return this.xref\n      .fetchAsync(ref)\n      .then(obj => {\n        // Ensure that the object that was found is actually a Page dictionary.\n        if (\n          isDict(obj, \"Page\") ||\n          (isDict(obj) && !obj.has(\"Type\") && obj.has(\"Contents\"))\n        ) {\n          if (ref && !catalog.pageKidsCountCache.has(ref)) {\n            catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n          }\n          return [obj, ref];\n        }\n        throw new FormatError(\n          \"The Linearization dictionary doesn't point \" +\n            \"to a valid Page dictionary.\"\n        );\n      })\n      .catch(reason => {\n        info(reason);\n        return catalog.getPageDict(pageIndex);\n      });\n  }\n\n  getPage(pageIndex) {\n    if (this._pagePromises[pageIndex] !== undefined) {\n      return this._pagePromises[pageIndex];\n    }\n    const { catalog, linearization } = this;\n\n    const promise =\n      linearization && linearization.pageFirst === pageIndex\n        ? this._getLinearizationPage(pageIndex)\n        : catalog.getPageDict(pageIndex);\n\n    return (this._pagePromises[pageIndex] = promise.then(([pageDict, ref]) => {\n      return new Page({\n        pdfManager: this.pdfManager,\n        xref: this.xref,\n        pageIndex,\n        pageDict,\n        ref,\n        fontCache: catalog.fontCache,\n        builtInCMapCache: catalog.builtInCMapCache,\n        pdfFunctionFactory: this.pdfFunctionFactory,\n      });\n    }));\n  }\n\n  checkFirstPage() {\n    return this.getPage(0).catch(async reason => {\n      if (reason instanceof XRefEntryException) {\n        // Clear out the various caches to ensure that we haven't stored any\n        // inconsistent and/or incorrect state, since that could easily break\n        // subsequent `this.getPage` calls.\n        this._pagePromises.length = 0;\n        await this.cleanup();\n\n        throw new XRefParseException();\n      }\n    });\n  }\n\n  fontFallback(id, handler) {\n    return this.catalog.fontFallback(id, handler);\n  }\n\n  async cleanup() {\n    return this.catalog ? this.catalog.cleanup() : clearPrimitiveCaches();\n  }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  createPromiseCapability,\n  createValidAbsoluteUrl,\n  FormatError,\n  info,\n  InvalidPDFException,\n  isBool,\n  isNum,\n  isString,\n  PermissionFlag,\n  shadow,\n  stringToPDFString,\n  stringToUTF8String,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  isCmd,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\n  Ref,\n  RefSet,\n  RefSetCache,\n} from \"./primitives.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n  MissingDataException,\n  toRomanNumerals,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\nimport { ColorSpace } from \"./colorspace.js\";\n\nfunction fetchDestination(dest) {\n  return isDict(dest) ? dest.get(\"D\") : dest;\n}\n\nclass Catalog {\n  constructor(pdfManager, xref) {\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n\n    this.catDict = xref.getCatalogObj();\n    if (!isDict(this.catDict)) {\n      throw new FormatError(\"Catalog object is not a dictionary.\");\n    }\n\n    this.fontCache = new RefSetCache();\n    this.builtInCMapCache = new Map();\n    this.pageKidsCountCache = new RefSetCache();\n  }\n\n  get metadata() {\n    const streamRef = this.catDict.getRaw(\"Metadata\");\n    if (!isRef(streamRef)) {\n      return shadow(this, \"metadata\", null);\n    }\n\n    const suppressEncryption = !(\n      this.xref.encrypt && this.xref.encrypt.encryptMetadata\n    );\n    const stream = this.xref.fetch(streamRef, suppressEncryption);\n    let metadata;\n\n    if (stream && isDict(stream.dict)) {\n      const type = stream.dict.get(\"Type\");\n      const subtype = stream.dict.get(\"Subtype\");\n\n      if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n        // XXX: This should examine the charset the XML document defines,\n        // however since there are currently no real means to decode\n        // arbitrary charsets, let's just hope that the author of the PDF\n        // was reasonable enough to stick with the XML default charset,\n        // which is UTF-8.\n        try {\n          metadata = stringToUTF8String(bytesToString(stream.getBytes()));\n        } catch (e) {\n          if (e instanceof MissingDataException) {\n            throw e;\n          }\n          info(\"Skipping invalid metadata.\");\n        }\n      }\n    }\n    return shadow(this, \"metadata\", metadata);\n  }\n\n  get toplevelPagesDict() {\n    const pagesObj = this.catDict.get(\"Pages\");\n    if (!isDict(pagesObj)) {\n      throw new FormatError(\"Invalid top-level pages dictionary.\");\n    }\n    return shadow(this, \"toplevelPagesDict\", pagesObj);\n  }\n\n  get documentOutline() {\n    let obj = null;\n    try {\n      obj = this._readDocumentOutline();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read document outline.\");\n    }\n    return shadow(this, \"documentOutline\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readDocumentOutline() {\n    let obj = this.catDict.get(\"Outlines\");\n    if (!isDict(obj)) {\n      return null;\n    }\n    obj = obj.getRaw(\"First\");\n    if (!isRef(obj)) {\n      return null;\n    }\n\n    const root = { items: [] };\n    const queue = [{ obj, parent: root }];\n    // To avoid recursion, keep track of the already processed items.\n    const processed = new RefSet();\n    processed.put(obj);\n    const xref = this.xref,\n      blackColor = new Uint8ClampedArray(3);\n\n    while (queue.length > 0) {\n      const i = queue.shift();\n      const outlineDict = xref.fetchIfRef(i.obj);\n      if (outlineDict === null) {\n        continue;\n      }\n      if (!outlineDict.has(\"Title\")) {\n        throw new FormatError(\"Invalid outline item encountered.\");\n      }\n\n      const data = { url: null, dest: null };\n      Catalog.parseDestDictionary({\n        destDict: outlineDict,\n        resultObj: data,\n        docBaseUrl: this.pdfManager.docBaseUrl,\n      });\n      const title = outlineDict.get(\"Title\");\n      const flags = outlineDict.get(\"F\") || 0;\n      const color = outlineDict.getArray(\"C\");\n      const count = outlineDict.get(\"Count\");\n      let rgbColor = blackColor;\n\n      // We only need to parse the color when it's valid, and non-default.\n      if (\n        Array.isArray(color) &&\n        color.length === 3 &&\n        (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n      ) {\n        rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n      }\n\n      const outlineItem = {\n        dest: data.dest,\n        url: data.url,\n        unsafeUrl: data.unsafeUrl,\n        newWindow: data.newWindow,\n        title: stringToPDFString(title),\n        color: rgbColor,\n        count: Number.isInteger(count) ? count : undefined,\n        bold: !!(flags & 2),\n        italic: !!(flags & 1),\n        items: [],\n      };\n\n      i.parent.items.push(outlineItem);\n      obj = outlineDict.getRaw(\"First\");\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: outlineItem });\n        processed.put(obj);\n      }\n      obj = outlineDict.getRaw(\"Next\");\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: i.parent });\n        processed.put(obj);\n      }\n    }\n    return root.items.length > 0 ? root.items : null;\n  }\n\n  get permissions() {\n    let permissions = null;\n    try {\n      permissions = this._readPermissions();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read permissions.\");\n    }\n    return shadow(this, \"permissions\", permissions);\n  }\n\n  /**\n   * @private\n   */\n  _readPermissions() {\n    const encrypt = this.xref.trailer.get(\"Encrypt\");\n    if (!isDict(encrypt)) {\n      return null;\n    }\n\n    let flags = encrypt.get(\"P\");\n    if (!isNum(flags)) {\n      return null;\n    }\n\n    // PDF integer objects are represented internally in signed 2's complement\n    // form. Therefore, convert the signed decimal integer to a signed 2's\n    // complement binary integer so we can use regular bitwise operations on it.\n    flags += 2 ** 32;\n\n    const permissions = [];\n    for (const key in PermissionFlag) {\n      const value = PermissionFlag[key];\n      if (flags & value) {\n        permissions.push(value);\n      }\n    }\n    return permissions;\n  }\n\n  get numPages() {\n    const obj = this.toplevelPagesDict.get(\"Count\");\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\n        \"Page count in top-level pages dictionary is not an integer.\"\n      );\n    }\n    return shadow(this, \"numPages\", obj);\n  }\n\n  get destinations() {\n    const obj = this._readDests(),\n      dests = Object.create(null);\n    if (obj instanceof NameTree) {\n      const names = obj.getAll();\n      for (const name in names) {\n        dests[name] = fetchDestination(names[name]);\n      }\n    } else if (obj instanceof Dict) {\n      obj.forEach(function(key, value) {\n        if (value) {\n          dests[key] = fetchDestination(value);\n        }\n      });\n    }\n    return shadow(this, \"destinations\", dests);\n  }\n\n  getDestination(destinationId) {\n    const obj = this._readDests();\n    if (obj instanceof NameTree || obj instanceof Dict) {\n      return fetchDestination(obj.get(destinationId) || null);\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _readDests() {\n    const obj = this.catDict.get(\"Names\");\n    if (obj && obj.has(\"Dests\")) {\n      return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n    } else if (this.catDict.has(\"Dests\")) {\n      // Simple destination dictionary.\n      return this.catDict.get(\"Dests\");\n    }\n    return undefined;\n  }\n\n  get pageLabels() {\n    let obj = null;\n    try {\n      obj = this._readPageLabels();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read page labels.\");\n    }\n    return shadow(this, \"pageLabels\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readPageLabels() {\n    const obj = this.catDict.getRaw(\"PageLabels\");\n    if (!obj) {\n      return null;\n    }\n\n    const pageLabels = new Array(this.numPages);\n    let style = null,\n      prefix = \"\";\n\n    const numberTree = new NumberTree(obj, this.xref);\n    const nums = numberTree.getAll();\n    let currentLabel = \"\",\n      currentIndex = 1;\n\n    for (let i = 0, ii = this.numPages; i < ii; i++) {\n      if (i in nums) {\n        const labelDict = nums[i];\n        if (!isDict(labelDict)) {\n          throw new FormatError(\"PageLabel is not a dictionary.\");\n        }\n\n        if (\n          labelDict.has(\"Type\") &&\n          !isName(labelDict.get(\"Type\"), \"PageLabel\")\n        ) {\n          throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n        }\n\n        if (labelDict.has(\"S\")) {\n          const s = labelDict.get(\"S\");\n          if (!isName(s)) {\n            throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n          }\n          style = s.name;\n        } else {\n          style = null;\n        }\n\n        if (labelDict.has(\"P\")) {\n          const p = labelDict.get(\"P\");\n          if (!isString(p)) {\n            throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n          }\n          prefix = stringToPDFString(p);\n        } else {\n          prefix = \"\";\n        }\n\n        if (labelDict.has(\"St\")) {\n          const st = labelDict.get(\"St\");\n          if (!(Number.isInteger(st) && st >= 1)) {\n            throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n          }\n          currentIndex = st;\n        } else {\n          currentIndex = 1;\n        }\n      }\n\n      switch (style) {\n        case \"D\":\n          currentLabel = currentIndex;\n          break;\n        case \"R\":\n        case \"r\":\n          currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n          break;\n        case \"A\":\n        case \"a\":\n          const LIMIT = 26; // Use only the characters A-Z, or a-z.\n          const A_UPPER_CASE = 0x41,\n            A_LOWER_CASE = 0x61;\n\n          const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n          const letterIndex = currentIndex - 1;\n          const character = String.fromCharCode(\n            baseCharCode + (letterIndex % LIMIT)\n          );\n          const charBuf = [];\n          for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n            charBuf.push(character);\n          }\n          currentLabel = charBuf.join(\"\");\n          break;\n        default:\n          if (style) {\n            throw new FormatError(\n              `Invalid style \"${style}\" in PageLabel dictionary.`\n            );\n          }\n          currentLabel = \"\";\n      }\n\n      pageLabels[i] = prefix + currentLabel;\n      currentIndex++;\n    }\n    return pageLabels;\n  }\n\n  get pageLayout() {\n    const obj = this.catDict.get(\"PageLayout\");\n    // Purposely use a non-standard default value, rather than 'SinglePage', to\n    // allow differentiating between `undefined` and /SinglePage since that does\n    // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n    let pageLayout = \"\";\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case \"SinglePage\":\n        case \"OneColumn\":\n        case \"TwoColumnLeft\":\n        case \"TwoColumnRight\":\n        case \"TwoPageLeft\":\n        case \"TwoPageRight\":\n          pageLayout = obj.name;\n      }\n    }\n    return shadow(this, \"pageLayout\", pageLayout);\n  }\n\n  get pageMode() {\n    const obj = this.catDict.get(\"PageMode\");\n    let pageMode = \"UseNone\"; // Default value.\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case \"UseNone\":\n        case \"UseOutlines\":\n        case \"UseThumbs\":\n        case \"FullScreen\":\n        case \"UseOC\":\n        case \"UseAttachments\":\n          pageMode = obj.name;\n      }\n    }\n    return shadow(this, \"pageMode\", pageMode);\n  }\n\n  get viewerPreferences() {\n    const ViewerPreferencesValidators = {\n      HideToolbar: isBool,\n      HideMenubar: isBool,\n      HideWindowUI: isBool,\n      FitWindow: isBool,\n      CenterWindow: isBool,\n      DisplayDocTitle: isBool,\n      NonFullScreenPageMode: isName,\n      Direction: isName,\n      ViewArea: isName,\n      ViewClip: isName,\n      PrintArea: isName,\n      PrintClip: isName,\n      PrintScaling: isName,\n      Duplex: isName,\n      PickTrayByPDFSize: isBool,\n      PrintPageRange: Array.isArray,\n      NumCopies: Number.isInteger,\n    };\n\n    const obj = this.catDict.get(\"ViewerPreferences\");\n    const prefs = Object.create(null);\n\n    if (isDict(obj)) {\n      for (const key in ViewerPreferencesValidators) {\n        if (!obj.has(key)) {\n          continue;\n        }\n        const value = obj.get(key);\n        // Make sure the (standard) value conforms to the specification.\n        if (!ViewerPreferencesValidators[key](value)) {\n          info(`Bad value in ViewerPreferences for \"${key}\".`);\n          continue;\n        }\n        let prefValue;\n\n        switch (key) {\n          case \"NonFullScreenPageMode\":\n            switch (value.name) {\n              case \"UseNone\":\n              case \"UseOutlines\":\n              case \"UseThumbs\":\n              case \"UseOC\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"UseNone\";\n            }\n            break;\n          case \"Direction\":\n            switch (value.name) {\n              case \"L2R\":\n              case \"R2L\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"L2R\";\n            }\n            break;\n          case \"ViewArea\":\n          case \"ViewClip\":\n          case \"PrintArea\":\n          case \"PrintClip\":\n            switch (value.name) {\n              case \"MediaBox\":\n              case \"CropBox\":\n              case \"BleedBox\":\n              case \"TrimBox\":\n              case \"ArtBox\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"CropBox\";\n            }\n            break;\n          case \"PrintScaling\":\n            switch (value.name) {\n              case \"None\":\n              case \"AppDefault\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"AppDefault\";\n            }\n            break;\n          case \"Duplex\":\n            switch (value.name) {\n              case \"Simplex\":\n              case \"DuplexFlipShortEdge\":\n              case \"DuplexFlipLongEdge\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"None\";\n            }\n            break;\n          case \"PrintPageRange\":\n            const length = value.length;\n            if (length % 2 !== 0) {\n              // The number of elements must be even.\n              break;\n            }\n            const isValid = value.every((page, i, arr) => {\n              return (\n                Number.isInteger(page) &&\n                page > 0 &&\n                (i === 0 || page >= arr[i - 1]) &&\n                page <= this.numPages\n              );\n            });\n            if (isValid) {\n              prefValue = value;\n            }\n            break;\n          case \"NumCopies\":\n            if (value > 0) {\n              prefValue = value;\n            }\n            break;\n          default:\n            assert(typeof value === \"boolean\");\n            prefValue = value;\n        }\n\n        if (prefValue !== undefined) {\n          prefs[key] = prefValue;\n        } else {\n          info(`Bad value in ViewerPreferences for \"${key}\".`);\n        }\n      }\n    }\n    return shadow(this, \"viewerPreferences\", prefs);\n  }\n\n  /**\n   * NOTE: \"JavaScript\" actions are, for now, handled by `get javaScript` below.\n   */\n  get openAction() {\n    const obj = this.catDict.get(\"OpenAction\");\n    let openAction = null;\n\n    if (isDict(obj)) {\n      // Convert the OpenAction dictionary into a format that works with\n      // `parseDestDictionary`, to avoid having to re-implement those checks.\n      const destDict = new Dict(this.xref);\n      destDict.set(\"A\", obj);\n\n      const resultObj = { url: null, dest: null, action: null };\n      Catalog.parseDestDictionary({ destDict, resultObj });\n\n      if (Array.isArray(resultObj.dest)) {\n        if (!openAction) {\n          openAction = Object.create(null);\n        }\n        openAction.dest = resultObj.dest;\n      } else if (resultObj.action) {\n        if (!openAction) {\n          openAction = Object.create(null);\n        }\n        openAction.action = resultObj.action;\n      }\n    } else if (Array.isArray(obj)) {\n      if (!openAction) {\n        openAction = Object.create(null);\n      }\n      openAction.dest = obj;\n    }\n    return shadow(this, \"openAction\", openAction);\n  }\n\n  get attachments() {\n    const obj = this.catDict.get(\"Names\");\n    let attachments = null;\n\n    if (obj && obj.has(\"EmbeddedFiles\")) {\n      const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n      const names = nameTree.getAll();\n      for (const name in names) {\n        const fs = new FileSpec(names[name], this.xref);\n        if (!attachments) {\n          attachments = Object.create(null);\n        }\n        attachments[stringToPDFString(name)] = fs.serializable;\n      }\n    }\n    return shadow(this, \"attachments\", attachments);\n  }\n\n  get javaScript() {\n    const obj = this.catDict.get(\"Names\");\n\n    let javaScript = null;\n    function appendIfJavaScriptDict(jsDict) {\n      const type = jsDict.get(\"S\");\n      if (!isName(type, \"JavaScript\")) {\n        return;\n      }\n\n      let js = jsDict.get(\"JS\");\n      if (isStream(js)) {\n        js = bytesToString(js.getBytes());\n      } else if (!isString(js)) {\n        return;\n      }\n\n      if (!javaScript) {\n        javaScript = [];\n      }\n      javaScript.push(stringToPDFString(js));\n    }\n\n    if (obj && obj.has(\"JavaScript\")) {\n      const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n      const names = nameTree.getAll();\n      for (const name in names) {\n        // We don't use most JavaScript in PDF documents. This code is\n        // defensive so we don't cause errors on document load.\n        const jsDict = names[name];\n        if (isDict(jsDict)) {\n          appendIfJavaScriptDict(jsDict);\n        }\n      }\n    }\n\n    // Append OpenAction \"JavaScript\" actions to the JavaScript array.\n    const openAction = this.catDict.get(\"OpenAction\");\n    if (isDict(openAction) && isName(openAction.get(\"S\"), \"JavaScript\")) {\n      appendIfJavaScriptDict(openAction);\n    }\n\n    return shadow(this, \"javaScript\", javaScript);\n  }\n\n  fontFallback(id, handler) {\n    const promises = [];\n    this.fontCache.forEach(function(promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const translatedFont of translatedFonts) {\n        if (translatedFont.loadedName === id) {\n          translatedFont.fallback(handler);\n          return;\n        }\n      }\n    });\n  }\n\n  cleanup() {\n    clearPrimitiveCaches();\n    this.pageKidsCountCache.clear();\n\n    const promises = [];\n    this.fontCache.forEach(function(promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const { dict } of translatedFonts) {\n        delete dict.translated;\n      }\n      this.fontCache.clear();\n      this.builtInCMapCache.clear();\n    });\n  }\n\n  getPageDict(pageIndex) {\n    const capability = createPromiseCapability();\n    const nodesToVisit = [this.catDict.getRaw(\"Pages\")];\n    const visitedNodes = new RefSet();\n    const xref = this.xref,\n      pageKidsCountCache = this.pageKidsCountCache;\n    let count,\n      currentPageIndex = 0;\n\n    function next() {\n      while (nodesToVisit.length) {\n        const currentNode = nodesToVisit.pop();\n\n        if (isRef(currentNode)) {\n          count = pageKidsCountCache.get(currentNode);\n          // Skip nodes where the page can't be.\n          if (count > 0 && currentPageIndex + count < pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n          // Prevent circular references in the /Pages tree.\n          if (visitedNodes.has(currentNode)) {\n            capability.reject(\n              new FormatError(\"Pages tree contains circular reference.\")\n            );\n            return;\n          }\n          visitedNodes.put(currentNode);\n\n          xref.fetchAsync(currentNode).then(function(obj) {\n            if (isDict(obj, \"Page\") || (isDict(obj) && !obj.has(\"Kids\"))) {\n              if (pageIndex === currentPageIndex) {\n                // Cache the Page reference, since it can *greatly* improve\n                // performance by reducing redundant lookups in long documents\n                // where all nodes are found at *one* level of the tree.\n                if (currentNode && !pageKidsCountCache.has(currentNode)) {\n                  pageKidsCountCache.put(currentNode, 1);\n                }\n                capability.resolve([obj, currentNode]);\n              } else {\n                currentPageIndex++;\n                next();\n              }\n              return;\n            }\n            nodesToVisit.push(obj);\n            next();\n          }, capability.reject);\n          return;\n        }\n\n        // Must be a child page dictionary.\n        if (!isDict(currentNode)) {\n          capability.reject(\n            new FormatError(\n              \"Page dictionary kid reference points to wrong type of object.\"\n            )\n          );\n          return;\n        }\n\n        count = currentNode.get(\"Count\");\n        if (Number.isInteger(count) && count >= 0) {\n          // Cache the Kids count, since it can reduce redundant lookups in\n          // documents where all nodes are found at *one* level of the tree.\n          const objId = currentNode.objId;\n          if (objId && !pageKidsCountCache.has(objId)) {\n            pageKidsCountCache.put(objId, count);\n          }\n          // Skip nodes where the page can't be.\n          if (currentPageIndex + count <= pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n        }\n\n        const kids = currentNode.get(\"Kids\");\n        if (!Array.isArray(kids)) {\n          // Prevent errors in corrupt PDF documents that violate the\n          // specification by *inlining* Page dicts directly in the Kids\n          // array, rather than using indirect objects (fixes issue9540.pdf).\n          if (\n            isName(currentNode.get(\"Type\"), \"Page\") ||\n            (!currentNode.has(\"Type\") && currentNode.has(\"Contents\"))\n          ) {\n            if (currentPageIndex === pageIndex) {\n              capability.resolve([currentNode, null]);\n              return;\n            }\n            currentPageIndex++;\n            continue;\n          }\n\n          capability.reject(\n            new FormatError(\"Page dictionary kids object is not an array.\")\n          );\n          return;\n        }\n\n        // Always check all `Kids` nodes, to avoid getting stuck in an empty\n        // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n        // and to ensure that we actually find the correct `Page` dict.\n        for (let last = kids.length - 1; last >= 0; last--) {\n          nodesToVisit.push(kids[last]);\n        }\n      }\n      capability.reject(new Error(`Page index ${pageIndex} not found.`));\n    }\n    next();\n    return capability.promise;\n  }\n\n  getPageIndex(pageRef) {\n    // The page tree nodes have the count of all the leaves below them. To get\n    // how many pages are before we just have to walk up the tree and keep\n    // adding the count of siblings to the left of the node.\n    const xref = this.xref;\n\n    function pagesBeforeRef(kidRef) {\n      let total = 0,\n        parentRef;\n\n      return xref\n        .fetchAsync(kidRef)\n        .then(function(node) {\n          if (\n            isRefsEqual(kidRef, pageRef) &&\n            !isDict(node, \"Page\") &&\n            !(isDict(node) && !node.has(\"Type\") && node.has(\"Contents\"))\n          ) {\n            throw new FormatError(\n              \"The reference does not point to a /Page dictionary.\"\n            );\n          }\n          if (!node) {\n            return null;\n          }\n          if (!isDict(node)) {\n            throw new FormatError(\"Node must be a dictionary.\");\n          }\n          parentRef = node.getRaw(\"Parent\");\n          return node.getAsync(\"Parent\");\n        })\n        .then(function(parent) {\n          if (!parent) {\n            return null;\n          }\n          if (!isDict(parent)) {\n            throw new FormatError(\"Parent must be a dictionary.\");\n          }\n          return parent.getAsync(\"Kids\");\n        })\n        .then(function(kids) {\n          if (!kids) {\n            return null;\n          }\n\n          const kidPromises = [];\n          let found = false;\n          for (let i = 0, ii = kids.length; i < ii; i++) {\n            const kid = kids[i];\n            if (!isRef(kid)) {\n              throw new FormatError(\"Kid must be a reference.\");\n            }\n            if (isRefsEqual(kid, kidRef)) {\n              found = true;\n              break;\n            }\n            kidPromises.push(\n              xref.fetchAsync(kid).then(function(kid) {\n                if (!isDict(kid)) {\n                  throw new FormatError(\"Kid node must be a dictionary.\");\n                }\n                if (kid.has(\"Count\")) {\n                  total += kid.get(\"Count\");\n                } else {\n                  // Page leaf node.\n                  total++;\n                }\n              })\n            );\n          }\n          if (!found) {\n            throw new FormatError(\"Kid reference not found in parent's kids.\");\n          }\n          return Promise.all(kidPromises).then(function() {\n            return [total, parentRef];\n          });\n        });\n    }\n\n    let total = 0;\n    function next(ref) {\n      return pagesBeforeRef(ref).then(function(args) {\n        if (!args) {\n          return total;\n        }\n        const [count, parentRef] = args;\n        total += count;\n        return next(parentRef);\n      });\n    }\n\n    return next(pageRef);\n  }\n\n  /**\n   * @typedef ParseDestDictionaryParameters\n   * @property {Dict} destDict - The dictionary containing the destination.\n   * @property {Object} resultObj - The object where the parsed destination\n   *   properties will be placed.\n   * @property {string} [docBaseUrl] - The document base URL that is used when\n   *   attempting to recover valid absolute URLs from relative ones.\n   */\n\n  /**\n   * Helper function used to parse the contents of destination dictionaries.\n   * @param {ParseDestDictionaryParameters} params\n   */\n  static parseDestDictionary(params) {\n    // Lets URLs beginning with 'www.' default to using the 'http://' protocol.\n    function addDefaultProtocolToUrl(url) {\n      return url.startsWith(\"www.\") ? `http://${url}` : url;\n    }\n\n    // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n    // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see Bugzilla 1122280.\n    function tryConvertUrlEncoding(url) {\n      try {\n        return stringToUTF8String(url);\n      } catch (e) {\n        return url;\n      }\n    }\n\n    const destDict = params.destDict;\n    if (!isDict(destDict)) {\n      warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n      return;\n    }\n    const resultObj = params.resultObj;\n    if (typeof resultObj !== \"object\") {\n      warn(\"parseDestDictionary: `resultObj` must be an object.\");\n      return;\n    }\n    const docBaseUrl = params.docBaseUrl || null;\n\n    let action = destDict.get(\"A\"),\n      url,\n      dest;\n    if (!isDict(action) && destDict.has(\"Dest\")) {\n      // A /Dest entry should *only* contain a Name or an Array, but some bad\n      // PDF generators ignore that and treat it as an /A entry.\n      action = destDict.get(\"Dest\");\n    }\n\n    if (isDict(action)) {\n      const actionType = action.get(\"S\");\n      if (!isName(actionType)) {\n        warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n        return;\n      }\n      const actionName = actionType.name;\n\n      switch (actionName) {\n        case \"URI\":\n          url = action.get(\"URI\");\n          if (isName(url)) {\n            // Some bad PDFs do not put parentheses around relative URLs.\n            url = \"/\" + url.name;\n          } else if (isString(url)) {\n            url = addDefaultProtocolToUrl(url);\n          }\n          // TODO: pdf spec mentions urls can be relative to a Base\n          // entry in the dictionary.\n          break;\n\n        case \"GoTo\":\n          dest = action.get(\"D\");\n          break;\n\n        case \"Launch\":\n        // We neither want, nor can, support arbitrary 'Launch' actions.\n        // However, in practice they are mostly used for linking to other PDF\n        // files, which we thus attempt to support (utilizing `docBaseUrl`).\n        /* falls through */\n\n        case \"GoToR\":\n          const urlDict = action.get(\"F\");\n          if (isDict(urlDict)) {\n            // We assume that we found a FileSpec dictionary\n            // and fetch the URL without checking any further.\n            url = urlDict.get(\"F\") || null;\n          } else if (isString(urlDict)) {\n            url = urlDict;\n          }\n\n          // NOTE: the destination is relative to the *remote* document.\n          let remoteDest = action.get(\"D\");\n          if (remoteDest) {\n            if (isName(remoteDest)) {\n              remoteDest = remoteDest.name;\n            }\n            if (isString(url)) {\n              const baseUrl = url.split(\"#\")[0];\n              if (isString(remoteDest)) {\n                url = baseUrl + \"#\" + remoteDest;\n              } else if (Array.isArray(remoteDest)) {\n                url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n              }\n            }\n          }\n          // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n          const newWindow = action.get(\"NewWindow\");\n          if (isBool(newWindow)) {\n            resultObj.newWindow = newWindow;\n          }\n          break;\n\n        case \"Named\":\n          const namedAction = action.get(\"N\");\n          if (isName(namedAction)) {\n            resultObj.action = namedAction.name;\n          }\n          break;\n\n        case \"JavaScript\":\n          const jsAction = action.get(\"JS\");\n          let js;\n\n          if (isStream(jsAction)) {\n            js = bytesToString(jsAction.getBytes());\n          } else if (isString(jsAction)) {\n            js = jsAction;\n          }\n\n          if (js) {\n            // Attempt to recover valid URLs from `JS` entries with certain\n            // white-listed formats:\n            //  - window.open('http://example.com')\n            //  - app.launchURL('http://example.com', true)\n            const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\"];\n            const regex = new RegExp(\n              \"^\\\\s*(\" +\n                URL_OPEN_METHODS.join(\"|\")\n                  .split(\".\")\n                  .join(\"\\\\.\") +\n                \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n              \"i\"\n            );\n\n            const jsUrl = regex.exec(stringToPDFString(js));\n            if (jsUrl && jsUrl[2]) {\n              url = jsUrl[2];\n\n              if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n                resultObj.newWindow = true;\n              }\n              break;\n            }\n          }\n        /* falls through */\n        default:\n          warn(`parseDestDictionary: unsupported action type \"${actionName}\".`);\n          break;\n      }\n    } else if (destDict.has(\"Dest\")) {\n      // Simple destination.\n      dest = destDict.get(\"Dest\");\n    }\n\n    if (isString(url)) {\n      url = tryConvertUrlEncoding(url);\n      const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl);\n      if (absoluteUrl) {\n        resultObj.url = absoluteUrl.href;\n      }\n      resultObj.unsafeUrl = url;\n    }\n    if (dest) {\n      if (isName(dest)) {\n        dest = dest.name;\n      }\n      if (isString(dest) || Array.isArray(dest)) {\n        resultObj.dest = dest;\n      }\n    }\n  }\n}\n\nvar XRef = (function XRefClosure() {\n  function XRef(stream, pdfManager) {\n    this.stream = stream;\n    this.pdfManager = pdfManager;\n    this.entries = [];\n    this.xrefstms = Object.create(null);\n    this._cacheMap = new Map(); // Prepare the XRef cache.\n    this.stats = {\n      streamTypes: Object.create(null),\n      fontTypes: Object.create(null),\n    };\n  }\n\n  XRef.prototype = {\n    setStartXRef: function XRef_setStartXRef(startXRef) {\n      // Store the starting positions of xref tables as we process them\n      // so we can recover from missing data errors\n      this.startXRefQueue = [startXRef];\n    },\n\n    parse: function XRef_parse(recoveryMode) {\n      var trailerDict;\n      if (!recoveryMode) {\n        trailerDict = this.readXRef();\n      } else {\n        warn(\"Indexing all PDF objects\");\n        trailerDict = this.indexObjects();\n      }\n      trailerDict.assignXref(this);\n      this.trailer = trailerDict;\n\n      let encrypt;\n      try {\n        encrypt = trailerDict.get(\"Encrypt\");\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n      }\n      if (isDict(encrypt)) {\n        var ids = trailerDict.get(\"ID\");\n        var fileId = ids && ids.length ? ids[0] : \"\";\n        // The 'Encrypt' dictionary itself should not be encrypted, and by\n        // setting `suppressEncryption` we can prevent an infinite loop inside\n        // of `XRef_fetchUncompressed` if the dictionary contains indirect\n        // objects (fixes issue7665.pdf).\n        encrypt.suppressEncryption = true;\n        this.encrypt = new CipherTransformFactory(\n          encrypt,\n          fileId,\n          this.pdfManager.password\n        );\n      }\n\n      // Get the root dictionary (catalog) object, and do some basic validation.\n      let root;\n      try {\n        root = trailerDict.get(\"Root\");\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n      }\n      if (isDict(root) && root.has(\"Pages\")) {\n        this.root = root;\n      } else {\n        if (!recoveryMode) {\n          throw new XRefParseException();\n        }\n        throw new FormatError(\"Invalid root reference\");\n      }\n    },\n\n    processXRefTable: function XRef_processXRefTable(parser) {\n      if (!(\"tableState\" in this)) {\n        // Stores state of the table as we process it so we can resume\n        // from middle of table in case of missing data error\n        this.tableState = {\n          entryNum: 0,\n          streamPos: parser.lexer.stream.pos,\n          parserBuf1: parser.buf1,\n          parserBuf2: parser.buf2,\n        };\n      }\n\n      var obj = this.readXRefTable(parser);\n\n      // Sanity check\n      if (!isCmd(obj, \"trailer\")) {\n        throw new FormatError(\n          \"Invalid XRef table: could not find trailer dictionary\"\n        );\n      }\n      // Read trailer dictionary, e.g.\n      // trailer\n      //    << /Size 22\n      //      /Root 20R\n      //      /Info 10R\n      //      /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n      //    >>\n      // The parser goes through the entire stream << ... >> and provides\n      // a getter interface for the key-value table\n      var dict = parser.getObj();\n\n      // The pdflib PDF generator can generate a nested trailer dictionary\n      if (!isDict(dict) && dict.dict) {\n        dict = dict.dict;\n      }\n      if (!isDict(dict)) {\n        throw new FormatError(\n          \"Invalid XRef table: could not parse trailer dictionary\"\n        );\n      }\n      delete this.tableState;\n\n      return dict;\n    },\n\n    readXRefTable: function XRef_readXRefTable(parser) {\n      // Example of cross-reference table:\n      // xref\n      // 0 1                    <-- subsection header (first obj #, obj count)\n      // 0000000000 65535 f     <-- actual object (offset, generation #, f/n)\n      // 23 2                   <-- subsection header ... and so on ...\n      // 0000025518 00002 n\n      // 0000025635 00000 n\n      // trailer\n      // ...\n\n      var stream = parser.lexer.stream;\n      var tableState = this.tableState;\n      stream.pos = tableState.streamPos;\n      parser.buf1 = tableState.parserBuf1;\n      parser.buf2 = tableState.parserBuf2;\n\n      // Outer loop is over subsection headers\n      var obj;\n\n      while (true) {\n        if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n          if (isCmd((obj = parser.getObj()), \"trailer\")) {\n            break;\n          }\n          tableState.firstEntryNum = obj;\n          tableState.entryCount = parser.getObj();\n        }\n\n        var first = tableState.firstEntryNum;\n        var count = tableState.entryCount;\n        if (!Number.isInteger(first) || !Number.isInteger(count)) {\n          throw new FormatError(\n            \"Invalid XRef table: wrong types in subsection header\"\n          );\n        }\n        // Inner loop is over objects themselves\n        for (var i = tableState.entryNum; i < count; i++) {\n          tableState.streamPos = stream.pos;\n          tableState.entryNum = i;\n          tableState.parserBuf1 = parser.buf1;\n          tableState.parserBuf2 = parser.buf2;\n\n          var entry = {};\n          entry.offset = parser.getObj();\n          entry.gen = parser.getObj();\n          var type = parser.getObj();\n\n          if (type instanceof Cmd) {\n            switch (type.cmd) {\n              case \"f\":\n                entry.free = true;\n                break;\n              case \"n\":\n                entry.uncompressed = true;\n                break;\n            }\n          }\n\n          // Validate entry obj\n          if (\n            !Number.isInteger(entry.offset) ||\n            !Number.isInteger(entry.gen) ||\n            !(entry.free || entry.uncompressed)\n          ) {\n            throw new FormatError(\n              `Invalid entry in XRef subsection: ${first}, ${count}`\n            );\n          }\n\n          // The first xref table entry, i.e. obj 0, should be free. Attempting\n          // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n          if (i === 0 && entry.free && first === 1) {\n            first = 0;\n          }\n\n          if (!this.entries[i + first]) {\n            this.entries[i + first] = entry;\n          }\n        }\n\n        tableState.entryNum = 0;\n        tableState.streamPos = stream.pos;\n        tableState.parserBuf1 = parser.buf1;\n        tableState.parserBuf2 = parser.buf2;\n        delete tableState.firstEntryNum;\n        delete tableState.entryCount;\n      }\n\n      // Sanity check: as per spec, first object must be free\n      if (this.entries[0] && !this.entries[0].free) {\n        throw new FormatError(\"Invalid XRef table: unexpected first object\");\n      }\n      return obj;\n    },\n\n    processXRefStream: function XRef_processXRefStream(stream) {\n      if (!(\"streamState\" in this)) {\n        // Stores state of the stream as we process it so we can resume\n        // from middle of stream in case of missing data error\n        var streamParameters = stream.dict;\n        var byteWidths = streamParameters.get(\"W\");\n        var range = streamParameters.get(\"Index\");\n        if (!range) {\n          range = [0, streamParameters.get(\"Size\")];\n        }\n\n        this.streamState = {\n          entryRanges: range,\n          byteWidths,\n          entryNum: 0,\n          streamPos: stream.pos,\n        };\n      }\n      this.readXRefStream(stream);\n      delete this.streamState;\n\n      return stream.dict;\n    },\n\n    readXRefStream: function XRef_readXRefStream(stream) {\n      var i, j;\n      var streamState = this.streamState;\n      stream.pos = streamState.streamPos;\n\n      var byteWidths = streamState.byteWidths;\n      var typeFieldWidth = byteWidths[0];\n      var offsetFieldWidth = byteWidths[1];\n      var generationFieldWidth = byteWidths[2];\n\n      var entryRanges = streamState.entryRanges;\n      while (entryRanges.length > 0) {\n        var first = entryRanges[0];\n        var n = entryRanges[1];\n\n        if (!Number.isInteger(first) || !Number.isInteger(n)) {\n          throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n        }\n        if (\n          !Number.isInteger(typeFieldWidth) ||\n          !Number.isInteger(offsetFieldWidth) ||\n          !Number.isInteger(generationFieldWidth)\n        ) {\n          throw new FormatError(\n            `Invalid XRef entry fields length: ${first}, ${n}`\n          );\n        }\n        for (i = streamState.entryNum; i < n; ++i) {\n          streamState.entryNum = i;\n          streamState.streamPos = stream.pos;\n\n          var type = 0,\n            offset = 0,\n            generation = 0;\n          for (j = 0; j < typeFieldWidth; ++j) {\n            type = (type << 8) | stream.getByte();\n          }\n          // if type field is absent, its default value is 1\n          if (typeFieldWidth === 0) {\n            type = 1;\n          }\n          for (j = 0; j < offsetFieldWidth; ++j) {\n            offset = (offset << 8) | stream.getByte();\n          }\n          for (j = 0; j < generationFieldWidth; ++j) {\n            generation = (generation << 8) | stream.getByte();\n          }\n          var entry = {};\n          entry.offset = offset;\n          entry.gen = generation;\n          switch (type) {\n            case 0:\n              entry.free = true;\n              break;\n            case 1:\n              entry.uncompressed = true;\n              break;\n            case 2:\n              break;\n            default:\n              throw new FormatError(`Invalid XRef entry type: ${type}`);\n          }\n          if (!this.entries[first + i]) {\n            this.entries[first + i] = entry;\n          }\n        }\n\n        streamState.entryNum = 0;\n        streamState.streamPos = stream.pos;\n        entryRanges.splice(0, 2);\n      }\n    },\n\n    indexObjects: function XRef_indexObjects() {\n      // Simple scan through the PDF content to find objects,\n      // trailers and XRef streams.\n      var TAB = 0x9,\n        LF = 0xa,\n        CR = 0xd,\n        SPACE = 0x20;\n      var PERCENT = 0x25,\n        LT = 0x3c;\n\n      function readToken(data, offset) {\n        var token = \"\",\n          ch = data[offset];\n        while (ch !== LF && ch !== CR && ch !== LT) {\n          if (++offset >= data.length) {\n            break;\n          }\n          token += String.fromCharCode(ch);\n          ch = data[offset];\n        }\n        return token;\n      }\n      function skipUntil(data, offset, what) {\n        var length = what.length,\n          dataLength = data.length;\n        var skipped = 0;\n        // finding byte sequence\n        while (offset < dataLength) {\n          var i = 0;\n          while (i < length && data[offset + i] === what[i]) {\n            ++i;\n          }\n          if (i >= length) {\n            break; // sequence found\n          }\n          offset++;\n          skipped++;\n        }\n        return skipped;\n      }\n      var objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n      const endobjRegExp = /\\bendobj[\\b\\s]$/;\n      const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n      const CHECK_CONTENT_LENGTH = 25;\n\n      var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n      // prettier-ignore\n      var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114,\n                                           101, 102]);\n      const objBytes = new Uint8Array([111, 98, 106]);\n      var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n      // Clear out any existing entries, since they may be bogus.\n      this.entries.length = 0;\n\n      var stream = this.stream;\n      stream.pos = 0;\n      var buffer = stream.getBytes();\n      var position = stream.start,\n        length = buffer.length;\n      var trailers = [],\n        xrefStms = [];\n      while (position < length) {\n        var ch = buffer[position];\n        if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n          ++position;\n          continue;\n        }\n        if (ch === PERCENT) {\n          // %-comment\n          do {\n            ++position;\n            if (position >= length) {\n              break;\n            }\n            ch = buffer[position];\n          } while (ch !== LF && ch !== CR);\n          continue;\n        }\n        var token = readToken(buffer, position);\n        var m;\n        if (\n          token.startsWith(\"xref\") &&\n          (token.length === 4 || /\\s/.test(token[4]))\n        ) {\n          position += skipUntil(buffer, position, trailerBytes);\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else if ((m = objRegExp.exec(token))) {\n          const num = m[1] | 0,\n            gen = m[2] | 0;\n          if (!this.entries[num] || this.entries[num].gen === gen) {\n            this.entries[num] = {\n              offset: position - stream.start,\n              gen,\n              uncompressed: true,\n            };\n          }\n          let contentLength,\n            startPos = position + token.length;\n\n          // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n          // we won't skip over a new 'obj' operator in corrupt files where\n          // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n          while (startPos < buffer.length) {\n            const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n            contentLength = endPos - position;\n\n            const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n            const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n            // Check if the current object ends with an 'endobj' operator.\n            if (endobjRegExp.test(tokenStr)) {\n              break;\n            } else {\n              // Check if an \"obj\" occurrence is actually a new object,\n              // i.e. the current object is missing the 'endobj' operator.\n              const objToken = nestedObjRegExp.exec(tokenStr);\n\n              if (objToken && objToken[1]) {\n                warn(\n                  'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n                    'caused by missing \"endobj\" -- trying to recover.'\n                );\n                contentLength -= objToken[1].length;\n                break;\n              }\n            }\n            startPos = endPos;\n          }\n          const content = buffer.subarray(position, position + contentLength);\n\n          // checking XRef stream suspect\n          // (it shall have '/XRef' and next char is not a letter)\n          var xrefTagOffset = skipUntil(content, 0, xrefBytes);\n          if (\n            xrefTagOffset < contentLength &&\n            content[xrefTagOffset + 5] < 64\n          ) {\n            xrefStms.push(position - stream.start);\n            this.xrefstms[position - stream.start] = 1; // Avoid recursion\n          }\n\n          position += contentLength;\n        } else if (\n          token.startsWith(\"trailer\") &&\n          (token.length === 7 || /\\s/.test(token[7]))\n        ) {\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else {\n          position += token.length + 1;\n        }\n      }\n      // reading XRef streams\n      var i, ii;\n      for (i = 0, ii = xrefStms.length; i < ii; ++i) {\n        this.startXRefQueue.push(xrefStms[i]);\n        this.readXRef(/* recoveryMode */ true);\n      }\n      // finding main trailer\n      let trailerDict;\n      for (i = 0, ii = trailers.length; i < ii; ++i) {\n        stream.pos = trailers[i];\n        const parser = new Parser({\n          lexer: new Lexer(stream),\n          xref: this,\n          allowStreams: true,\n          recoveryMode: true,\n        });\n        var obj = parser.getObj();\n        if (!isCmd(obj, \"trailer\")) {\n          continue;\n        }\n        // read the trailer dictionary\n        const dict = parser.getObj();\n        if (!isDict(dict)) {\n          continue;\n        }\n        // Do some basic validation of the trailer/root dictionary candidate.\n        let rootDict;\n        try {\n          rootDict = dict.get(\"Root\");\n        } catch (ex) {\n          if (ex instanceof MissingDataException) {\n            throw ex;\n          }\n          continue;\n        }\n        if (!isDict(rootDict) || !rootDict.has(\"Pages\")) {\n          continue;\n        }\n        // taking the first one with 'ID'\n        if (dict.has(\"ID\")) {\n          return dict;\n        }\n        // The current dictionary is a candidate, but continue searching.\n        trailerDict = dict;\n      }\n      // No trailer with 'ID', taking last one (if exists).\n      if (trailerDict) {\n        return trailerDict;\n      }\n      // nothing helps\n      throw new InvalidPDFException(\"Invalid PDF structure.\");\n    },\n\n    readXRef: function XRef_readXRef(recoveryMode) {\n      var stream = this.stream;\n      // Keep track of already parsed XRef tables, to prevent an infinite loop\n      // when parsing corrupt PDF files where e.g. the /Prev entries create a\n      // circular dependency between tables (fixes bug1393476.pdf).\n      const startXRefParsedCache = Object.create(null);\n\n      try {\n        while (this.startXRefQueue.length) {\n          var startXRef = this.startXRefQueue[0];\n\n          if (startXRefParsedCache[startXRef]) {\n            warn(\"readXRef - skipping XRef table since it was already parsed.\");\n            this.startXRefQueue.shift();\n            continue;\n          }\n          startXRefParsedCache[startXRef] = true;\n\n          stream.pos = startXRef + stream.start;\n\n          const parser = new Parser({\n            lexer: new Lexer(stream),\n            xref: this,\n            allowStreams: true,\n          });\n          var obj = parser.getObj();\n          var dict;\n\n          // Get dictionary\n          if (isCmd(obj, \"xref\")) {\n            // Parse end-of-file XRef\n            dict = this.processXRefTable(parser);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n\n            // Recursively get other XRefs 'XRefStm', if any\n            obj = dict.get(\"XRefStm\");\n            if (Number.isInteger(obj)) {\n              var pos = obj;\n              // ignore previously loaded xref streams\n              // (possible infinite recursion)\n              if (!(pos in this.xrefstms)) {\n                this.xrefstms[pos] = 1;\n                this.startXRefQueue.push(pos);\n              }\n            }\n          } else if (Number.isInteger(obj)) {\n            // Parse in-stream XRef\n            if (\n              !Number.isInteger(parser.getObj()) ||\n              !isCmd(parser.getObj(), \"obj\") ||\n              !isStream((obj = parser.getObj()))\n            ) {\n              throw new FormatError(\"Invalid XRef stream\");\n            }\n            dict = this.processXRefStream(obj);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n            if (!dict) {\n              throw new FormatError(\"Failed to read XRef stream\");\n            }\n          } else {\n            throw new FormatError(\"Invalid XRef stream header\");\n          }\n\n          // Recursively get previous dictionary, if any\n          obj = dict.get(\"Prev\");\n          if (Number.isInteger(obj)) {\n            this.startXRefQueue.push(obj);\n          } else if (isRef(obj)) {\n            // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n            // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n            this.startXRefQueue.push(obj.num);\n          }\n\n          this.startXRefQueue.shift();\n        }\n\n        return this.topDict;\n      } catch (e) {\n        if (e instanceof MissingDataException) {\n          throw e;\n        }\n        info(\"(while reading XRef): \" + e);\n      }\n\n      if (recoveryMode) {\n        return undefined;\n      }\n      throw new XRefParseException();\n    },\n\n    getEntry: function XRef_getEntry(i) {\n      var xrefEntry = this.entries[i];\n      if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n        return xrefEntry;\n      }\n      return null;\n    },\n\n    fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {\n      if (obj instanceof Ref) {\n        return this.fetch(obj, suppressEncryption);\n      }\n      return obj;\n    },\n\n    fetch: function XRef_fetch(ref, suppressEncryption) {\n      if (!(ref instanceof Ref)) {\n        throw new Error(\"ref object is not a reference\");\n      }\n      const num = ref.num;\n\n      // The XRef cache is populated with objects which are obtained through\n      // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n      // methods should ever return `undefined` (note the `assert` calls below).\n      const cacheEntry = this._cacheMap.get(num);\n      if (cacheEntry !== undefined) {\n        // In documents with Object Streams, it's possible that cached `Dict`s\n        // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n        if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n          cacheEntry.objId = ref.toString();\n        }\n        return cacheEntry;\n      }\n      let xrefEntry = this.getEntry(num);\n\n      if (xrefEntry === null) {\n        // The referenced entry can be free.\n        this._cacheMap.set(num, xrefEntry);\n        return xrefEntry;\n      }\n\n      if (xrefEntry.uncompressed) {\n        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n      } else {\n        xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n      }\n      if (isDict(xrefEntry)) {\n        xrefEntry.objId = ref.toString();\n      } else if (isStream(xrefEntry)) {\n        xrefEntry.dict.objId = ref.toString();\n      }\n      return xrefEntry;\n    },\n\n    fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n      var gen = ref.gen;\n      var num = ref.num;\n      if (xrefEntry.gen !== gen) {\n        throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n      }\n      var stream = this.stream.makeSubStream(\n        xrefEntry.offset + this.stream.start\n      );\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n      });\n      var obj1 = parser.getObj();\n      var obj2 = parser.getObj();\n      var obj3 = parser.getObj();\n\n      if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n        throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n      }\n      if (obj3.cmd !== \"obj\") {\n        // some bad PDFs use \"obj1234\" and really mean 1234\n        if (obj3.cmd.startsWith(\"obj\")) {\n          num = parseInt(obj3.cmd.substring(3), 10);\n          if (!Number.isNaN(num)) {\n            return num;\n          }\n        }\n        throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n      }\n      if (this.encrypt && !suppressEncryption) {\n        xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n      } else {\n        xrefEntry = parser.getObj();\n      }\n      if (!isStream(xrefEntry)) {\n        if (\n          typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")\n        ) {\n          assert(\n            xrefEntry !== undefined,\n            'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n          );\n        }\n        this._cacheMap.set(num, xrefEntry);\n      }\n      return xrefEntry;\n    },\n\n    fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n      const tableOffset = xrefEntry.offset;\n      const stream = this.fetch(Ref.get(tableOffset, 0));\n      if (!isStream(stream)) {\n        throw new FormatError(\"bad ObjStm stream\");\n      }\n      const first = stream.dict.get(\"First\");\n      const n = stream.dict.get(\"N\");\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\n        throw new FormatError(\n          \"invalid first and n parameters for ObjStm stream\"\n        );\n      }\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n      });\n      const nums = new Array(n);\n      // read the object numbers to populate cache\n      for (let i = 0; i < n; ++i) {\n        const num = parser.getObj();\n        if (!Number.isInteger(num)) {\n          throw new FormatError(\n            `invalid object number in the ObjStm stream: ${num}`\n          );\n        }\n        const offset = parser.getObj();\n        if (!Number.isInteger(offset)) {\n          throw new FormatError(\n            `invalid object offset in the ObjStm stream: ${offset}`\n          );\n        }\n        nums[i] = num;\n      }\n      const entries = new Array(n);\n      // read stream objects for cache\n      for (let i = 0; i < n; ++i) {\n        const obj = parser.getObj();\n        entries[i] = obj;\n        // The ObjStm should not contain 'endobj'. If it's present, skip over it\n        // to support corrupt PDFs (fixes issue 5241, bug 898610, bug 1037816).\n        if (parser.buf1 instanceof Cmd && parser.buf1.cmd === \"endobj\") {\n          parser.shift();\n        }\n        if (isStream(obj)) {\n          continue;\n        }\n        const num = nums[i],\n          entry = this.entries[num];\n        if (entry && entry.offset === tableOffset && entry.gen === i) {\n          if (\n            typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")\n          ) {\n            assert(\n              obj !== undefined,\n              'fetchCompressed: The \"obj\" cannot be undefined.'\n            );\n          }\n          this._cacheMap.set(num, obj);\n        }\n      }\n      xrefEntry = entries[xrefEntry.gen];\n      if (xrefEntry === undefined) {\n        throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n      }\n      return xrefEntry;\n    },\n\n    async fetchIfRefAsync(obj, suppressEncryption) {\n      if (obj instanceof Ref) {\n        return this.fetchAsync(obj, suppressEncryption);\n      }\n      return obj;\n    },\n\n    async fetchAsync(ref, suppressEncryption) {\n      try {\n        return this.fetch(ref, suppressEncryption);\n      } catch (ex) {\n        if (!(ex instanceof MissingDataException)) {\n          throw ex;\n        }\n        await this.pdfManager.requestRange(ex.begin, ex.end);\n        return this.fetchAsync(ref, suppressEncryption);\n      }\n    },\n\n    getCatalogObj: function XRef_getCatalogObj() {\n      return this.root;\n    },\n  };\n\n  return XRef;\n})();\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n  constructor(root, xref, type) {\n    if (this.constructor === NameOrNumberTree) {\n      unreachable(\"Cannot initialize NameOrNumberTree.\");\n    }\n    this.root = root;\n    this.xref = xref;\n    this._type = type;\n  }\n\n  getAll() {\n    const dict = Object.create(null);\n    if (!this.root) {\n      return dict;\n    }\n    const xref = this.xref;\n    // Reading Name/Number tree.\n    const processed = new RefSet();\n    processed.put(this.root);\n    const queue = [this.root];\n    while (queue.length > 0) {\n      const obj = xref.fetchIfRef(queue.shift());\n      if (!isDict(obj)) {\n        continue;\n      }\n      if (obj.has(\"Kids\")) {\n        const kids = obj.get(\"Kids\");\n        for (let i = 0, ii = kids.length; i < ii; i++) {\n          const kid = kids[i];\n          if (processed.has(kid)) {\n            throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n          }\n          queue.push(kid);\n          processed.put(kid);\n        }\n        continue;\n      }\n      const entries = obj.get(this._type);\n      if (Array.isArray(entries)) {\n        for (let i = 0, ii = entries.length; i < ii; i += 2) {\n          dict[xref.fetchIfRef(entries[i])] = xref.fetchIfRef(entries[i + 1]);\n        }\n      }\n    }\n    return dict;\n  }\n\n  get(key) {\n    if (!this.root) {\n      return null;\n    }\n    const xref = this.xref;\n    let kidsOrEntries = xref.fetchIfRef(this.root);\n    let loopCount = 0;\n    const MAX_LEVELS = 10;\n\n    // Perform a binary search to quickly find the entry that\n    // contains the key we are looking for.\n    while (kidsOrEntries.has(\"Kids\")) {\n      if (++loopCount > MAX_LEVELS) {\n        warn(`Search depth limit reached for \"${this._type}\" tree.`);\n        return null;\n      }\n\n      const kids = kidsOrEntries.get(\"Kids\");\n      if (!Array.isArray(kids)) {\n        return null;\n      }\n\n      let l = 0,\n        r = kids.length - 1;\n      while (l <= r) {\n        const m = (l + r) >> 1;\n        const kid = xref.fetchIfRef(kids[m]);\n        const limits = kid.get(\"Limits\");\n\n        if (key < xref.fetchIfRef(limits[0])) {\n          r = m - 1;\n        } else if (key > xref.fetchIfRef(limits[1])) {\n          l = m + 1;\n        } else {\n          kidsOrEntries = xref.fetchIfRef(kids[m]);\n          break;\n        }\n      }\n      if (l > r) {\n        return null;\n      }\n    }\n\n    // If we get here, then we have found the right entry. Now go through the\n    // entries in the dictionary until we find the key we're looking for.\n    const entries = kidsOrEntries.get(this._type);\n    if (Array.isArray(entries)) {\n      // Perform a binary search to reduce the lookup time.\n      let l = 0,\n        r = entries.length - 2;\n      while (l <= r) {\n        // Check only even indices (0, 2, 4, ...) because the\n        // odd indices contain the actual data.\n        const tmp = (l + r) >> 1,\n          m = tmp + (tmp & 1);\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (key < currentKey) {\n          r = m - 2;\n        } else if (key > currentKey) {\n          l = m + 2;\n        } else {\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n\n      // Fallback to an exhaustive search, in an attempt to handle corrupt\n      // PDF files where keys are not correctly ordered (fixes issue 10272).\n      info(\n        `Falling back to an exhaustive search, for key \"${key}\", ` +\n          `in \"${this._type}\" tree.`\n      );\n      for (let m = 0, mm = entries.length; m < mm; m += 2) {\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (currentKey === key) {\n          warn(\n            `The \"${key}\" key was found at an incorrect, ` +\n              `i.e. out-of-order, position in \"${this._type}\" tree.`\n          );\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n    }\n    return null;\n  }\n}\n\nclass NameTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Names\");\n  }\n}\n\nclass NumberTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Nums\");\n  }\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nvar FileSpec = (function FileSpecClosure() {\n  function FileSpec(root, xref) {\n    if (!root || !isDict(root)) {\n      return;\n    }\n    this.xref = xref;\n    this.root = root;\n    if (root.has(\"FS\")) {\n      this.fs = root.get(\"FS\");\n    }\n    this.description = root.has(\"Desc\")\n      ? stringToPDFString(root.get(\"Desc\"))\n      : \"\";\n    if (root.has(\"RF\")) {\n      warn(\"Related file specifications are not supported\");\n    }\n    this.contentAvailable = true;\n    if (!root.has(\"EF\")) {\n      this.contentAvailable = false;\n      warn(\"Non-embedded file specifications are not supported\");\n    }\n  }\n\n  function pickPlatformItem(dict) {\n    // Look for the filename in this order:\n    // UF, F, Unix, Mac, DOS\n    if (dict.has(\"UF\")) {\n      return dict.get(\"UF\");\n    } else if (dict.has(\"F\")) {\n      return dict.get(\"F\");\n    } else if (dict.has(\"Unix\")) {\n      return dict.get(\"Unix\");\n    } else if (dict.has(\"Mac\")) {\n      return dict.get(\"Mac\");\n    } else if (dict.has(\"DOS\")) {\n      return dict.get(\"DOS\");\n    }\n    return null;\n  }\n\n  FileSpec.prototype = {\n    get filename() {\n      if (!this._filename && this.root) {\n        var filename = pickPlatformItem(this.root) || \"unnamed\";\n        this._filename = stringToPDFString(filename)\n          .replace(/\\\\\\\\/g, \"\\\\\")\n          .replace(/\\\\\\//g, \"/\")\n          .replace(/\\\\/g, \"/\");\n      }\n      return this._filename;\n    },\n    get content() {\n      if (!this.contentAvailable) {\n        return null;\n      }\n      if (!this.contentRef && this.root) {\n        this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n      }\n      var content = null;\n      if (this.contentRef) {\n        var xref = this.xref;\n        var fileObj = xref.fetchIfRef(this.contentRef);\n        if (fileObj && isStream(fileObj)) {\n          content = fileObj.getBytes();\n        } else {\n          warn(\n            \"Embedded file specification points to non-existing/invalid \" +\n              \"content\"\n          );\n        }\n      } else {\n        warn(\"Embedded file specification does not have a content\");\n      }\n      return content;\n    },\n    get serializable() {\n      return {\n        filename: this.filename,\n        content: this.content,\n      };\n    },\n  };\n  return FileSpec;\n})();\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nconst ObjectLoader = (function() {\n  function mayHaveChildren(value) {\n    return (\n      value instanceof Ref ||\n      value instanceof Dict ||\n      Array.isArray(value) ||\n      isStream(value)\n    );\n  }\n\n  function addChildren(node, nodesToVisit) {\n    if (node instanceof Dict || isStream(node)) {\n      const dict = node instanceof Dict ? node : node.dict;\n      const dictKeys = dict.getKeys();\n      for (let i = 0, ii = dictKeys.length; i < ii; i++) {\n        const rawValue = dict.getRaw(dictKeys[i]);\n        if (mayHaveChildren(rawValue)) {\n          nodesToVisit.push(rawValue);\n        }\n      }\n    } else if (Array.isArray(node)) {\n      for (let i = 0, ii = node.length; i < ii; i++) {\n        const value = node[i];\n        if (mayHaveChildren(value)) {\n          nodesToVisit.push(value);\n        }\n      }\n    }\n  }\n\n  function ObjectLoader(dict, keys, xref) {\n    this.dict = dict;\n    this.keys = keys;\n    this.xref = xref;\n    this.refSet = null;\n  }\n\n  ObjectLoader.prototype = {\n    async load() {\n      // Don't walk the graph if all the data is already loaded; note that only\n      // `ChunkedStream` instances have a `allChunksLoaded` method.\n      if (\n        !this.xref.stream.allChunksLoaded ||\n        this.xref.stream.allChunksLoaded()\n      ) {\n        return undefined;\n      }\n\n      const { keys, dict } = this;\n      this.refSet = new RefSet();\n      // Setup the initial nodes to visit.\n      const nodesToVisit = [];\n      for (let i = 0, ii = keys.length; i < ii; i++) {\n        const rawValue = dict.getRaw(keys[i]);\n        // Skip nodes that are guaranteed to be empty.\n        if (rawValue !== undefined) {\n          nodesToVisit.push(rawValue);\n        }\n      }\n      return this._walk(nodesToVisit);\n    },\n\n    async _walk(nodesToVisit) {\n      const nodesToRevisit = [];\n      const pendingRequests = [];\n      // DFS walk of the object graph.\n      while (nodesToVisit.length) {\n        let currentNode = nodesToVisit.pop();\n\n        // Only references or chunked streams can cause missing data exceptions.\n        if (currentNode instanceof Ref) {\n          // Skip nodes that have already been visited.\n          if (this.refSet.has(currentNode)) {\n            continue;\n          }\n          try {\n            this.refSet.put(currentNode);\n            currentNode = this.xref.fetch(currentNode);\n          } catch (ex) {\n            if (!(ex instanceof MissingDataException)) {\n              throw ex;\n            }\n            nodesToRevisit.push(currentNode);\n            pendingRequests.push({ begin: ex.begin, end: ex.end });\n          }\n        }\n        if (currentNode && currentNode.getBaseStreams) {\n          const baseStreams = currentNode.getBaseStreams();\n          let foundMissingData = false;\n          for (let i = 0, ii = baseStreams.length; i < ii; i++) {\n            const stream = baseStreams[i];\n            if (stream.allChunksLoaded && !stream.allChunksLoaded()) {\n              foundMissingData = true;\n              pendingRequests.push({ begin: stream.start, end: stream.end });\n            }\n          }\n          if (foundMissingData) {\n            nodesToRevisit.push(currentNode);\n          }\n        }\n\n        addChildren(currentNode, nodesToVisit);\n      }\n\n      if (pendingRequests.length) {\n        await this.xref.stream.manager.requestRanges(pendingRequests);\n\n        for (let i = 0, ii = nodesToRevisit.length; i < ii; i++) {\n          const node = nodesToRevisit[i];\n          // Remove any reference nodes from the current `RefSet` so they\n          // aren't skipped when we revist them.\n          if (node instanceof Ref) {\n            this.refSet.remove(node);\n          }\n        }\n        return this._walk(nodesToRevisit);\n      }\n      // Everything is loaded.\n      this.refSet = null;\n      return undefined;\n    },\n  };\n\n  return ObjectLoader;\n})();\n\nexport { Catalog, ObjectLoader, XRef, FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  Ascii85Stream,\n  AsciiHexStream,\n  FlateStream,\n  LZWStream,\n  NullStream,\n  PredictorStream,\n  RunLengthStream,\n} from \"./stream.js\";\nimport {\n  assert,\n  bytesToString,\n  FormatError,\n  info,\n  isNum,\n  StreamType,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  Cmd,\n  Dict,\n  EOF,\n  isCmd,\n  isDict,\n  isEOF,\n  isName,\n  Name,\n  Ref,\n} from \"./primitives.js\";\nimport { isWhiteSpace, MissingDataException } from \"./core_utils.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n  const bytesLength = bytes.length;\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      bytesLength < MAX_ADLER32_LENGTH,\n      'computeAdler32: Unsupported \"bytes\" length.'\n    );\n  }\n  let a = 1,\n    b = 0;\n  for (let i = 0; i < bytesLength; ++i) {\n    // No modulo required in the loop if `bytesLength < 5552`.\n    a += bytes[i] & 0xff;\n    b += a;\n  }\n  return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n  constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n    this.lexer = lexer;\n    this.xref = xref;\n    this.allowStreams = allowStreams;\n    this.recoveryMode = recoveryMode;\n\n    this.imageCache = Object.create(null);\n    this.refill();\n  }\n\n  refill() {\n    this.buf1 = this.lexer.getObj();\n    this.buf2 = this.lexer.getObj();\n  }\n\n  shift() {\n    if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n      this.buf1 = this.buf2;\n      this.buf2 = null;\n    } else {\n      this.buf1 = this.buf2;\n      this.buf2 = this.lexer.getObj();\n    }\n  }\n\n  tryShift() {\n    try {\n      this.shift();\n      return true;\n    } catch (e) {\n      if (e instanceof MissingDataException) {\n        throw e;\n      }\n      // Upon failure, the caller should reset this.lexer.pos to a known good\n      // state and call this.shift() twice to reset the buffers.\n      return false;\n    }\n  }\n\n  getObj(cipherTransform = null) {\n    const buf1 = this.buf1;\n    this.shift();\n\n    if (buf1 instanceof Cmd) {\n      switch (buf1.cmd) {\n        case \"BI\": // inline image\n          return this.makeInlineImage(cipherTransform);\n        case \"[\": // array\n          const array = [];\n          while (!isCmd(this.buf1, \"]\") && !isEOF(this.buf1)) {\n            array.push(this.getObj(cipherTransform));\n          }\n          if (isEOF(this.buf1)) {\n            if (!this.recoveryMode) {\n              throw new FormatError(\"End of file inside array\");\n            }\n            return array;\n          }\n          this.shift();\n          return array;\n        case \"<<\": // dictionary or stream\n          const dict = new Dict(this.xref);\n          while (!isCmd(this.buf1, \">>\") && !isEOF(this.buf1)) {\n            if (!isName(this.buf1)) {\n              info(\"Malformed dictionary: key must be a name object\");\n              this.shift();\n              continue;\n            }\n\n            const key = this.buf1.name;\n            this.shift();\n            if (isEOF(this.buf1)) {\n              break;\n            }\n            dict.set(key, this.getObj(cipherTransform));\n          }\n          if (isEOF(this.buf1)) {\n            if (!this.recoveryMode) {\n              throw new FormatError(\"End of file inside dictionary\");\n            }\n            return dict;\n          }\n\n          // Stream objects are not allowed inside content streams or\n          // object streams.\n          if (isCmd(this.buf2, \"stream\")) {\n            return this.allowStreams\n              ? this.makeStream(dict, cipherTransform)\n              : dict;\n          }\n          this.shift();\n          return dict;\n        default:\n          // simple object\n          return buf1;\n      }\n    }\n\n    if (Number.isInteger(buf1)) {\n      // indirect reference or integer\n      if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n        const ref = Ref.get(buf1, this.buf1);\n        this.shift();\n        this.shift();\n        return ref;\n      }\n      return buf1;\n    }\n\n    if (typeof buf1 === \"string\") {\n      if (cipherTransform) {\n        return cipherTransform.decryptString(buf1);\n      }\n      return buf1;\n    }\n\n    // simple object\n    return buf1;\n  }\n\n  /**\n   * Find the end of the stream by searching for the /EI\\s/.\n   * @returns {number} The inline stream length.\n   */\n  findDefaultInlineStreamEnd(stream) {\n    const E = 0x45,\n      I = 0x49,\n      SPACE = 0x20,\n      LF = 0xa,\n      CR = 0xd;\n    const n = 10,\n      NUL = 0x0;\n    const startPos = stream.pos;\n    let state = 0,\n      ch,\n      maybeEIPos;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else {\n        assert(state === 2);\n        if (ch === SPACE || ch === LF || ch === CR) {\n          maybeEIPos = stream.pos;\n          // Let's check that the next `n` bytes are ASCII... just to be sure.\n          const followingBytes = stream.peekBytes(n);\n          for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n            ch = followingBytes[i];\n            if (ch === NUL && followingBytes[i + 1] !== NUL) {\n              // NUL bytes are not supposed to occur *outside* of inline\n              // images, but some PDF generators violate that assumption,\n              // thus breaking the EI detection heuristics used below.\n              //\n              // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n              // since that *could* result in inline images being truncated.\n              //\n              // To attempt to address this, we'll still treat any *sequence*\n              // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n              // continue checking the `followingBytes` (fixes issue8823.pdf).\n              continue;\n            }\n            if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n              // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n              // it's binary stuff. Resetting the state.\n              state = 0;\n              break;\n            }\n          }\n          if (state === 2) {\n            break; // Finished!\n          }\n        } else {\n          state = 0;\n        }\n      }\n    }\n\n    if (ch === -1) {\n      warn(\n        \"findDefaultInlineStreamEnd: \" +\n          \"Reached the end of the stream without finding a valid EI marker\"\n      );\n      if (maybeEIPos) {\n        warn('... trying to recover by using the last \"EI\" occurrence.');\n        stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n      }\n    }\n\n    let endOffset = 4;\n    stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n    ch = stream.peekByte();\n    stream.skip(endOffset); // ... and remember to reset the stream position.\n\n    // Ensure that we don't accidentally truncate the inline image, when the\n    // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n    if (!isWhiteSpace(ch)) {\n      endOffset--;\n    }\n    return stream.pos - endOffset - startPos;\n  }\n\n  /**\n   * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findDCTDecodeInlineStreamEnd(stream) {\n    const startPos = stream.pos;\n    let foundEOI = false,\n      b,\n      markerLength;\n    while ((b = stream.getByte()) !== -1) {\n      if (b !== 0xff) {\n        // Not a valid marker.\n        continue;\n      }\n      switch (stream.getByte()) {\n        case 0x00: // Byte stuffing.\n          // 0xFF00 appears to be a very common byte sequence in JPEG images.\n          break;\n\n        case 0xff: // Fill byte.\n          // Avoid skipping a valid marker, resetting the stream position.\n          stream.skip(-1);\n          break;\n\n        case 0xd9: // EOI\n          foundEOI = true;\n          break;\n\n        case 0xc0: // SOF0\n        case 0xc1: // SOF1\n        case 0xc2: // SOF2\n        case 0xc3: // SOF3\n        /* falls through */\n        case 0xc5: // SOF5\n        case 0xc6: // SOF6\n        case 0xc7: // SOF7\n        /* falls through */\n        case 0xc9: // SOF9\n        case 0xca: // SOF10\n        case 0xcb: // SOF11\n        /* falls through */\n        case 0xcd: // SOF13\n        case 0xce: // SOF14\n        case 0xcf: // SOF15\n        /* falls through */\n        case 0xc4: // DHT\n        case 0xcc: // DAC\n        /* falls through */\n        case 0xda: // SOS\n        case 0xdb: // DQT\n        case 0xdc: // DNL\n        case 0xdd: // DRI\n        case 0xde: // DHP\n        case 0xdf: // EXP\n        /* falls through */\n        case 0xe0: // APP0\n        case 0xe1: // APP1\n        case 0xe2: // APP2\n        case 0xe3: // APP3\n        case 0xe4: // APP4\n        case 0xe5: // APP5\n        case 0xe6: // APP6\n        case 0xe7: // APP7\n        case 0xe8: // APP8\n        case 0xe9: // APP9\n        case 0xea: // APP10\n        case 0xeb: // APP11\n        case 0xec: // APP12\n        case 0xed: // APP13\n        case 0xee: // APP14\n        case 0xef: // APP15\n        /* falls through */\n        case 0xfe: // COM\n          // The marker should be followed by the length of the segment.\n          markerLength = stream.getUint16();\n          if (markerLength > 2) {\n            // |markerLength| contains the byte length of the marker segment,\n            // including its own length (2 bytes) and excluding the marker.\n            stream.skip(markerLength - 2); // Jump to the next marker.\n          } else {\n            // The marker length is invalid, resetting the stream position.\n            stream.skip(-2);\n          }\n          break;\n      }\n      if (foundEOI) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (b === -1) {\n      warn(\n        \"Inline DCTDecode image stream: \" +\n          \"EOI marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCII85DecodeInlineStreamEnd(stream) {\n    const TILDE = 0x7e,\n      GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === TILDE) {\n        const tildePos = stream.pos;\n\n        ch = stream.peekByte();\n        // Handle corrupt PDF documents which contains whitespace \"inside\" of\n        // the EOD marker (fixes issue10614.pdf).\n        while (isWhiteSpace(ch)) {\n          stream.skip();\n          ch = stream.peekByte();\n        }\n        if (ch === GT) {\n          stream.skip();\n          break;\n        }\n        // Handle corrupt PDF documents which contains truncated EOD markers,\n        // where the '>' character is missing (fixes issue11385.pdf).\n        if (stream.pos > tildePos) {\n          const maybeEI = stream.peekBytes(2);\n          if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n            break;\n          }\n        }\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCII85Decode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCIIHexDecodeInlineStreamEnd(stream) {\n    const GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === GT) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCIIHexDecode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Skip over the /EI/ for streams where we search for an EOD marker.\n   */\n  inlineStreamSkipEI(stream) {\n    const E = 0x45,\n      I = 0x49;\n    let state = 0,\n      ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else if (state === 2) {\n        break;\n      }\n    }\n  }\n\n  makeInlineImage(cipherTransform) {\n    const lexer = this.lexer;\n    const stream = lexer.stream;\n\n    // Parse dictionary.\n    const dict = new Dict(this.xref);\n    let dictLength;\n    while (!isCmd(this.buf1, \"ID\") && !isEOF(this.buf1)) {\n      if (!isName(this.buf1)) {\n        throw new FormatError(\"Dictionary key must be a name object\");\n      }\n      const key = this.buf1.name;\n      this.shift();\n      if (isEOF(this.buf1)) {\n        break;\n      }\n      dict.set(key, this.getObj(cipherTransform));\n    }\n    if (lexer.beginInlineImagePos !== -1) {\n      dictLength = stream.pos - lexer.beginInlineImagePos;\n    }\n\n    // Extract the name of the first (i.e. the current) image filter.\n    const filter = dict.get(\"Filter\", \"F\");\n    let filterName;\n    if (isName(filter)) {\n      filterName = filter.name;\n    } else if (Array.isArray(filter)) {\n      const filterZero = this.xref.fetchIfRef(filter[0]);\n      if (isName(filterZero)) {\n        filterName = filterZero.name;\n      }\n    }\n\n    // Parse image stream.\n    const startPos = stream.pos;\n    let length;\n    if (filterName === \"DCTDecode\" || filterName === \"DCT\") {\n      length = this.findDCTDecodeInlineStreamEnd(stream);\n    } else if (filterName === \"ASCII85Decode\" || filterName === \"A85\") {\n      length = this.findASCII85DecodeInlineStreamEnd(stream);\n    } else if (filterName === \"ASCIIHexDecode\" || filterName === \"AHx\") {\n      length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n    } else {\n      length = this.findDefaultInlineStreamEnd(stream);\n    }\n    let imageStream = stream.makeSubStream(startPos, length, dict);\n\n    // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n    // adler32 checksum.\n    let cacheKey;\n    if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n      const imageBytes = imageStream.getBytes();\n      imageStream.reset();\n\n      const initialStreamPos = stream.pos;\n      // Set the stream position to the beginning of the dictionary data...\n      stream.pos = lexer.beginInlineImagePos;\n      // ... and fetch the bytes of the *entire* dictionary.\n      const dictBytes = stream.getBytes(dictLength);\n      // Finally, don't forget to reset the stream position.\n      stream.pos = initialStreamPos;\n\n      cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n      const cacheEntry = this.imageCache[cacheKey];\n      if (cacheEntry !== undefined) {\n        this.buf2 = Cmd.get(\"EI\");\n        this.shift();\n\n        cacheEntry.reset();\n        return cacheEntry;\n      }\n    }\n\n    if (cipherTransform) {\n      imageStream = cipherTransform.createStream(imageStream, length);\n    }\n\n    imageStream = this.filter(imageStream, dict, length);\n    imageStream.dict = dict;\n    if (cacheKey !== undefined) {\n      imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n      this.imageCache[cacheKey] = imageStream;\n    }\n\n    this.buf2 = Cmd.get(\"EI\");\n    this.shift();\n\n    return imageStream;\n  }\n\n  _findStreamLength(startPos, signature) {\n    const { stream } = this.lexer;\n    stream.pos = startPos;\n\n    const SCAN_BLOCK_LENGTH = 2048;\n    const signatureLength = signature.length;\n\n    while (stream.pos < stream.end) {\n      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      const scanLength = scanBytes.length - signatureLength;\n\n      if (scanLength <= 0) {\n        break;\n      }\n      let pos = 0;\n      while (pos < scanLength) {\n        let j = 0;\n        while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n          j++;\n        }\n        if (j >= signatureLength) {\n          // `signature` found.\n          stream.pos += pos;\n          return stream.pos - startPos;\n        }\n        pos++;\n      }\n      stream.pos += scanLength;\n    }\n    return -1;\n  }\n\n  makeStream(dict, cipherTransform) {\n    const lexer = this.lexer;\n    let stream = lexer.stream;\n\n    // Get the stream's start position.\n    lexer.skipToNextLine();\n    const startPos = stream.pos - 1;\n\n    // Get the length.\n    let length = dict.get(\"Length\");\n    if (!Number.isInteger(length)) {\n      info(`Bad length \"${length}\" in stream`);\n      length = 0;\n    }\n\n    // Skip over the stream data.\n    stream.pos = startPos + length;\n    lexer.nextChar();\n\n    // Shift '>>' and check whether the new object marks the end of the stream.\n    if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n      this.shift(); // 'stream'\n    } else {\n      // Bad stream length, scanning for endstream command.\n      // prettier-ignore\n      const ENDSTREAM_SIGNATURE = new Uint8Array([\n        0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]);\n      let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n      if (actualLength < 0) {\n        // Only allow limited truncation of the endstream signature,\n        // to prevent false positives.\n        const MAX_TRUNCATION = 1;\n        // Check if the PDF generator included truncated endstream commands,\n        // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n        for (let i = 1; i <= MAX_TRUNCATION; i++) {\n          const end = ENDSTREAM_SIGNATURE.length - i;\n          const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n          const maybeLength = this._findStreamLength(\n            startPos,\n            TRUNCATED_SIGNATURE\n          );\n          if (maybeLength >= 0) {\n            // Ensure that the byte immediately following the truncated\n            // endstream command is a space, to prevent false positives.\n            const lastByte = stream.peekBytes(end + 1)[end];\n            if (!isWhiteSpace(lastByte)) {\n              break;\n            }\n            info(\n              `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n                \"searching for endstream command.\"\n            );\n            actualLength = maybeLength;\n            break;\n          }\n        }\n\n        if (actualLength < 0) {\n          throw new FormatError(\"Missing endstream command.\");\n        }\n      }\n      length = actualLength;\n\n      lexer.nextChar();\n      this.shift();\n      this.shift();\n    }\n    this.shift(); // 'endstream'\n\n    stream = stream.makeSubStream(startPos, length, dict);\n    if (cipherTransform) {\n      stream = cipherTransform.createStream(stream, length);\n    }\n    stream = this.filter(stream, dict, length);\n    stream.dict = dict;\n    return stream;\n  }\n\n  filter(stream, dict, length) {\n    let filter = dict.get(\"Filter\", \"F\");\n    let params = dict.get(\"DecodeParms\", \"DP\");\n\n    if (isName(filter)) {\n      if (Array.isArray(params)) {\n        warn(\n          \"/DecodeParms should not contain an Array, \" +\n            \"when /Filter contains a Name.\"\n        );\n      }\n      return this.makeFilter(stream, filter.name, length, params);\n    }\n\n    let maybeLength = length;\n    if (Array.isArray(filter)) {\n      const filterArray = filter;\n      const paramsArray = params;\n      for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n        filter = this.xref.fetchIfRef(filterArray[i]);\n        if (!isName(filter)) {\n          throw new FormatError(`Bad filter name \"${filter}\"`);\n        }\n\n        params = null;\n        if (Array.isArray(paramsArray) && i in paramsArray) {\n          params = this.xref.fetchIfRef(paramsArray[i]);\n        }\n        stream = this.makeFilter(stream, filter.name, maybeLength, params);\n        // After the first stream the `length` variable is invalid.\n        maybeLength = null;\n      }\n    }\n    return stream;\n  }\n\n  makeFilter(stream, name, maybeLength, params) {\n    // Since the 'Length' entry in the stream dictionary can be completely\n    // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n    // when we can be absolutely certain that it actually is empty.\n    if (maybeLength === 0) {\n      warn(`Empty \"${name}\" stream.`);\n      return new NullStream();\n    }\n\n    try {\n      const xrefStreamStats = this.xref.stats.streamTypes;\n      if (name === \"FlateDecode\" || name === \"Fl\") {\n        xrefStreamStats[StreamType.FLATE] = true;\n        if (params) {\n          return new PredictorStream(\n            new FlateStream(stream, maybeLength),\n            maybeLength,\n            params\n          );\n        }\n        return new FlateStream(stream, maybeLength);\n      }\n      if (name === \"LZWDecode\" || name === \"LZW\") {\n        xrefStreamStats[StreamType.LZW] = true;\n        let earlyChange = 1;\n        if (params) {\n          if (params.has(\"EarlyChange\")) {\n            earlyChange = params.get(\"EarlyChange\");\n          }\n          return new PredictorStream(\n            new LZWStream(stream, maybeLength, earlyChange),\n            maybeLength,\n            params\n          );\n        }\n        return new LZWStream(stream, maybeLength, earlyChange);\n      }\n      if (name === \"DCTDecode\" || name === \"DCT\") {\n        xrefStreamStats[StreamType.DCT] = true;\n        return new JpegStream(stream, maybeLength, stream.dict, params);\n      }\n      if (name === \"JPXDecode\" || name === \"JPX\") {\n        xrefStreamStats[StreamType.JPX] = true;\n        return new JpxStream(stream, maybeLength, stream.dict, params);\n      }\n      if (name === \"ASCII85Decode\" || name === \"A85\") {\n        xrefStreamStats[StreamType.A85] = true;\n        return new Ascii85Stream(stream, maybeLength);\n      }\n      if (name === \"ASCIIHexDecode\" || name === \"AHx\") {\n        xrefStreamStats[StreamType.AHX] = true;\n        return new AsciiHexStream(stream, maybeLength);\n      }\n      if (name === \"CCITTFaxDecode\" || name === \"CCF\") {\n        xrefStreamStats[StreamType.CCF] = true;\n        return new CCITTFaxStream(stream, maybeLength, params);\n      }\n      if (name === \"RunLengthDecode\" || name === \"RL\") {\n        xrefStreamStats[StreamType.RLX] = true;\n        return new RunLengthStream(stream, maybeLength);\n      }\n      if (name === \"JBIG2Decode\") {\n        xrefStreamStats[StreamType.JBIG] = true;\n        return new Jbig2Stream(stream, maybeLength, stream.dict, params);\n      }\n      warn(`Filter \"${name}\" is not supported.`);\n      return stream;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Invalid stream: \"${ex}\"`);\n      return new NullStream();\n    }\n  }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n  1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n  1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // fx\n];\n\nfunction toHexDigit(ch) {\n  if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n    return ch & 0x0f;\n  }\n  if (\n    (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n    (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n  ) {\n    return (ch & 0x0f) + 9;\n  }\n  return -1;\n}\n\nclass Lexer {\n  constructor(stream, knownCommands = null) {\n    this.stream = stream;\n    this.nextChar();\n\n    // While lexing, we build up many strings one char at a time. Using += for\n    // this can result in lots of garbage strings. It's better to build an\n    // array of single-char strings and then join() them together at the end.\n    // And reusing a single array (i.e. |this.strBuf|) over and over for this\n    // purpose uses less memory than using a new array for each string.\n    this.strBuf = [];\n\n    // The PDFs might have \"glued\" commands with other commands, operands or\n    // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n    // commands and their prefixes. The prefixes are built the following way:\n    // if there a command that is a prefix of the other valid command or\n    // literal (e.g. 'f' and 'false') the following prefixes must be included,\n    // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n    // other commands or literals as a prefix. The knowCommands is optional.\n    this.knownCommands = knownCommands;\n\n    this._hexStringNumWarn = 0;\n    this.beginInlineImagePos = -1;\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  peekChar() {\n    return this.stream.peekByte();\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    let eNotation = false;\n    let divideBy = 0; // Different from 0 if it's a floating point value.\n    let sign = 0;\n\n    if (ch === /* '-' = */ 0x2d) {\n      sign = -1;\n      ch = this.nextChar();\n\n      if (ch === /* '-' = */ 0x2d) {\n        // Ignore double negative (this is consistent with Adobe Reader).\n        ch = this.nextChar();\n      }\n    } else if (ch === /* '+' = */ 0x2b) {\n      sign = 1;\n      ch = this.nextChar();\n    }\n    if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n      // Ignore line-breaks (this is consistent with Adobe Reader).\n      do {\n        ch = this.nextChar();\n      } while (ch === 0x0a || ch === 0x0d);\n    }\n    if (ch === /* '.' = */ 0x2e) {\n      divideBy = 10;\n      ch = this.nextChar();\n    }\n    if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n      if (\n        divideBy === 10 &&\n        sign === 0 &&\n        (isWhiteSpace(ch) || ch === /* EOF = */ -1)\n      ) {\n        // This is consistent with Adobe Reader (fixes issue9252.pdf).\n        warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n        return 0;\n      }\n      throw new FormatError(\n        `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n      );\n    }\n\n    sign = sign || 1;\n    let baseValue = ch - 0x30; // '0'\n    let powerValue = 0;\n    let powerValueSign = 1;\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        const currentDigit = ch - 0x30; // '0'\n        if (eNotation) {\n          // We are after an 'e' or 'E'.\n          powerValue = powerValue * 10 + currentDigit;\n        } else {\n          if (divideBy !== 0) {\n            // We are after a point.\n            divideBy *= 10;\n          }\n          baseValue = baseValue * 10 + currentDigit;\n        }\n      } else if (ch === /* '.' = */ 0x2e) {\n        if (divideBy === 0) {\n          divideBy = 1;\n        } else {\n          // A number can have only one dot.\n          break;\n        }\n      } else if (ch === /* '-' = */ 0x2d) {\n        // Ignore minus signs in the middle of numbers to match\n        // Adobe's behavior.\n        warn(\"Badly formatted number: minus sign in the middle\");\n      } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n        // 'E' can be either a scientific notation or the beginning of a new\n        // operator.\n        ch = this.peekChar();\n        if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n          powerValueSign = ch === 0x2d ? -1 : 1;\n          this.nextChar(); // Consume the sign character.\n        } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n          // The 'E' must be the beginning of a new operator.\n          break;\n        }\n        eNotation = true;\n      } else {\n        // The last character doesn't belong to us.\n        break;\n      }\n    }\n\n    if (divideBy !== 0) {\n      baseValue /= divideBy;\n    }\n    if (eNotation) {\n      baseValue *= 10 ** (powerValueSign * powerValue);\n    }\n    return sign * baseValue;\n  }\n\n  getString() {\n    let numParen = 1;\n    let done = false;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    let ch = this.nextChar();\n    while (true) {\n      let charBuffered = false;\n      switch (ch | 0) {\n        case -1:\n          warn(\"Unterminated string\");\n          done = true;\n          break;\n        case 0x28: // '('\n          ++numParen;\n          strBuf.push(\"(\");\n          break;\n        case 0x29: // ')'\n          if (--numParen === 0) {\n            this.nextChar(); // consume strings ')'\n            done = true;\n          } else {\n            strBuf.push(\")\");\n          }\n          break;\n        case 0x5c: // '\\\\'\n          ch = this.nextChar();\n          switch (ch) {\n            case -1:\n              warn(\"Unterminated string\");\n              done = true;\n              break;\n            case 0x6e: // 'n'\n              strBuf.push(\"\\n\");\n              break;\n            case 0x72: // 'r'\n              strBuf.push(\"\\r\");\n              break;\n            case 0x74: // 't'\n              strBuf.push(\"\\t\");\n              break;\n            case 0x62: // 'b'\n              strBuf.push(\"\\b\");\n              break;\n            case 0x66: // 'f'\n              strBuf.push(\"\\f\");\n              break;\n            case 0x5c: // '\\'\n            case 0x28: // '('\n            case 0x29: // ')'\n              strBuf.push(String.fromCharCode(ch));\n              break;\n            case 0x30: // '0'\n            case 0x31: // '1'\n            case 0x32: // '2'\n            case 0x33: // '3'\n            case 0x34: // '4'\n            case 0x35: // '5'\n            case 0x36: // '6'\n            case 0x37: // '7'\n              let x = ch & 0x0f;\n              ch = this.nextChar();\n              charBuffered = true;\n              if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n                x = (x << 3) + (ch & 0x0f);\n                ch = this.nextChar();\n                if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n                  charBuffered = false;\n                  x = (x << 3) + (ch & 0x0f);\n                }\n              }\n              strBuf.push(String.fromCharCode(x));\n              break;\n            case 0x0d: // CR\n              if (this.peekChar() === /* LF = */ 0x0a) {\n                this.nextChar();\n              }\n              break;\n            case 0x0a: // LF\n              break;\n            default:\n              strBuf.push(String.fromCharCode(ch));\n              break;\n          }\n          break;\n        default:\n          strBuf.push(String.fromCharCode(ch));\n          break;\n      }\n      if (done) {\n        break;\n      }\n      if (!charBuffered) {\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getName() {\n    let ch, previousCh;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      if (ch === /* '#' = */ 0x23) {\n        ch = this.nextChar();\n        if (specialChars[ch]) {\n          warn(\n            \"Lexer_getName: \" +\n              \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n          );\n          strBuf.push(\"#\");\n          break;\n        }\n        const x = toHexDigit(ch);\n        if (x !== -1) {\n          previousCh = ch;\n          ch = this.nextChar();\n          const x2 = toHexDigit(ch);\n          if (x2 === -1) {\n            warn(\n              `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n                \"in hexadecimal number.\"\n            );\n            strBuf.push(\"#\", String.fromCharCode(previousCh));\n            if (specialChars[ch]) {\n              break;\n            }\n            strBuf.push(String.fromCharCode(ch));\n            continue;\n          }\n          strBuf.push(String.fromCharCode((x << 4) | x2));\n        } else {\n          strBuf.push(\"#\", String.fromCharCode(ch));\n        }\n      } else {\n        strBuf.push(String.fromCharCode(ch));\n      }\n    }\n    if (strBuf.length > 127) {\n      warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n    }\n    return Name.get(strBuf.join(\"\"));\n  }\n\n  /**\n   * @private\n   */\n  _hexStringWarn(ch) {\n    const MAX_HEX_STRING_NUM_WARN = 5;\n\n    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n      warn(\"getHexString - ignoring additional invalid characters.\");\n      return;\n    }\n    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n      // Limit the number of warning messages printed for a `this.getHexString`\n      // invocation, since corrupt PDF documents may otherwise spam the console\n      // enough to affect general performance negatively.\n      return;\n    }\n    warn(`getHexString - ignoring invalid character: ${ch}`);\n  }\n\n  getHexString() {\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    let ch = this.currentChar;\n    let isFirstHex = true;\n    let firstDigit, secondDigit;\n    this._hexStringNumWarn = 0;\n\n    while (true) {\n      if (ch < 0) {\n        warn(\"Unterminated hex string\");\n        break;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.nextChar();\n        break;\n      } else if (specialChars[ch] === 1) {\n        ch = this.nextChar();\n        continue;\n      } else {\n        if (isFirstHex) {\n          firstDigit = toHexDigit(ch);\n          if (firstDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n        } else {\n          secondDigit = toHexDigit(ch);\n          if (secondDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n          strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n        }\n        isFirstHex = !isFirstHex;\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getObj() {\n    // Skip whitespace and comments.\n    let comment = false;\n    let ch = this.currentChar;\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n      if (comment) {\n        if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (specialChars[ch] !== 1) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n\n    // Start reading a token.\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return this.getNumber();\n      case 0x28: // '('\n        return this.getString();\n      case 0x2f: // '/'\n        return this.getName();\n      // array punctuation\n      case 0x5b: // '['\n        this.nextChar();\n        return Cmd.get(\"[\");\n      case 0x5d: // ']'\n        this.nextChar();\n        return Cmd.get(\"]\");\n      // hex string or dict punctuation\n      case 0x3c: // '<'\n        ch = this.nextChar();\n        if (ch === 0x3c) {\n          // dict punctuation\n          this.nextChar();\n          return Cmd.get(\"<<\");\n        }\n        return this.getHexString();\n      // dict punctuation\n      case 0x3e: // '>'\n        ch = this.nextChar();\n        if (ch === 0x3e) {\n          this.nextChar();\n          return Cmd.get(\">>\");\n        }\n        return Cmd.get(\">\");\n      case 0x7b: // '{'\n        this.nextChar();\n        return Cmd.get(\"{\");\n      case 0x7d: // '}'\n        this.nextChar();\n        return Cmd.get(\"}\");\n      case 0x29: // ')'\n        // Consume the current character in order to avoid permanently hanging\n        // the worker thread if `Lexer.getObject` is called from within a loop\n        // containing try-catch statements, since we would otherwise attempt\n        // to parse the *same* character over and over (fixes issue8061.pdf).\n        this.nextChar();\n        throw new FormatError(`Illegal character: ${ch}`);\n    }\n\n    // Start reading a command.\n    let str = String.fromCharCode(ch);\n    const knownCommands = this.knownCommands;\n    let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      // Stop if a known command is found and next character does not make\n      // the string a command.\n      const possibleCommand = str + String.fromCharCode(ch);\n      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n        break;\n      }\n      if (str.length === 128) {\n        throw new FormatError(`Command token too long: ${str.length}`);\n      }\n      str = possibleCommand;\n      knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    }\n    if (str === \"true\") {\n      return true;\n    }\n    if (str === \"false\") {\n      return false;\n    }\n    if (str === \"null\") {\n      return null;\n    }\n\n    if (str === \"BI\") {\n      // Keep track of the current stream position, since it's needed in order\n      // to correctly cache inline images; see `Parser.makeInlineImage`.\n      this.beginInlineImagePos = this.stream.pos;\n    }\n\n    return Cmd.get(str);\n  }\n\n  skipToNextLine() {\n    let ch = this.currentChar;\n    while (ch >= 0) {\n      if (ch === /* CR = */ 0x0d) {\n        ch = this.nextChar();\n        if (ch === /* LF = */ 0x0a) {\n          this.nextChar();\n        }\n        break;\n      } else if (ch === /* LF = */ 0x0a) {\n        this.nextChar();\n        break;\n      }\n      ch = this.nextChar();\n    }\n  }\n}\n\nclass Linearization {\n  static create(stream) {\n    function getInt(linDict, name, allowZeroValue = false) {\n      const obj = linDict.get(name);\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n        return obj;\n      }\n      throw new Error(\n        `The \"${name}\" parameter in the linearization ` +\n          \"dictionary is invalid.\"\n      );\n    }\n\n    function getHints(linDict) {\n      const hints = linDict.get(\"H\");\n      let hintsLength;\n\n      if (\n        Array.isArray(hints) &&\n        ((hintsLength = hints.length) === 2 || hintsLength === 4)\n      ) {\n        for (let index = 0; index < hintsLength; index++) {\n          const hint = hints[index];\n          if (!(Number.isInteger(hint) && hint > 0)) {\n            throw new Error(\n              `Hint (${index}) in the linearization dictionary is invalid.`\n            );\n          }\n        }\n        return hints;\n      }\n      throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n    }\n\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: null,\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n    const linDict = parser.getObj();\n    let obj, length;\n    if (\n      !(\n        Number.isInteger(obj1) &&\n        Number.isInteger(obj2) &&\n        isCmd(obj3, \"obj\") &&\n        isDict(linDict) &&\n        isNum((obj = linDict.get(\"Linearized\"))) &&\n        obj > 0\n      )\n    ) {\n      return null; // No valid linearization dictionary found.\n    } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n      throw new Error(\n        'The \"L\" parameter in the linearization dictionary ' +\n          \"does not equal the stream length.\"\n      );\n    }\n    return {\n      length,\n      hints: getHints(linDict),\n      objectNumberFirst: getInt(linDict, \"O\"),\n      endFirst: getInt(linDict, \"E\"),\n      numPages: getInt(linDict, \"N\"),\n      mainXRefEntriesOffset: getInt(linDict, \"T\"),\n      pageFirst: linDict.has(\"P\")\n        ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n        : 0,\n    };\n  }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, stringToBytes, unreachable } from \"../shared/util.js\";\nimport { isDict } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nvar Stream = (function StreamClosure() {\n  function Stream(arrayBuffer, start, length, dict) {\n    this.bytes =\n      arrayBuffer instanceof Uint8Array\n        ? arrayBuffer\n        : new Uint8Array(arrayBuffer);\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = start + length || this.bytes.length;\n    this.dict = dict;\n  }\n\n  // required methods for a stream. if a particular stream does not\n  // implement these, an error should be thrown\n  Stream.prototype = {\n    get length() {\n      return this.end - this.start;\n    },\n    get isEmpty() {\n      return this.length === 0;\n    },\n    getByte: function Stream_getByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.bytes[this.pos++];\n    },\n    getUint16: function Stream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function Stream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    // Returns subarray of original buffer, should only be read.\n    getBytes(length, forceClamped = false) {\n      var bytes = this.bytes;\n      var pos = this.pos;\n      var strEnd = this.end;\n\n      if (!length) {\n        const subarray = bytes.subarray(pos, strEnd);\n        // `this.bytes` is always a `Uint8Array` here.\n        return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n      }\n      var end = pos + length;\n      if (end > strEnd) {\n        end = strEnd;\n      }\n      this.pos = end;\n      const subarray = bytes.subarray(pos, end);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    },\n    peekByte: function Stream_peekByte() {\n      var peekedByte = this.getByte();\n      if (peekedByte !== -1) {\n        this.pos--;\n      }\n      return peekedByte;\n    },\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n\n    getByteRange(begin, end) {\n      if (begin < 0) {\n        begin = 0;\n      }\n      if (end > this.end) {\n        end = this.end;\n      }\n      return this.bytes.subarray(begin, end);\n    },\n\n    skip: function Stream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function Stream_reset() {\n      this.pos = this.start;\n    },\n    moveStart: function Stream_moveStart() {\n      this.start = this.pos;\n    },\n    makeSubStream: function Stream_makeSubStream(start, length, dict) {\n      return new Stream(this.bytes.buffer, start, length, dict);\n    },\n  };\n\n  return Stream;\n})();\n\nvar StringStream = (function StringStreamClosure() {\n  function StringStream(str) {\n    const bytes = stringToBytes(str);\n    Stream.call(this, bytes);\n  }\n\n  StringStream.prototype = Stream.prototype;\n\n  return StringStream;\n})();\n\n// super class for the decoding streams\nvar DecodeStream = (function DecodeStreamClosure() {\n  // Lots of DecodeStreams are created whose buffers are never used.  For these\n  // we share a single empty buffer. This is (a) space-efficient and (b) avoids\n  // having special cases that would be required if we used |null| for an empty\n  // buffer.\n  var emptyBuffer = new Uint8Array(0);\n\n  function DecodeStream(maybeMinBufferLength) {\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n    this.pos = 0;\n    this.bufferLength = 0;\n    this.eof = false;\n    this.buffer = emptyBuffer;\n    this.minBufferLength = 512;\n    if (maybeMinBufferLength) {\n      // Compute the first power of two that is as big as maybeMinBufferLength.\n      while (this.minBufferLength < maybeMinBufferLength) {\n        this.minBufferLength *= 2;\n      }\n    }\n  }\n\n  DecodeStream.prototype = {\n    get isEmpty() {\n      while (!this.eof && this.bufferLength === 0) {\n        this.readBlock();\n      }\n      return this.bufferLength === 0;\n    },\n    ensureBuffer: function DecodeStream_ensureBuffer(requested) {\n      var buffer = this.buffer;\n      if (requested <= buffer.byteLength) {\n        return buffer;\n      }\n      var size = this.minBufferLength;\n      while (size < requested) {\n        size *= 2;\n      }\n      var buffer2 = new Uint8Array(size);\n      buffer2.set(buffer);\n      return (this.buffer = buffer2);\n    },\n    getByte: function DecodeStream_getByte() {\n      var pos = this.pos;\n      while (this.bufferLength <= pos) {\n        if (this.eof) {\n          return -1;\n        }\n        this.readBlock();\n      }\n      return this.buffer[this.pos++];\n    },\n    getUint16: function DecodeStream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function DecodeStream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    getBytes(length, forceClamped = false) {\n      var end,\n        pos = this.pos;\n\n      if (length) {\n        this.ensureBuffer(pos + length);\n        end = pos + length;\n\n        while (!this.eof && this.bufferLength < end) {\n          this.readBlock();\n        }\n        var bufEnd = this.bufferLength;\n        if (end > bufEnd) {\n          end = bufEnd;\n        }\n      } else {\n        while (!this.eof) {\n          this.readBlock();\n        }\n        end = this.bufferLength;\n      }\n\n      this.pos = end;\n      const subarray = this.buffer.subarray(pos, end);\n      // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n      return forceClamped && !(subarray instanceof Uint8ClampedArray)\n        ? new Uint8ClampedArray(subarray)\n        : subarray;\n    },\n    peekByte: function DecodeStream_peekByte() {\n      var peekedByte = this.getByte();\n      if (peekedByte !== -1) {\n        this.pos--;\n      }\n      return peekedByte;\n    },\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n    makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {\n      var end = start + length;\n      while (this.bufferLength <= end && !this.eof) {\n        this.readBlock();\n      }\n      return new Stream(this.buffer, start, length, dict);\n    },\n\n    getByteRange(begin, end) {\n      unreachable(\"Should not call DecodeStream.getByteRange\");\n    },\n\n    skip: function DecodeStream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function DecodeStream_reset() {\n      this.pos = 0;\n    },\n    getBaseStreams: function DecodeStream_getBaseStreams() {\n      if (this.str && this.str.getBaseStreams) {\n        return this.str.getBaseStreams();\n      }\n      return [];\n    },\n  };\n\n  return DecodeStream;\n})();\n\nvar StreamsSequenceStream = (function StreamsSequenceStreamClosure() {\n  function StreamsSequenceStream(streams) {\n    this.streams = streams;\n\n    let maybeLength = 0;\n    for (let i = 0, ii = streams.length; i < ii; i++) {\n      const stream = streams[i];\n      if (stream instanceof DecodeStream) {\n        maybeLength += stream._rawMinBufferLength;\n      } else {\n        maybeLength += stream.length;\n      }\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);\n\n  StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() {\n    var streams = this.streams;\n    if (streams.length === 0) {\n      this.eof = true;\n      return;\n    }\n    var stream = streams.shift();\n    var chunk = stream.getBytes();\n    var bufferLength = this.bufferLength;\n    var newLength = bufferLength + chunk.length;\n    var buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  };\n\n  StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() {\n    var baseStreams = [];\n    for (var i = 0, ii = this.streams.length; i < ii; i++) {\n      var stream = this.streams[i];\n      if (stream.getBaseStreams) {\n        baseStreams.push(...stream.getBaseStreams());\n      }\n    }\n    return baseStreams;\n  };\n\n  return StreamsSequenceStream;\n})();\n\nvar FlateStream = (function FlateStreamClosure() {\n  // prettier-ignore\n  var codeLenCodeMap = new Int32Array([\n    16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15\n  ]);\n\n  // prettier-ignore\n  var lengthDecode = new Int32Array([\n    0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n    0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n    0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n    0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102\n  ]);\n\n  // prettier-ignore\n  var distDecode = new Int32Array([\n    0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n    0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n    0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n    0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001\n  ]);\n\n  // prettier-ignore\n  var fixedLitCodeTab = [new Int32Array([\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff\n  ]), 9];\n\n  // prettier-ignore\n  var fixedDistCodeTab = [new Int32Array([\n    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000\n  ]), 5];\n\n  function FlateStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    var cmf = str.getByte();\n    var flg = str.getByte();\n    if (cmf === -1 || flg === -1) {\n      throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n    }\n    if ((cmf & 0x0f) !== 0x08) {\n      throw new FormatError(\n        `Unknown compression method in flate stream: ${cmf}, ${flg}`\n      );\n    }\n    if (((cmf << 8) + flg) % 31 !== 0) {\n      throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n    }\n    if (flg & 0x20) {\n      throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n    }\n\n    this.codeSize = 0;\n    this.codeBuf = 0;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  FlateStream.prototype = Object.create(DecodeStream.prototype);\n\n  FlateStream.prototype.getBits = function FlateStream_getBits(bits) {\n    var str = this.str;\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n\n    var b;\n    while (codeSize < bits) {\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad encoding in flate stream\");\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    b = codeBuf & ((1 << bits) - 1);\n    this.codeBuf = codeBuf >> bits;\n    this.codeSize = codeSize -= bits;\n\n    return b;\n  };\n\n  FlateStream.prototype.getCode = function FlateStream_getCode(table) {\n    var str = this.str;\n    var codes = table[0];\n    var maxLen = table[1];\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n\n    var b;\n    while (codeSize < maxLen) {\n      if ((b = str.getByte()) === -1) {\n        // premature end of stream. code might however still be valid.\n        // codeSize < codeLen check below guards against incomplete codeVal.\n        break;\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    var code = codes[codeBuf & ((1 << maxLen) - 1)];\n    var codeLen = code >> 16;\n    var codeVal = code & 0xffff;\n    if (codeLen < 1 || codeSize < codeLen) {\n      throw new FormatError(\"Bad encoding in flate stream\");\n    }\n    this.codeBuf = codeBuf >> codeLen;\n    this.codeSize = codeSize - codeLen;\n    return codeVal;\n  };\n\n  FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(\n    lengths\n  ) {\n    var n = lengths.length;\n\n    // find max code length\n    var maxLen = 0;\n    var i;\n    for (i = 0; i < n; ++i) {\n      if (lengths[i] > maxLen) {\n        maxLen = lengths[i];\n      }\n    }\n\n    // build the table\n    var size = 1 << maxLen;\n    var codes = new Int32Array(size);\n    for (\n      var len = 1, code = 0, skip = 2;\n      len <= maxLen;\n      ++len, code <<= 1, skip <<= 1\n    ) {\n      for (var val = 0; val < n; ++val) {\n        if (lengths[val] === len) {\n          // bit-reverse the code\n          var code2 = 0;\n          var t = code;\n          for (i = 0; i < len; ++i) {\n            code2 = (code2 << 1) | (t & 1);\n            t >>= 1;\n          }\n\n          // fill the table entries\n          for (i = code2; i < size; i += skip) {\n            codes[i] = (len << 16) | val;\n          }\n          ++code;\n        }\n      }\n    }\n\n    return [codes, maxLen];\n  };\n\n  FlateStream.prototype.readBlock = function FlateStream_readBlock() {\n    var buffer, len;\n    var str = this.str;\n    // read block header\n    var hdr = this.getBits(3);\n    if (hdr & 1) {\n      this.eof = true;\n    }\n    hdr >>= 1;\n\n    if (hdr === 0) {\n      // uncompressed block\n      var b;\n\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      var blockLen = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      blockLen |= b << 8;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      var check = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      check |= b << 8;\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n        // Ignoring error for bad \"empty\" block (see issue 1277)\n        throw new FormatError(\"Bad uncompressed block length in flate stream\");\n      }\n\n      this.codeBuf = 0;\n      this.codeSize = 0;\n\n      const bufferLength = this.bufferLength,\n        end = bufferLength + blockLen;\n      buffer = this.ensureBuffer(end);\n      this.bufferLength = end;\n\n      if (blockLen === 0) {\n        if (str.peekByte() === -1) {\n          this.eof = true;\n        }\n      } else {\n        const block = str.getBytes(blockLen);\n        buffer.set(block, bufferLength);\n        if (block.length < blockLen) {\n          this.eof = true;\n        }\n      }\n      return;\n    }\n\n    var litCodeTable;\n    var distCodeTable;\n    if (hdr === 1) {\n      // compressed block, fixed codes\n      litCodeTable = fixedLitCodeTab;\n      distCodeTable = fixedDistCodeTab;\n    } else if (hdr === 2) {\n      // compressed block, dynamic codes\n      var numLitCodes = this.getBits(5) + 257;\n      var numDistCodes = this.getBits(5) + 1;\n      var numCodeLenCodes = this.getBits(4) + 4;\n\n      // build the code lengths code table\n      var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n      var i;\n      for (i = 0; i < numCodeLenCodes; ++i) {\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n      }\n      var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n      // build the literal and distance code tables\n      len = 0;\n      i = 0;\n      var codes = numLitCodes + numDistCodes;\n      var codeLengths = new Uint8Array(codes);\n      var bitsLength, bitsOffset, what;\n      while (i < codes) {\n        var code = this.getCode(codeLenCodeTab);\n        if (code === 16) {\n          bitsLength = 2;\n          bitsOffset = 3;\n          what = len;\n        } else if (code === 17) {\n          bitsLength = 3;\n          bitsOffset = 3;\n          what = len = 0;\n        } else if (code === 18) {\n          bitsLength = 7;\n          bitsOffset = 11;\n          what = len = 0;\n        } else {\n          codeLengths[i++] = len = code;\n          continue;\n        }\n\n        var repeatLength = this.getBits(bitsLength) + bitsOffset;\n        while (repeatLength-- > 0) {\n          codeLengths[i++] = what;\n        }\n      }\n\n      litCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(0, numLitCodes)\n      );\n      distCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(numLitCodes, codes)\n      );\n    } else {\n      throw new FormatError(\"Unknown block type in flate stream\");\n    }\n\n    buffer = this.buffer;\n    var limit = buffer ? buffer.length : 0;\n    var pos = this.bufferLength;\n    while (true) {\n      var code1 = this.getCode(litCodeTable);\n      if (code1 < 256) {\n        if (pos + 1 >= limit) {\n          buffer = this.ensureBuffer(pos + 1);\n          limit = buffer.length;\n        }\n        buffer[pos++] = code1;\n        continue;\n      }\n      if (code1 === 256) {\n        this.bufferLength = pos;\n        return;\n      }\n      code1 -= 257;\n      code1 = lengthDecode[code1];\n      var code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      len = (code1 & 0xffff) + code2;\n      code1 = this.getCode(distCodeTable);\n      code1 = distDecode[code1];\n      code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      var dist = (code1 & 0xffff) + code2;\n      if (pos + len >= limit) {\n        buffer = this.ensureBuffer(pos + len);\n        limit = buffer.length;\n      }\n      for (var k = 0; k < len; ++k, ++pos) {\n        buffer[pos] = buffer[pos - dist];\n      }\n    }\n  };\n\n  return FlateStream;\n})();\n\nvar PredictorStream = (function PredictorStreamClosure() {\n  function PredictorStream(str, maybeLength, params) {\n    if (!isDict(params)) {\n      return str; // no prediction\n    }\n    var predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n    if (predictor <= 1) {\n      return str; // no prediction\n    }\n    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n      throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n\n    if (predictor === 2) {\n      this.readBlock = this.readBlockTiff;\n    } else {\n      this.readBlock = this.readBlockPng;\n    }\n\n    this.str = str;\n    this.dict = str.dict;\n\n    var colors = (this.colors = params.get(\"Colors\") || 1);\n    var bits = (this.bits = params.get(\"BitsPerComponent\") || 8);\n    var columns = (this.columns = params.get(\"Columns\") || 1);\n\n    this.pixBytes = (colors * bits + 7) >> 3;\n    this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n    DecodeStream.call(this, maybeLength);\n    return this;\n  }\n\n  PredictorStream.prototype = Object.create(DecodeStream.prototype);\n\n  PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() {\n    var rowBytes = this.rowBytes;\n\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    var bits = this.bits;\n    var colors = this.colors;\n\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    var inbuf = 0,\n      outbuf = 0;\n    var inbits = 0,\n      outbits = 0;\n    var pos = bufferLength;\n    var i;\n\n    if (bits === 1 && colors === 1) {\n      // Optimized version of the loop in the \"else\"-branch\n      // for 1 bit-per-component and 1 color TIFF images.\n      for (i = 0; i < rowBytes; ++i) {\n        var c = rawBytes[i] ^ inbuf;\n        c ^= c >> 1;\n        c ^= c >> 2;\n        c ^= c >> 4;\n        inbuf = (c & 1) << 7;\n        buffer[pos++] = c;\n      }\n    } else if (bits === 8) {\n      for (i = 0; i < colors; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; ++i) {\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\n        pos++;\n      }\n    } else if (bits === 16) {\n      var bytesPerPixel = colors * 2;\n      for (i = 0; i < bytesPerPixel; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; i += 2) {\n        var sum =\n          ((rawBytes[i] & 0xff) << 8) +\n          (rawBytes[i + 1] & 0xff) +\n          ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n          (buffer[pos - bytesPerPixel + 1] & 0xff);\n        buffer[pos++] = (sum >> 8) & 0xff;\n        buffer[pos++] = sum & 0xff;\n      }\n    } else {\n      var compArray = new Uint8Array(colors + 1);\n      var bitMask = (1 << bits) - 1;\n      var j = 0,\n        k = bufferLength;\n      var columns = this.columns;\n      for (i = 0; i < columns; ++i) {\n        for (var kk = 0; kk < colors; ++kk) {\n          if (inbits < bits) {\n            inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n            inbits += 8;\n          }\n          compArray[kk] =\n            (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n          inbits -= bits;\n          outbuf = (outbuf << bits) | compArray[kk];\n          outbits += bits;\n          if (outbits >= 8) {\n            buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n            outbits -= 8;\n          }\n        }\n      }\n      if (outbits > 0) {\n        buffer[k++] =\n          (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n      }\n    }\n    this.bufferLength += rowBytes;\n  };\n\n  PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() {\n    var rowBytes = this.rowBytes;\n    var pixBytes = this.pixBytes;\n\n    var predictor = this.str.getByte();\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n    if (prevRow.length === 0) {\n      prevRow = new Uint8Array(rowBytes);\n    }\n\n    var i,\n      j = bufferLength,\n      up,\n      c;\n    switch (predictor) {\n      case 0:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        break;\n      case 1:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 2:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n        }\n        break;\n      case 3:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] =\n            (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 4:\n        // we need to save the up left pixels values. the simplest way\n        // is to create a new buffer\n        for (i = 0; i < pixBytes; ++i) {\n          up = prevRow[i];\n          c = rawBytes[i];\n          buffer[j++] = up + c;\n        }\n        for (; i < rowBytes; ++i) {\n          up = prevRow[i];\n          var upLeft = prevRow[i - pixBytes];\n          var left = buffer[j - pixBytes];\n          var p = left + up - upLeft;\n\n          var pa = p - left;\n          if (pa < 0) {\n            pa = -pa;\n          }\n          var pb = p - up;\n          if (pb < 0) {\n            pb = -pb;\n          }\n          var pc = p - upLeft;\n          if (pc < 0) {\n            pc = -pc;\n          }\n\n          c = rawBytes[i];\n          if (pa <= pb && pa <= pc) {\n            buffer[j++] = left + c;\n          } else if (pb <= pc) {\n            buffer[j++] = up + c;\n          } else {\n            buffer[j++] = upLeft + c;\n          }\n        }\n        break;\n      default:\n        throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n    this.bufferLength += rowBytes;\n  };\n\n  return PredictorStream;\n})();\n\nvar DecryptStream = (function DecryptStreamClosure() {\n  function DecryptStream(str, maybeLength, decrypt) {\n    this.str = str;\n    this.dict = str.dict;\n    this.decrypt = decrypt;\n    this.nextChunk = null;\n    this.initialized = false;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  var chunkSize = 512;\n\n  DecryptStream.prototype = Object.create(DecodeStream.prototype);\n\n  DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {\n    var chunk;\n    if (this.initialized) {\n      chunk = this.nextChunk;\n    } else {\n      chunk = this.str.getBytes(chunkSize);\n      this.initialized = true;\n    }\n    if (!chunk || chunk.length === 0) {\n      this.eof = true;\n      return;\n    }\n    this.nextChunk = this.str.getBytes(chunkSize);\n    var hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n    var decrypt = this.decrypt;\n    chunk = decrypt(chunk, !hasMoreData);\n\n    var bufferLength = this.bufferLength;\n    var i,\n      n = chunk.length;\n    var buffer = this.ensureBuffer(bufferLength + n);\n    for (i = 0; i < n; i++) {\n      buffer[bufferLength++] = chunk[i];\n    }\n    this.bufferLength = bufferLength;\n  };\n\n  return DecryptStream;\n})();\n\nvar Ascii85Stream = (function Ascii85StreamClosure() {\n  function Ascii85Stream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n    this.input = new Uint8Array(5);\n\n    // Most streams increase in size when decoded, but Ascii85 streams\n    // typically shrink by ~20%.\n    if (maybeLength) {\n      maybeLength = 0.8 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  Ascii85Stream.prototype = Object.create(DecodeStream.prototype);\n\n  Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {\n    var TILDA_CHAR = 0x7e; // '~'\n    var Z_LOWER_CHAR = 0x7a; // 'z'\n    var EOF = -1;\n\n    var str = this.str;\n\n    var c = str.getByte();\n    while (isWhiteSpace(c)) {\n      c = str.getByte();\n    }\n\n    if (c === EOF || c === TILDA_CHAR) {\n      this.eof = true;\n      return;\n    }\n\n    var bufferLength = this.bufferLength,\n      buffer;\n    var i;\n\n    // special code for z\n    if (c === Z_LOWER_CHAR) {\n      buffer = this.ensureBuffer(bufferLength + 4);\n      for (i = 0; i < 4; ++i) {\n        buffer[bufferLength + i] = 0;\n      }\n      this.bufferLength += 4;\n    } else {\n      var input = this.input;\n      input[0] = c;\n      for (i = 1; i < 5; ++i) {\n        c = str.getByte();\n        while (isWhiteSpace(c)) {\n          c = str.getByte();\n        }\n\n        input[i] = c;\n\n        if (c === EOF || c === TILDA_CHAR) {\n          break;\n        }\n      }\n      buffer = this.ensureBuffer(bufferLength + i - 1);\n      this.bufferLength += i - 1;\n\n      // partial ending;\n      if (i < 5) {\n        for (; i < 5; ++i) {\n          input[i] = 0x21 + 84;\n        }\n        this.eof = true;\n      }\n      var t = 0;\n      for (i = 0; i < 5; ++i) {\n        t = t * 85 + (input[i] - 0x21);\n      }\n\n      for (i = 3; i >= 0; --i) {\n        buffer[bufferLength + i] = t & 0xff;\n        t >>= 8;\n      }\n    }\n  };\n\n  return Ascii85Stream;\n})();\n\nvar AsciiHexStream = (function AsciiHexStreamClosure() {\n  function AsciiHexStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    this.firstDigit = -1;\n\n    // Most streams increase in size when decoded, but AsciiHex streams shrink\n    // by 50%.\n    if (maybeLength) {\n      maybeLength = 0.5 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  AsciiHexStream.prototype = Object.create(DecodeStream.prototype);\n\n  AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {\n    var UPSTREAM_BLOCK_SIZE = 8000;\n    var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n    if (!bytes.length) {\n      this.eof = true;\n      return;\n    }\n\n    var maxDecodeLength = (bytes.length + 1) >> 1;\n    var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n    var bufferLength = this.bufferLength;\n\n    var firstDigit = this.firstDigit;\n    for (var i = 0, ii = bytes.length; i < ii; i++) {\n      var ch = bytes[i],\n        digit;\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        digit = ch & 0x0f;\n      } else if (\n        (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n      ) {\n        digit = (ch & 0x0f) + 9;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.eof = true;\n        break;\n      } else {\n        // Probably whitespace, ignoring.\n        continue;\n      }\n      if (firstDigit < 0) {\n        firstDigit = digit;\n      } else {\n        buffer[bufferLength++] = (firstDigit << 4) | digit;\n        firstDigit = -1;\n      }\n    }\n    if (firstDigit >= 0 && this.eof) {\n      // incomplete byte\n      buffer[bufferLength++] = firstDigit << 4;\n      firstDigit = -1;\n    }\n    this.firstDigit = firstDigit;\n    this.bufferLength = bufferLength;\n  };\n\n  return AsciiHexStream;\n})();\n\nvar RunLengthStream = (function RunLengthStreamClosure() {\n  function RunLengthStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  RunLengthStream.prototype = Object.create(DecodeStream.prototype);\n\n  RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {\n    // The repeatHeader has following format. The first byte defines type of run\n    // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n    // (in addition to the second byte from the header), n = 129 through 255 -\n    // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n    var repeatHeader = this.str.getBytes(2);\n    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n      this.eof = true;\n      return;\n    }\n\n    var buffer;\n    var bufferLength = this.bufferLength;\n    var n = repeatHeader[0];\n    if (n < 128) {\n      // copy n bytes\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      buffer[bufferLength++] = repeatHeader[1];\n      if (n > 0) {\n        var source = this.str.getBytes(n);\n        buffer.set(source, bufferLength);\n        bufferLength += n;\n      }\n    } else {\n      n = 257 - n;\n      var b = repeatHeader[1];\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      for (var i = 0; i < n; i++) {\n        buffer[bufferLength++] = b;\n      }\n    }\n    this.bufferLength = bufferLength;\n  };\n\n  return RunLengthStream;\n})();\n\nvar LZWStream = (function LZWStreamClosure() {\n  function LZWStream(str, maybeLength, earlyChange) {\n    this.str = str;\n    this.dict = str.dict;\n    this.cachedData = 0;\n    this.bitsCached = 0;\n\n    var maxLzwDictionarySize = 4096;\n    var lzwState = {\n      earlyChange,\n      codeLength: 9,\n      nextCode: 258,\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\n      currentSequenceLength: 0,\n    };\n    for (var i = 0; i < 256; ++i) {\n      lzwState.dictionaryValues[i] = i;\n      lzwState.dictionaryLengths[i] = 1;\n    }\n    this.lzwState = lzwState;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  LZWStream.prototype = Object.create(DecodeStream.prototype);\n\n  LZWStream.prototype.readBits = function LZWStream_readBits(n) {\n    var bitsCached = this.bitsCached;\n    var cachedData = this.cachedData;\n    while (bitsCached < n) {\n      var c = this.str.getByte();\n      if (c === -1) {\n        this.eof = true;\n        return null;\n      }\n      cachedData = (cachedData << 8) | c;\n      bitsCached += 8;\n    }\n    this.bitsCached = bitsCached -= n;\n    this.cachedData = cachedData;\n    this.lastCode = null;\n    return (cachedData >>> bitsCached) & ((1 << n) - 1);\n  };\n\n  LZWStream.prototype.readBlock = function LZWStream_readBlock() {\n    var blockSize = 512;\n    var estimatedDecodedSize = blockSize * 2,\n      decodedSizeDelta = blockSize;\n    var i, j, q;\n\n    var lzwState = this.lzwState;\n    if (!lzwState) {\n      return; // eof was found\n    }\n\n    var earlyChange = lzwState.earlyChange;\n    var nextCode = lzwState.nextCode;\n    var dictionaryValues = lzwState.dictionaryValues;\n    var dictionaryLengths = lzwState.dictionaryLengths;\n    var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n    var codeLength = lzwState.codeLength;\n    var prevCode = lzwState.prevCode;\n    var currentSequence = lzwState.currentSequence;\n    var currentSequenceLength = lzwState.currentSequenceLength;\n\n    var decodedLength = 0;\n    var currentBufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n    for (i = 0; i < blockSize; i++) {\n      var code = this.readBits(codeLength);\n      var hasPrev = currentSequenceLength > 0;\n      if (code < 256) {\n        currentSequence[0] = code;\n        currentSequenceLength = 1;\n      } else if (code >= 258) {\n        if (code < nextCode) {\n          currentSequenceLength = dictionaryLengths[code];\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n            currentSequence[j] = dictionaryValues[q];\n            q = dictionaryPrevCodes[q];\n          }\n        } else {\n          currentSequence[currentSequenceLength++] = currentSequence[0];\n        }\n      } else if (code === 256) {\n        codeLength = 9;\n        nextCode = 258;\n        currentSequenceLength = 0;\n        continue;\n      } else {\n        this.eof = true;\n        delete this.lzwState;\n        break;\n      }\n\n      if (hasPrev) {\n        dictionaryPrevCodes[nextCode] = prevCode;\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n        dictionaryValues[nextCode] = currentSequence[0];\n        nextCode++;\n        codeLength =\n          (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n            ? codeLength\n            : Math.min(\n                Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n                12\n              ) | 0;\n      }\n      prevCode = code;\n\n      decodedLength += currentSequenceLength;\n      if (estimatedDecodedSize < decodedLength) {\n        do {\n          estimatedDecodedSize += decodedSizeDelta;\n        } while (estimatedDecodedSize < decodedLength);\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n      }\n      for (j = 0; j < currentSequenceLength; j++) {\n        buffer[currentBufferLength++] = currentSequence[j];\n      }\n    }\n    lzwState.nextCode = nextCode;\n    lzwState.codeLength = codeLength;\n    lzwState.prevCode = prevCode;\n    lzwState.currentSequenceLength = currentSequenceLength;\n\n    this.bufferLength = currentBufferLength;\n  };\n\n  return LZWStream;\n})();\n\nvar NullStream = (function NullStreamClosure() {\n  function NullStream() {\n    Stream.call(this, new Uint8Array(0));\n  }\n\n  NullStream.prototype = Stream.prototype;\n\n  return NullStream;\n})();\n\nexport {\n  Ascii85Stream,\n  AsciiHexStream,\n  DecryptStream,\n  DecodeStream,\n  FlateStream,\n  NullStream,\n  PredictorStream,\n  RunLengthStream,\n  Stream,\n  StreamsSequenceStream,\n  StringStream,\n  LZWStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isDict } from \"./primitives.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./stream.js\";\n\nvar CCITTFaxStream = (function CCITTFaxStreamClosure() {\n  function CCITTFaxStream(str, maybeLength, params) {\n    this.str = str;\n    this.dict = str.dict;\n\n    if (!isDict(params)) {\n      params = Dict.empty;\n    }\n\n    const source = {\n      next() {\n        return str.getByte();\n      },\n    };\n    this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n      K: params.get(\"K\"),\n      EndOfLine: params.get(\"EndOfLine\"),\n      EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n      Columns: params.get(\"Columns\"),\n      Rows: params.get(\"Rows\"),\n      EndOfBlock: params.get(\"EndOfBlock\"),\n      BlackIs1: params.get(\"BlackIs1\"),\n    });\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  CCITTFaxStream.prototype = Object.create(DecodeStream.prototype);\n\n  CCITTFaxStream.prototype.readBlock = function() {\n    while (!this.eof) {\n      const c = this.ccittFaxDecoder.readNextChar();\n      if (c === -1) {\n        this.eof = true;\n        return;\n      }\n      this.ensureBuffer(this.bufferLength + 1);\n      this.buffer[this.bufferLength++] = c;\n    }\n  };\n\n  return CCITTFaxStream;\n})();\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n *   or -1 when EOF is reached.\n */\n\nimport { info } from \"../shared/util.js\";\n\nconst CCITTFaxDecoder = (function CCITTFaxDecoder() {\n  const ccittEOL = -2;\n  const ccittEOF = -1;\n  const twoDimPass = 0;\n  const twoDimHoriz = 1;\n  const twoDimVert0 = 2;\n  const twoDimVertR1 = 3;\n  const twoDimVertL1 = 4;\n  const twoDimVertR2 = 5;\n  const twoDimVertL2 = 6;\n  const twoDimVertR3 = 7;\n  const twoDimVertL3 = 8;\n\n  // prettier-ignore\n  const twoDimTable = [\n    [-1, -1], [-1, -1],                   // 000000x\n    [7, twoDimVertL3],                    // 0000010\n    [7, twoDimVertR3],                    // 0000011\n    [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n    [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n    [4, twoDimPass], [4, twoDimPass],     // 0001xxx\n    [4, twoDimPass], [4, twoDimPass],\n    [4, twoDimPass], [4, twoDimPass],\n    [4, twoDimPass], [4, twoDimPass],\n    [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0]\n  ];\n\n  // prettier-ignore\n  const whiteTable1 = [\n    [-1, -1],                               // 00000\n    [12, ccittEOL],                         // 00001\n    [-1, -1], [-1, -1],                     // 0001x\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n    [11, 1792], [11, 1792],                 // 1000x\n    [12, 1984],                             // 10010\n    [12, 2048],                             // 10011\n    [12, 2112],                             // 10100\n    [12, 2176],                             // 10101\n    [12, 2240],                             // 10110\n    [12, 2304],                             // 10111\n    [11, 1856], [11, 1856],                 // 1100x\n    [11, 1920], [11, 1920],                 // 1101x\n    [12, 2368],                             // 11100\n    [12, 2432],                             // 11101\n    [12, 2496],                             // 11110\n    [12, 2560]                              // 11111\n  ];\n\n  // prettier-ignore\n  const whiteTable2 = [\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx\n    [8, 29], [8, 29],                           // 00000010x\n    [8, 30], [8, 30],                           // 00000011x\n    [8, 45], [8, 45],                           // 00000100x\n    [8, 46], [8, 46],                           // 00000101x\n    [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx\n    [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx\n    [8, 47], [8, 47],                           // 00001010x\n    [8, 48], [8, 48],                           // 00001011x\n    [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx\n    [6, 13], [6, 13], [6, 13], [6, 13],\n    [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx\n    [8, 33], [8, 33],                           // 00010010x\n    [8, 34], [8, 34],                           // 00010011x\n    [8, 35], [8, 35],                           // 00010100x\n    [8, 36], [8, 36],                           // 00010101x\n    [8, 37], [8, 37],                           // 00010110x\n    [8, 38], [8, 38],                           // 00010111x\n    [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx\n    [8, 31], [8, 31],                           // 00011010x\n    [8, 32], [8, 32],                           // 00011011x\n    [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx\n    [6, 1], [6, 1], [6, 1], [6, 1],\n    [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx\n    [6, 12], [6, 12], [6, 12], [6, 12],\n    [8, 53], [8, 53],                           // 00100100x\n    [8, 54], [8, 54],                           // 00100101x\n    [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx\n    [8, 39], [8, 39],                           // 00101000x\n    [8, 40], [8, 40],                           // 00101001x\n    [8, 41], [8, 41],                           // 00101010x\n    [8, 42], [8, 42],                           // 00101011x\n    [8, 43], [8, 43],                           // 00101100x\n    [8, 44], [8, 44],                           // 00101101x\n    [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx\n    [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx\n    [8, 61], [8, 61],                           // 00110010x\n    [8, 62], [8, 62],                           // 00110011x\n    [8, 63], [8, 63],                           // 00110100x\n    [8, 0], [8, 0],                             // 00110101x\n    [8, 320], [8, 320],                         // 00110110x\n    [8, 384], [8, 384],                         // 00110111x\n    [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx\n    [8, 59], [8, 59],                           // 01001010x\n    [8, 60], [8, 60],                           // 01001011x\n    [9, 1472],                                  // 010011000\n    [9, 1536],                                  // 010011001\n    [9, 1600],                                  // 010011010\n    [9, 1728],                                  // 010011011\n    [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx\n    [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx\n    [8, 49], [8, 49],                           // 01010010x\n    [8, 50], [8, 50],                           // 01010011x\n    [8, 51], [8, 51],                           // 01010100x\n    [8, 52], [8, 52],                           // 01010101x\n    [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx\n    [8, 55], [8, 55],                           // 01011000x\n    [8, 56], [8, 56],                           // 01011001x\n    [8, 57], [8, 57],                           // 01011010x\n    [8, 58], [8, 58],                           // 01011011x\n    [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx\n    [6, 192], [6, 192], [6, 192], [6, 192],\n    [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n    [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n    [8, 448], [8, 448],                         // 01100100x\n    [8, 512], [8, 512],                         // 01100101x\n    [9, 704],                                   // 011001100\n    [9, 768],                                   // 011001101\n    [8, 640], [8, 640],                         // 01100111x\n    [8, 576], [8, 576],                         // 01101000x\n    [9, 832],                                   // 011010010\n    [9, 896],                                   // 011010011\n    [9, 960],                                   // 011010100\n    [9, 1024],                                  // 011010101\n    [9, 1088],                                  // 011010110\n    [9, 1152],                                  // 011010111\n    [9, 1216],                                  // 011011000\n    [9, 1280],                                  // 011011001\n    [9, 1344],                                  // 011011010\n    [9, 1408],                                  // 011011011\n    [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx\n    [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx\n    [6, 16], [6, 16], [6, 16], [6, 16],\n    [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx\n    [6, 17], [6, 17], [6, 17], [6, 17],\n    [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx\n    [6, 14], [6, 14], [6, 14], [6, 14],\n    [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx\n    [6, 15], [6, 15], [6, 15], [6, 15],\n    [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7]\n  ];\n\n  // prettier-ignore\n  const blackTable1 = [\n    [-1, -1], [-1, -1],                             // 000000000000x\n    [12, ccittEOL], [12, ccittEOL],                 // 000000000001x\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx\n    [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n    [12, 1984], [12, 1984],                         // 000000010010x\n    [12, 2048], [12, 2048],                         // 000000010011x\n    [12, 2112], [12, 2112],                         // 000000010100x\n    [12, 2176], [12, 2176],                         // 000000010101x\n    [12, 2240], [12, 2240],                         // 000000010110x\n    [12, 2304], [12, 2304],                         // 000000010111x\n    [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n    [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n    [12, 2368], [12, 2368],                         // 000000011100x\n    [12, 2432], [12, 2432],                         // 000000011101x\n    [12, 2496], [12, 2496],                         // 000000011110x\n    [12, 2560], [12, 2560],                         // 000000011111x\n    [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx\n    [10, 18], [10, 18], [10, 18], [10, 18],\n    [12, 52], [12, 52],                             // 000000100100x\n    [13, 640],                                      // 0000001001010\n    [13, 704],                                      // 0000001001011\n    [13, 768],                                      // 0000001001100\n    [13, 832],                                      // 0000001001101\n    [12, 55], [12, 55],                             // 000000100111x\n    [12, 56], [12, 56],                             // 000000101000x\n    [13, 1280],                                     // 0000001010010\n    [13, 1344],                                     // 0000001010011\n    [13, 1408],                                     // 0000001010100\n    [13, 1472],                                     // 0000001010101\n    [12, 59], [12, 59],                             // 000000101011x\n    [12, 60], [12, 60],                             // 000000101100x\n    [13, 1536],                                     // 0000001011010\n    [13, 1600],                                     // 0000001011011\n    [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx\n    [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx\n    [13, 1664],                                     // 0000001100100\n    [13, 1728],                                     // 0000001100101\n    [12, 320], [12, 320],                           // 000000110011x\n    [12, 384], [12, 384],                           // 000000110100x\n    [12, 448], [12, 448],                           // 000000110101x\n    [13, 512],                                      // 0000001101100\n    [13, 576],                                      // 0000001101101\n    [12, 53], [12, 53],                             // 000000110111x\n    [12, 54], [12, 54],                             // 000000111000x\n    [13, 896],                                      // 0000001110010\n    [13, 960],                                      // 0000001110011\n    [13, 1024],                                     // 0000001110100\n    [13, 1088],                                     // 0000001110101\n    [13, 1152],                                     // 0000001110110\n    [13, 1216],                                     // 0000001110111\n    [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx\n    [10, 64], [10, 64], [10, 64], [10, 64]\n  ];\n\n  // prettier-ignore\n  const blackTable2 = [\n    [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [11, 23], [11, 23],                     // 00000101000x\n    [12, 50],                               // 000001010010\n    [12, 51],                               // 000001010011\n    [12, 44],                               // 000001010100\n    [12, 45],                               // 000001010101\n    [12, 46],                               // 000001010110\n    [12, 47],                               // 000001010111\n    [12, 57],                               // 000001011000\n    [12, 58],                               // 000001011001\n    [12, 61],                               // 000001011010\n    [12, 256],                              // 000001011011\n    [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n    [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n    [12, 48],                               // 000001100100\n    [12, 49],                               // 000001100101\n    [12, 62],                               // 000001100110\n    [12, 63],                               // 000001100111\n    [12, 30],                               // 000001101000\n    [12, 31],                               // 000001101001\n    [12, 32],                               // 000001101010\n    [12, 33],                               // 000001101011\n    [12, 40],                               // 000001101100\n    [12, 41],                               // 000001101101\n    [11, 22], [11, 22],                     // 00000110111x\n    [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx\n    [9, 15], [9, 15], [9, 15], [9, 15],\n    [12, 128],                              // 000011001000\n    [12, 192],                              // 000011001001\n    [12, 26],                               // 000011001010\n    [12, 27],                               // 000011001011\n    [12, 28],                               // 000011001100\n    [12, 29],                               // 000011001101\n    [11, 19], [11, 19],                     // 00001100111x\n    [11, 20], [11, 20],                     // 00001101000x\n    [12, 34],                               // 000011010010\n    [12, 35],                               // 000011010011\n    [12, 36],                               // 000011010100\n    [12, 37],                               // 000011010101\n    [12, 38],                               // 000011010110\n    [12, 39],                               // 000011010111\n    [11, 21], [11, 21],                     // 00001101100x\n    [12, 42],                               // 000011011010\n    [12, 43],                               // 000011011011\n    [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx\n    [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12]\n  ];\n\n  // prettier-ignore\n  const blackTable3 = [\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n    [6, 9],                                 // 000100\n    [6, 8],                                 // 000101\n    [5, 7], [5, 7],                         // 00011x\n    [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx\n    [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx\n    [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx\n    [3, 1], [3, 1], [3, 1], [3, 1],\n    [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx\n    [3, 4], [3, 4], [3, 4], [3, 4],\n    [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx\n    [2, 2], [2, 2], [2, 2], [2, 2],\n    [2, 2], [2, 2], [2, 2], [2, 2],\n    [2, 2], [2, 2], [2, 2], [2, 2]\n  ];\n\n  /**\n   * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n   * @param {Object} [options] - Decoding options.\n   */\n  function CCITTFaxDecoder(source, options = {}) {\n    if (!source || typeof source.next !== \"function\") {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n    this.source = source;\n    this.eof = false;\n\n    this.encoding = options[\"K\"] || 0;\n    this.eoline = options[\"EndOfLine\"] || false;\n    this.byteAlign = options[\"EncodedByteAlign\"] || false;\n    this.columns = options[\"Columns\"] || 1728;\n    this.rows = options[\"Rows\"] || 0;\n    let eoblock = options[\"EndOfBlock\"];\n    if (eoblock === null || eoblock === undefined) {\n      eoblock = true;\n    }\n    this.eoblock = eoblock;\n    this.black = options[\"BlackIs1\"] || false;\n\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n\n    let code1;\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n      this._eatBits(1);\n    }\n  }\n\n  CCITTFaxDecoder.prototype = {\n    readNextChar() {\n      if (this.eof) {\n        return -1;\n      }\n      const refLine = this.refLine;\n      const codingLine = this.codingLine;\n      const columns = this.columns;\n\n      let refPos, blackPixels, bits, i;\n\n      if (this.outputBits === 0) {\n        if (this.rowsDone) {\n          this.eof = true;\n        }\n        if (this.eof) {\n          return -1;\n        }\n        this.err = false;\n\n        let code1, code2, code3;\n        if (this.nextLine2D) {\n          for (i = 0; codingLine[i] < columns; ++i) {\n            refLine[i] = codingLine[i];\n          }\n          refLine[i++] = columns;\n          refLine[i] = columns;\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          refPos = 0;\n          blackPixels = 0;\n\n          while (codingLine[this.codingPos] < columns) {\n            code1 = this._getTwoDimCode();\n            switch (code1) {\n              case twoDimPass:\n                this._addPixels(refLine[refPos + 1], blackPixels);\n                if (refLine[refPos + 1] < columns) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimHoriz:\n                code1 = code2 = 0;\n                if (blackPixels) {\n                  do {\n                    code1 += code3 = this._getBlackCode();\n                  } while (code3 >= 64);\n                  do {\n                    code2 += code3 = this._getWhiteCode();\n                  } while (code3 >= 64);\n                } else {\n                  do {\n                    code1 += code3 = this._getWhiteCode();\n                  } while (code3 >= 64);\n                  do {\n                    code2 += code3 = this._getBlackCode();\n                  } while (code3 >= 64);\n                }\n                this._addPixels(\n                  codingLine[this.codingPos] + code1,\n                  blackPixels\n                );\n                if (codingLine[this.codingPos] < columns) {\n                  this._addPixels(\n                    codingLine[this.codingPos] + code2,\n                    blackPixels ^ 1\n                  );\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimVertR3:\n                this._addPixels(refLine[refPos] + 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR2:\n                this._addPixels(refLine[refPos] + 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR1:\n                this._addPixels(refLine[refPos] + 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVert0:\n                this._addPixels(refLine[refPos], blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL3:\n                this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL2:\n                this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL1:\n                this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case ccittEOF:\n                this._addPixels(columns, 0);\n                this.eof = true;\n                break;\n              default:\n                info(\"bad 2d code\");\n                this._addPixels(columns, 0);\n                this.err = true;\n            }\n          }\n        } else {\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          blackPixels = 0;\n          while (codingLine[this.codingPos] < columns) {\n            code1 = 0;\n            if (blackPixels) {\n              do {\n                code1 += code3 = this._getBlackCode();\n              } while (code3 >= 64);\n            } else {\n              do {\n                code1 += code3 = this._getWhiteCode();\n              } while (code3 >= 64);\n            }\n            this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n            blackPixels ^= 1;\n          }\n        }\n\n        let gotEOL = false;\n\n        if (this.byteAlign) {\n          this.inputBits &= ~7;\n        }\n\n        if (!this.eoblock && this.row === this.rows - 1) {\n          this.rowsDone = true;\n        } else {\n          code1 = this._lookBits(12);\n          if (this.eoline) {\n            while (code1 !== ccittEOF && code1 !== 1) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          } else {\n            while (code1 === 0) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          }\n          if (code1 === 1) {\n            this._eatBits(12);\n            gotEOL = true;\n          } else if (code1 === ccittEOF) {\n            this.eof = true;\n          }\n        }\n\n        if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n          this.nextLine2D = !this._lookBits(1);\n          this._eatBits(1);\n        }\n\n        if (this.eoblock && gotEOL && this.byteAlign) {\n          code1 = this._lookBits(12);\n          if (code1 === 1) {\n            this._eatBits(12);\n            if (this.encoding > 0) {\n              this._lookBits(1);\n              this._eatBits(1);\n            }\n            if (this.encoding >= 0) {\n              for (i = 0; i < 4; ++i) {\n                code1 = this._lookBits(12);\n                if (code1 !== 1) {\n                  info(\"bad rtc code: \" + code1);\n                }\n                this._eatBits(12);\n                if (this.encoding > 0) {\n                  this._lookBits(1);\n                  this._eatBits(1);\n                }\n              }\n            }\n            this.eof = true;\n          }\n        } else if (this.err && this.eoline) {\n          while (true) {\n            code1 = this._lookBits(13);\n            if (code1 === ccittEOF) {\n              this.eof = true;\n              return -1;\n            }\n            if (code1 >> 1 === 1) {\n              break;\n            }\n            this._eatBits(1);\n          }\n          this._eatBits(12);\n          if (this.encoding > 0) {\n            this._eatBits(1);\n            this.nextLine2D = !(code1 & 1);\n          }\n        }\n\n        if (codingLine[0] > 0) {\n          this.outputBits = codingLine[(this.codingPos = 0)];\n        } else {\n          this.outputBits = codingLine[(this.codingPos = 1)];\n        }\n        this.row++;\n      }\n\n      let c;\n      if (this.outputBits >= 8) {\n        c = this.codingPos & 1 ? 0 : 0xff;\n        this.outputBits -= 8;\n        if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n          this.codingPos++;\n          this.outputBits =\n            codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n        }\n      } else {\n        bits = 8;\n        c = 0;\n        do {\n          if (this.outputBits > bits) {\n            c <<= bits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xff >> (8 - bits);\n            }\n            this.outputBits -= bits;\n            bits = 0;\n          } else {\n            c <<= this.outputBits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xff >> (8 - this.outputBits);\n            }\n            bits -= this.outputBits;\n            this.outputBits = 0;\n            if (codingLine[this.codingPos] < columns) {\n              this.codingPos++;\n              this.outputBits =\n                codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n            } else if (bits > 0) {\n              c <<= bits;\n              bits = 0;\n            }\n          }\n        } while (bits);\n      }\n      if (this.black) {\n        c ^= 0xff;\n      }\n      return c;\n    },\n\n    /**\n     * @private\n     */\n    _addPixels(a1, blackPixels) {\n      const codingLine = this.codingLine;\n      let codingPos = this.codingPos;\n\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          info(\"row is wrong length\");\n          this.err = true;\n          a1 = this.columns;\n        }\n        if ((codingPos & 1) ^ blackPixels) {\n          ++codingPos;\n        }\n\n        codingLine[codingPos] = a1;\n      }\n      this.codingPos = codingPos;\n    },\n\n    /**\n     * @private\n     */\n    _addPixelsNeg(a1, blackPixels) {\n      const codingLine = this.codingLine;\n      let codingPos = this.codingPos;\n\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          info(\"row is wrong length\");\n          this.err = true;\n          a1 = this.columns;\n        }\n        if ((codingPos & 1) ^ blackPixels) {\n          ++codingPos;\n        }\n\n        codingLine[codingPos] = a1;\n      } else if (a1 < codingLine[codingPos]) {\n        if (a1 < 0) {\n          info(\"invalid code\");\n          this.err = true;\n          a1 = 0;\n        }\n        while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n          --codingPos;\n        }\n        codingLine[codingPos] = a1;\n      }\n\n      this.codingPos = codingPos;\n    },\n\n    /**\n     * This function returns the code found from the table.\n     * The start and end parameters set the boundaries for searching the table.\n     * The limit parameter is optional. Function returns an array with three\n     * values. The first array element indicates whether a valid code is being\n     * returned. The second array element is the actual code. The third array\n     * element indicates whether EOF was reached.\n     * @private\n     */\n    _findTableCode(start, end, table, limit) {\n      const limitValue = limit || 0;\n      for (let i = start; i <= end; ++i) {\n        let code = this._lookBits(i);\n        if (code === ccittEOF) {\n          return [true, 1, false];\n        }\n        if (i < end) {\n          code <<= end - i;\n        }\n        if (!limitValue || code >= limitValue) {\n          const p = table[code - limitValue];\n          if (p[0] === i) {\n            this._eatBits(i);\n            return [true, p[1], true];\n          }\n        }\n      }\n      return [false, 0, false];\n    },\n\n    /**\n     * @private\n     */\n    _getTwoDimCode() {\n      let code = 0;\n      let p;\n      if (this.eoblock) {\n        code = this._lookBits(7);\n        p = twoDimTable[code];\n        if (p && p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        const result = this._findTableCode(1, 7, twoDimTable);\n        if (result[0] && result[2]) {\n          return result[1];\n        }\n      }\n      info(\"Bad two dim code\");\n      return ccittEOF;\n    },\n\n    /**\n     * @private\n     */\n    _getWhiteCode() {\n      let code = 0;\n      let p;\n      if (this.eoblock) {\n        code = this._lookBits(12);\n        if (code === ccittEOF) {\n          return 1;\n        }\n\n        if (code >> 5 === 0) {\n          p = whiteTable1[code];\n        } else {\n          p = whiteTable2[code >> 3];\n        }\n\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(1, 9, whiteTable2);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(11, 12, whiteTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      info(\"bad white code\");\n      this._eatBits(1);\n      return 1;\n    },\n\n    /**\n     * @private\n     */\n    _getBlackCode() {\n      let code, p;\n      if (this.eoblock) {\n        code = this._lookBits(13);\n        if (code === ccittEOF) {\n          return 1;\n        }\n        if (code >> 7 === 0) {\n          p = blackTable1[code];\n        } else if (code >> 9 === 0 && code >> 7 !== 0) {\n          p = blackTable2[(code >> 1) - 64];\n        } else {\n          p = blackTable3[code >> 7];\n        }\n\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(2, 6, blackTable3);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(7, 12, blackTable2, 64);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(10, 13, blackTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      info(\"bad black code\");\n      this._eatBits(1);\n      return 1;\n    },\n\n    /**\n     * @private\n     */\n    _lookBits(n) {\n      let c;\n      while (this.inputBits < n) {\n        if ((c = this.source.next()) === -1) {\n          if (this.inputBits === 0) {\n            return ccittEOF;\n          }\n          return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n        }\n        this.inputBuf = (this.inputBuf << 8) | c;\n        this.inputBits += 8;\n      }\n      return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n    },\n\n    /**\n     * @private\n     */\n    _eatBits(n) {\n      if ((this.inputBits -= n) < 0) {\n        this.inputBits = 0;\n      }\n    },\n  };\n\n  return CCITTFaxDecoder;\n})();\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isStream } from \"./primitives.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nconst Jbig2Stream = (function Jbig2StreamClosure() {\n  function Jbig2Stream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  Jbig2Stream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(Jbig2Stream.prototype, \"bytes\", {\n    get() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  Jbig2Stream.prototype.ensureBuffer = function(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  Jbig2Stream.prototype.readBlock = function() {\n    if (this.eof) {\n      return;\n    }\n    const jbig2Image = new Jbig2Image();\n\n    const chunks = [];\n    if (isDict(this.params)) {\n      const globalsStream = this.params.get(\"JBIG2Globals\");\n      if (isStream(globalsStream)) {\n        const globals = globalsStream.getBytes();\n        chunks.push({ data: globals, start: 0, end: globals.length });\n      }\n    }\n    chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n    const data = jbig2Image.parseChunks(chunks);\n    const dataLength = data.length;\n\n    // JBIG2 had black as 1 and white as 0, inverting the colors\n    for (let i = 0; i < dataLength; i++) {\n      data[i] ^= 0xff;\n    }\n    this.buffer = data;\n    this.bufferLength = dataLength;\n    this.eof = true;\n  };\n\n  return Jbig2Stream;\n})();\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n  constructor(msg) {\n    super(`JBIG2 error: ${msg}`);\n  }\n}\n\nvar Jbig2Image = (function Jbig2ImageClosure() {\n  // Utility data structures\n  function ContextCache() {}\n\n  ContextCache.prototype = {\n    getContexts(id) {\n      if (id in this) {\n        return this[id];\n      }\n      return (this[id] = new Int8Array(1 << 16));\n    },\n  };\n\n  function DecodingContext(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n\n  DecodingContext.prototype = {\n    get decoder() {\n      var decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n      return shadow(this, \"decoder\", decoder);\n    },\n    get contextCache() {\n      var cache = new ContextCache();\n      return shadow(this, \"contextCache\", cache);\n    },\n  };\n\n  // Annex A. Arithmetic Integer Decoding Procedure\n  // A.2 Procedure for decoding values\n  function decodeInteger(contextCache, procedure, decoder) {\n    var contexts = contextCache.getContexts(procedure);\n    var prev = 1;\n\n    function readBits(length) {\n      var v = 0;\n      for (var i = 0; i < length; i++) {\n        var bit = decoder.readBit(contexts, prev);\n        prev =\n          prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n        v = (v << 1) | bit;\n      }\n      return v >>> 0;\n    }\n\n    var sign = readBits(1);\n    // prettier-ignore\n    /* eslint-disable no-nested-ternary */\n    var value = readBits(1) ?\n                  (readBits(1) ?\n                    (readBits(1) ?\n                      (readBits(1) ?\n                        (readBits(1) ?\n                          (readBits(32) + 4436) :\n                        readBits(12) + 340) :\n                      readBits(8) + 84) :\n                    readBits(6) + 20) :\n                  readBits(4) + 4) :\n                readBits(2);\n    /* eslint-enable no-nested-ternary */\n    if (sign === 0) {\n      return value;\n    } else if (value > 0) {\n      return -value;\n    }\n    return null;\n  }\n\n  // A.3 The IAID decoding procedure\n  function decodeIAID(contextCache, decoder, codeLength) {\n    var contexts = contextCache.getContexts(\"IAID\");\n\n    var prev = 1;\n    for (var i = 0; i < codeLength; i++) {\n      var bit = decoder.readBit(contexts, prev);\n      prev = (prev << 1) | bit;\n    }\n    if (codeLength < 31) {\n      return prev & ((1 << codeLength) - 1);\n    }\n    return prev & 0x7fffffff;\n  }\n\n  // 7.3 Segment types\n  var SegmentTypes = [\n    \"SymbolDictionary\",\n    null,\n    null,\n    null,\n    \"IntermediateTextRegion\",\n    null,\n    \"ImmediateTextRegion\",\n    \"ImmediateLosslessTextRegion\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"PatternDictionary\",\n    null,\n    null,\n    null,\n    \"IntermediateHalftoneRegion\",\n    null,\n    \"ImmediateHalftoneRegion\",\n    \"ImmediateLosslessHalftoneRegion\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"IntermediateGenericRegion\",\n    null,\n    \"ImmediateGenericRegion\",\n    \"ImmediateLosslessGenericRegion\",\n    \"IntermediateGenericRefinementRegion\",\n    null,\n    \"ImmediateGenericRefinementRegion\",\n    \"ImmediateLosslessGenericRefinementRegion\",\n    null,\n    null,\n    null,\n    null,\n    \"PageInformation\",\n    \"EndOfPage\",\n    \"EndOfStripe\",\n    \"EndOfFile\",\n    \"Profiles\",\n    \"Tables\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"Extension\",\n  ];\n\n  var CodingTemplates = [\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: 2, y: -1 },\n      { x: -4, y: 0 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: 2, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: 2, y: -1 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -3, y: -1 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -4, y: 0 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n  ];\n\n  var RefinementTemplates = [\n    {\n      coding: [\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n      ],\n      reference: [\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n        { x: 0, y: 0 },\n        { x: 1, y: 0 },\n        { x: -1, y: 1 },\n        { x: 0, y: 1 },\n        { x: 1, y: 1 },\n      ],\n    },\n    {\n      coding: [\n        { x: -1, y: -1 },\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n      ],\n      reference: [\n        { x: 0, y: -1 },\n        { x: -1, y: 0 },\n        { x: 0, y: 0 },\n        { x: 1, y: 0 },\n        { x: 0, y: 1 },\n        { x: 1, y: 1 },\n      ],\n    },\n  ];\n\n  // See 6.2.5.7 Decoding the bitmap.\n  var ReusedContexts = [\n    0x9b25, // 10011 0110010 0101\n    0x0795, // 0011 110010 101\n    0x00e5, // 001 11001 01\n    0x0195, // 011001 0101\n  ];\n\n  var RefinementReusedContexts = [\n    0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n    0x0008, // '0000' + '001000'\n  ];\n\n  function decodeBitmapTemplate0(width, height, decodingContext) {\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GB\");\n    var contextLabel,\n      i,\n      j,\n      pixel,\n      row,\n      row1,\n      row2,\n      bitmap = [];\n\n    // ...ooooo....\n    // ..ooooooo... Context template for current pixel (X)\n    // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n    var OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n    for (i = 0; i < height; i++) {\n      row = bitmap[i] = new Uint8Array(width);\n      row1 = i < 1 ? row : bitmap[i - 1];\n      row2 = i < 2 ? row : bitmap[i - 2];\n\n      // At the beginning of each row:\n      // Fill contextLabel with pixels that are above/right of (X)\n      contextLabel =\n        (row2[0] << 13) |\n        (row2[1] << 12) |\n        (row2[2] << 11) |\n        (row1[0] << 7) |\n        (row1[1] << 6) |\n        (row1[2] << 5) |\n        (row1[3] << 4);\n\n      for (j = 0; j < width; j++) {\n        row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n        // At each pixel: Clear contextLabel pixels that are shifted\n        // out of the context, then add new ones.\n        contextLabel =\n          ((contextLabel & OLD_PIXEL_MASK) << 1) |\n          (j + 3 < width ? row2[j + 3] << 11 : 0) |\n          (j + 4 < width ? row1[j + 4] << 4 : 0) |\n          pixel;\n      }\n    }\n\n    return bitmap;\n  }\n\n  // 6.2 Generic Region Decoding Procedure\n  function decodeBitmap(\n    mmr,\n    width,\n    height,\n    templateIndex,\n    prediction,\n    skip,\n    at,\n    decodingContext\n  ) {\n    if (mmr) {\n      const input = new Reader(\n        decodingContext.data,\n        decodingContext.start,\n        decodingContext.end\n      );\n      return decodeMMRBitmap(input, width, height, false);\n    }\n\n    // Use optimized version for the most common case\n    if (\n      templateIndex === 0 &&\n      !skip &&\n      !prediction &&\n      at.length === 4 &&\n      at[0].x === 3 &&\n      at[0].y === -1 &&\n      at[1].x === -3 &&\n      at[1].y === -1 &&\n      at[2].x === 2 &&\n      at[2].y === -2 &&\n      at[3].x === -2 &&\n      at[3].y === -2\n    ) {\n      return decodeBitmapTemplate0(width, height, decodingContext);\n    }\n\n    var useskip = !!skip;\n    var template = CodingTemplates[templateIndex].concat(at);\n\n    // Sorting is non-standard, and it is not required. But sorting increases\n    // the number of template bits that can be reused from the previous\n    // contextLabel in the main loop.\n    template.sort(function(a, b) {\n      return a.y - b.y || a.x - b.x;\n    });\n\n    var templateLength = template.length;\n    var templateX = new Int8Array(templateLength);\n    var templateY = new Int8Array(templateLength);\n    var changingTemplateEntries = [];\n    var reuseMask = 0,\n      minX = 0,\n      maxX = 0,\n      minY = 0;\n    var c, k;\n\n    for (k = 0; k < templateLength; k++) {\n      templateX[k] = template[k].x;\n      templateY[k] = template[k].y;\n      minX = Math.min(minX, template[k].x);\n      maxX = Math.max(maxX, template[k].x);\n      minY = Math.min(minY, template[k].y);\n      // Check if the template pixel appears in two consecutive context labels,\n      // so it can be reused. Otherwise, we add it to the list of changing\n      // template entries.\n      if (\n        k < templateLength - 1 &&\n        template[k].y === template[k + 1].y &&\n        template[k].x === template[k + 1].x - 1\n      ) {\n        reuseMask |= 1 << (templateLength - 1 - k);\n      } else {\n        changingTemplateEntries.push(k);\n      }\n    }\n    var changingEntriesLength = changingTemplateEntries.length;\n\n    var changingTemplateX = new Int8Array(changingEntriesLength);\n    var changingTemplateY = new Int8Array(changingEntriesLength);\n    var changingTemplateBit = new Uint16Array(changingEntriesLength);\n    for (c = 0; c < changingEntriesLength; c++) {\n      k = changingTemplateEntries[c];\n      changingTemplateX[c] = template[k].x;\n      changingTemplateY[c] = template[k].y;\n      changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n    }\n\n    // Get the safe bounding box edges from the width, height, minX, maxX, minY\n    var sbb_left = -minX;\n    var sbb_top = -minY;\n    var sbb_right = width - maxX;\n\n    var pseudoPixelContext = ReusedContexts[templateIndex];\n    var row = new Uint8Array(width);\n    var bitmap = [];\n\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n    var ltp = 0,\n      j,\n      i0,\n      j0,\n      contextLabel = 0,\n      bit,\n      shift;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          bitmap.push(row); // duplicate previous row\n          continue;\n        }\n      }\n      row = new Uint8Array(row);\n      bitmap.push(row);\n      for (j = 0; j < width; j++) {\n        if (useskip && skip[i][j]) {\n          row[j] = 0;\n          continue;\n        }\n        // Are we in the middle of a scanline, so we can reuse contextLabel\n        // bits?\n        if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n          // If yes, we can just shift the bits that are reusable and only\n          // fetch the remaining ones.\n          contextLabel = (contextLabel << 1) & reuseMask;\n          for (k = 0; k < changingEntriesLength; k++) {\n            i0 = i + changingTemplateY[k];\n            j0 = j + changingTemplateX[k];\n            bit = bitmap[i0][j0];\n            if (bit) {\n              bit = changingTemplateBit[k];\n              contextLabel |= bit;\n            }\n          }\n        } else {\n          // compute the contextLabel from scratch\n          contextLabel = 0;\n          shift = templateLength - 1;\n          for (k = 0; k < templateLength; k++, shift--) {\n            j0 = j + templateX[k];\n            if (j0 >= 0 && j0 < width) {\n              i0 = i + templateY[k];\n              if (i0 >= 0) {\n                bit = bitmap[i0][j0];\n                if (bit) {\n                  contextLabel |= bit << shift;\n                }\n              }\n            }\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n    return bitmap;\n  }\n\n  // 6.3.2 Generic Refinement Region Decoding Procedure\n  function decodeRefinement(\n    width,\n    height,\n    templateIndex,\n    referenceBitmap,\n    offsetX,\n    offsetY,\n    prediction,\n    at,\n    decodingContext\n  ) {\n    var codingTemplate = RefinementTemplates[templateIndex].coding;\n    if (templateIndex === 0) {\n      codingTemplate = codingTemplate.concat([at[0]]);\n    }\n    var codingTemplateLength = codingTemplate.length;\n    var codingTemplateX = new Int32Array(codingTemplateLength);\n    var codingTemplateY = new Int32Array(codingTemplateLength);\n    var k;\n    for (k = 0; k < codingTemplateLength; k++) {\n      codingTemplateX[k] = codingTemplate[k].x;\n      codingTemplateY[k] = codingTemplate[k].y;\n    }\n\n    var referenceTemplate = RefinementTemplates[templateIndex].reference;\n    if (templateIndex === 0) {\n      referenceTemplate = referenceTemplate.concat([at[1]]);\n    }\n    var referenceTemplateLength = referenceTemplate.length;\n    var referenceTemplateX = new Int32Array(referenceTemplateLength);\n    var referenceTemplateY = new Int32Array(referenceTemplateLength);\n    for (k = 0; k < referenceTemplateLength; k++) {\n      referenceTemplateX[k] = referenceTemplate[k].x;\n      referenceTemplateY[k] = referenceTemplate[k].y;\n    }\n    var referenceWidth = referenceBitmap[0].length;\n    var referenceHeight = referenceBitmap.length;\n\n    var pseudoPixelContext = RefinementReusedContexts[templateIndex];\n    var bitmap = [];\n\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n    var ltp = 0;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          throw new Jbig2Error(\"prediction is not supported\");\n        }\n      }\n      var row = new Uint8Array(width);\n      bitmap.push(row);\n      for (var j = 0; j < width; j++) {\n        var i0, j0;\n        var contextLabel = 0;\n        for (k = 0; k < codingTemplateLength; k++) {\n          i0 = i + codingTemplateY[k];\n          j0 = j + codingTemplateX[k];\n          if (i0 < 0 || j0 < 0 || j0 >= width) {\n            contextLabel <<= 1; // out of bound pixel\n          } else {\n            contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n          }\n        }\n        for (k = 0; k < referenceTemplateLength; k++) {\n          i0 = i + referenceTemplateY[k] - offsetY;\n          j0 = j + referenceTemplateX[k] - offsetX;\n          if (\n            i0 < 0 ||\n            i0 >= referenceHeight ||\n            j0 < 0 ||\n            j0 >= referenceWidth\n          ) {\n            contextLabel <<= 1; // out of bound pixel\n          } else {\n            contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n\n    return bitmap;\n  }\n\n  // 6.5.5 Decoding the symbol dictionary\n  function decodeSymbolDictionary(\n    huffman,\n    refinement,\n    symbols,\n    numberOfNewSymbols,\n    numberOfExportedSymbols,\n    huffmanTables,\n    templateIndex,\n    at,\n    refinementTemplateIndex,\n    refinementAt,\n    decodingContext,\n    huffmanInput\n  ) {\n    if (huffman && refinement) {\n      throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n    }\n\n    var newSymbols = [];\n    var currentHeight = 0;\n    var symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n    let tableB1, symbolWidths;\n    if (huffman) {\n      tableB1 = getStandardTable(1); // standard table B.1\n      symbolWidths = [];\n      symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n    }\n\n    while (newSymbols.length < numberOfNewSymbols) {\n      var deltaHeight = huffman\n        ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n      currentHeight += deltaHeight;\n      let currentWidth = 0,\n        totalWidth = 0;\n      const firstSymbol = huffman ? symbolWidths.length : 0;\n      while (true) {\n        var deltaWidth = huffman\n          ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n          : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n        if (deltaWidth === null) {\n          break; // OOB\n        }\n        currentWidth += deltaWidth;\n        totalWidth += currentWidth;\n        var bitmap;\n        if (refinement) {\n          // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n          var numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n          if (numberOfInstances > 1) {\n            bitmap = decodeTextRegion(\n              huffman,\n              refinement,\n              currentWidth,\n              currentHeight,\n              0,\n              numberOfInstances,\n              1, // strip size\n              symbols.concat(newSymbols),\n              symbolCodeLength,\n              0, // transposed\n              0, // ds offset\n              1, // top left 7.4.3.1.1\n              0, // OR operator\n              huffmanTables,\n              refinementTemplateIndex,\n              refinementAt,\n              decodingContext,\n              0,\n              huffmanInput\n            );\n          } else {\n            var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n            var rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n            var rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n            var symbol =\n              symbolId < symbols.length\n                ? symbols[symbolId]\n                : newSymbols[symbolId - symbols.length];\n            bitmap = decodeRefinement(\n              currentWidth,\n              currentHeight,\n              refinementTemplateIndex,\n              symbol,\n              rdx,\n              rdy,\n              false,\n              refinementAt,\n              decodingContext\n            );\n          }\n          newSymbols.push(bitmap);\n        } else if (huffman) {\n          // Store only symbol width and decode a collective bitmap when the\n          // height class is done.\n          symbolWidths.push(currentWidth);\n        } else {\n          // 6.5.8.1 Direct-coded symbol bitmap\n          bitmap = decodeBitmap(\n            false,\n            currentWidth,\n            currentHeight,\n            templateIndex,\n            false,\n            null,\n            at,\n            decodingContext\n          );\n          newSymbols.push(bitmap);\n        }\n      }\n      if (huffman && !refinement) {\n        // 6.5.9 Height class collective bitmap\n        const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n        huffmanInput.byteAlign();\n        let collectiveBitmap;\n        if (bitmapSize === 0) {\n          // Uncompressed collective bitmap\n          collectiveBitmap = readUncompressedBitmap(\n            huffmanInput,\n            totalWidth,\n            currentHeight\n          );\n        } else {\n          // MMR collective bitmap\n          const originalEnd = huffmanInput.end;\n          const bitmapEnd = huffmanInput.position + bitmapSize;\n          huffmanInput.end = bitmapEnd;\n          collectiveBitmap = decodeMMRBitmap(\n            huffmanInput,\n            totalWidth,\n            currentHeight,\n            false\n          );\n          huffmanInput.end = originalEnd;\n          huffmanInput.position = bitmapEnd;\n        }\n        const numberOfSymbolsDecoded = symbolWidths.length;\n        if (firstSymbol === numberOfSymbolsDecoded - 1) {\n          // collectiveBitmap is a single symbol.\n          newSymbols.push(collectiveBitmap);\n        } else {\n          // Divide collectiveBitmap into symbols.\n          let i,\n            y,\n            xMin = 0,\n            xMax,\n            bitmapWidth,\n            symbolBitmap;\n          for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n            bitmapWidth = symbolWidths[i];\n            xMax = xMin + bitmapWidth;\n            symbolBitmap = [];\n            for (y = 0; y < currentHeight; y++) {\n              symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n            }\n            newSymbols.push(symbolBitmap);\n            xMin = xMax;\n          }\n        }\n      }\n    }\n\n    // 6.5.10 Exported symbols\n    var exportedSymbols = [];\n    var flags = [],\n      currentFlag = false;\n    var totalSymbolsLength = symbols.length + numberOfNewSymbols;\n    while (flags.length < totalSymbolsLength) {\n      var runLength = huffman\n        ? tableB1.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IAEX\", decoder);\n      while (runLength--) {\n        flags.push(currentFlag);\n      }\n      currentFlag = !currentFlag;\n    }\n    for (var i = 0, ii = symbols.length; i < ii; i++) {\n      if (flags[i]) {\n        exportedSymbols.push(symbols[i]);\n      }\n    }\n    for (var j = 0; j < numberOfNewSymbols; i++, j++) {\n      if (flags[i]) {\n        exportedSymbols.push(newSymbols[j]);\n      }\n    }\n    return exportedSymbols;\n  }\n\n  function decodeTextRegion(\n    huffman,\n    refinement,\n    width,\n    height,\n    defaultPixelValue,\n    numberOfSymbolInstances,\n    stripSize,\n    inputSymbols,\n    symbolCodeLength,\n    transposed,\n    dsOffset,\n    referenceCorner,\n    combinationOperator,\n    huffmanTables,\n    refinementTemplateIndex,\n    refinementAt,\n    decodingContext,\n    logStripSize,\n    huffmanInput\n  ) {\n    if (huffman && refinement) {\n      throw new Jbig2Error(\"refinement with Huffman is not supported\");\n    }\n\n    // Prepare bitmap\n    var bitmap = [];\n    var i, row;\n    for (i = 0; i < height; i++) {\n      row = new Uint8Array(width);\n      if (defaultPixelValue) {\n        for (var j = 0; j < width; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      bitmap.push(row);\n    }\n\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n\n    var stripT = huffman\n      ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n      : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n    var firstS = 0;\n    i = 0;\n    while (i < numberOfSymbolInstances) {\n      var deltaT = huffman\n        ? huffmanTables.tableDeltaT.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n      stripT += deltaT;\n\n      var deltaFirstS = huffman\n        ? huffmanTables.tableFirstS.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n      firstS += deltaFirstS;\n      var currentS = firstS;\n      do {\n        let currentT = 0; // 6.4.9\n        if (stripSize > 1) {\n          currentT = huffman\n            ? huffmanInput.readBits(logStripSize)\n            : decodeInteger(contextCache, \"IAIT\", decoder);\n        }\n        var t = stripSize * stripT + currentT;\n        var symbolId = huffman\n          ? huffmanTables.symbolIDTable.decode(huffmanInput)\n          : decodeIAID(contextCache, decoder, symbolCodeLength);\n        var applyRefinement =\n          refinement &&\n          (huffman\n            ? huffmanInput.readBit()\n            : decodeInteger(contextCache, \"IARI\", decoder));\n        var symbolBitmap = inputSymbols[symbolId];\n        var symbolWidth = symbolBitmap[0].length;\n        var symbolHeight = symbolBitmap.length;\n        if (applyRefinement) {\n          var rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n          var rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n          var rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n          var rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n          symbolWidth += rdw;\n          symbolHeight += rdh;\n          symbolBitmap = decodeRefinement(\n            symbolWidth,\n            symbolHeight,\n            refinementTemplateIndex,\n            symbolBitmap,\n            (rdw >> 1) + rdx,\n            (rdh >> 1) + rdy,\n            false,\n            refinementAt,\n            decodingContext\n          );\n        }\n        var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n        var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n        var s2, t2, symbolRow;\n        if (transposed) {\n          // Place Symbol Bitmap from T1,S1\n          for (s2 = 0; s2 < symbolHeight; s2++) {\n            row = bitmap[offsetS + s2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[s2];\n            // To ignore Parts of Symbol bitmap which goes\n            // outside bitmap region\n            var maxWidth = Math.min(width - offsetT, symbolWidth);\n            switch (combinationOperator) {\n              case 0: // OR\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] |= symbolRow[t2];\n                }\n                break;\n              case 2: // XOR\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] ^= symbolRow[t2];\n                }\n                break;\n              default:\n                throw new Jbig2Error(\n                  `operator ${combinationOperator} is not supported`\n                );\n            }\n          }\n          currentS += symbolHeight - 1;\n        } else {\n          for (t2 = 0; t2 < symbolHeight; t2++) {\n            row = bitmap[offsetT + t2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[t2];\n            switch (combinationOperator) {\n              case 0: // OR\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] |= symbolRow[s2];\n                }\n                break;\n              case 2: // XOR\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] ^= symbolRow[s2];\n                }\n                break;\n              default:\n                throw new Jbig2Error(\n                  `operator ${combinationOperator} is not supported`\n                );\n            }\n          }\n          currentS += symbolWidth - 1;\n        }\n        i++;\n        var deltaS = huffman\n          ? huffmanTables.tableDeltaS.decode(huffmanInput)\n          : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n        if (deltaS === null) {\n          break; // OOB\n        }\n        currentS += deltaS + dsOffset;\n      } while (true);\n    }\n    return bitmap;\n  }\n\n  function decodePatternDictionary(\n    mmr,\n    patternWidth,\n    patternHeight,\n    maxPatternIndex,\n    template,\n    decodingContext\n  ) {\n    const at = [];\n    if (!mmr) {\n      at.push({\n        x: -patternWidth,\n        y: 0,\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1,\n        });\n        at.push({\n          x: 2,\n          y: -2,\n        });\n        at.push({\n          x: -2,\n          y: -2,\n        });\n      }\n    }\n    const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n    const collectiveBitmap = decodeBitmap(\n      mmr,\n      collectiveWidth,\n      patternHeight,\n      template,\n      false,\n      null,\n      at,\n      decodingContext\n    );\n    // Divide collective bitmap into patterns.\n    const patterns = [];\n    for (let i = 0; i <= maxPatternIndex; i++) {\n      const patternBitmap = [];\n      const xMin = patternWidth * i;\n      const xMax = xMin + patternWidth;\n      for (let y = 0; y < patternHeight; y++) {\n        patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n      }\n      patterns.push(patternBitmap);\n    }\n    return patterns;\n  }\n\n  function decodeHalftoneRegion(\n    mmr,\n    patterns,\n    template,\n    regionWidth,\n    regionHeight,\n    defaultPixelValue,\n    enableSkip,\n    combinationOperator,\n    gridWidth,\n    gridHeight,\n    gridOffsetX,\n    gridOffsetY,\n    gridVectorX,\n    gridVectorY,\n    decodingContext\n  ) {\n    const skip = null;\n    if (enableSkip) {\n      throw new Jbig2Error(\"skip is not supported\");\n    }\n    if (combinationOperator !== 0) {\n      throw new Jbig2Error(\n        \"operator \" +\n          combinationOperator +\n          \" is not supported in halftone region\"\n      );\n    }\n\n    // Prepare bitmap.\n    const regionBitmap = [];\n    let i, j, row;\n    for (i = 0; i < regionHeight; i++) {\n      row = new Uint8Array(regionWidth);\n      if (defaultPixelValue) {\n        for (j = 0; j < regionWidth; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      regionBitmap.push(row);\n    }\n\n    const numberOfPatterns = patterns.length;\n    const pattern0 = patterns[0];\n    const patternWidth = pattern0[0].length,\n      patternHeight = pattern0.length;\n    const bitsPerValue = log2(numberOfPatterns);\n    const at = [];\n    if (!mmr) {\n      at.push({\n        x: template <= 1 ? 3 : 2,\n        y: -1,\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1,\n        });\n        at.push({\n          x: 2,\n          y: -2,\n        });\n        at.push({\n          x: -2,\n          y: -2,\n        });\n      }\n    }\n    // Annex C. Gray-scale Image Decoding Procedure.\n    const grayScaleBitPlanes = [];\n    let mmrInput, bitmap;\n    if (mmr) {\n      // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n      // the end of each bitmap, so EOFBs must be decoded.\n      mmrInput = new Reader(\n        decodingContext.data,\n        decodingContext.start,\n        decodingContext.end\n      );\n    }\n    for (i = bitsPerValue - 1; i >= 0; i--) {\n      if (mmr) {\n        bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n      } else {\n        bitmap = decodeBitmap(\n          false,\n          gridWidth,\n          gridHeight,\n          template,\n          false,\n          skip,\n          at,\n          decodingContext\n        );\n      }\n      grayScaleBitPlanes[i] = bitmap;\n    }\n    // 6.6.5.2 Rendering the patterns.\n    let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n    for (mg = 0; mg < gridHeight; mg++) {\n      for (ng = 0; ng < gridWidth; ng++) {\n        bit = 0;\n        patternIndex = 0;\n        for (j = bitsPerValue - 1; j >= 0; j--) {\n          bit = grayScaleBitPlanes[j][mg][ng] ^ bit; // Gray decoding\n          patternIndex |= bit << j;\n        }\n        patternBitmap = patterns[patternIndex];\n        x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n        y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n        // Draw patternBitmap at (x, y).\n        if (\n          x >= 0 &&\n          x + patternWidth <= regionWidth &&\n          y >= 0 &&\n          y + patternHeight <= regionHeight\n        ) {\n          for (i = 0; i < patternHeight; i++) {\n            regionRow = regionBitmap[y + i];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionRow[x + j] |= patternRow[j];\n            }\n          }\n        } else {\n          let regionX, regionY;\n          for (i = 0; i < patternHeight; i++) {\n            regionY = y + i;\n            if (regionY < 0 || regionY >= regionHeight) {\n              continue;\n            }\n            regionRow = regionBitmap[regionY];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionX = x + j;\n              if (regionX >= 0 && regionX < regionWidth) {\n                regionRow[regionX] |= patternRow[j];\n              }\n            }\n          }\n        }\n      }\n    }\n    return regionBitmap;\n  }\n\n  function readSegmentHeader(data, start) {\n    var segmentHeader = {};\n    segmentHeader.number = readUint32(data, start);\n    var flags = data[start + 4];\n    var segmentType = flags & 0x3f;\n    if (!SegmentTypes[segmentType]) {\n      throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n    }\n    segmentHeader.type = segmentType;\n    segmentHeader.typeName = SegmentTypes[segmentType];\n    segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n    var pageAssociationFieldSize = !!(flags & 0x40);\n    var referredFlags = data[start + 5];\n    var referredToCount = (referredFlags >> 5) & 7;\n    var retainBits = [referredFlags & 31];\n    var position = start + 6;\n    if (referredFlags === 7) {\n      referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n      position += 3;\n      var bytes = (referredToCount + 7) >> 3;\n      retainBits[0] = data[position++];\n      while (--bytes > 0) {\n        retainBits.push(data[position++]);\n      }\n    } else if (referredFlags === 5 || referredFlags === 6) {\n      throw new Jbig2Error(\"invalid referred-to flags\");\n    }\n\n    segmentHeader.retainBits = retainBits;\n\n    let referredToSegmentNumberSize = 4;\n    if (segmentHeader.number <= 256) {\n      referredToSegmentNumberSize = 1;\n    } else if (segmentHeader.number <= 65536) {\n      referredToSegmentNumberSize = 2;\n    }\n    var referredTo = [];\n    var i, ii;\n    for (i = 0; i < referredToCount; i++) {\n      let number;\n      if (referredToSegmentNumberSize === 1) {\n        number = data[position];\n      } else if (referredToSegmentNumberSize === 2) {\n        number = readUint16(data, position);\n      } else {\n        number = readUint32(data, position);\n      }\n      referredTo.push(number);\n      position += referredToSegmentNumberSize;\n    }\n    segmentHeader.referredTo = referredTo;\n    if (!pageAssociationFieldSize) {\n      segmentHeader.pageAssociation = data[position++];\n    } else {\n      segmentHeader.pageAssociation = readUint32(data, position);\n      position += 4;\n    }\n    segmentHeader.length = readUint32(data, position);\n    position += 4;\n\n    if (segmentHeader.length === 0xffffffff) {\n      // 7.2.7 Segment data length, unknown segment length\n      if (segmentType === 38) {\n        // ImmediateGenericRegion\n        var genericRegionInfo = readRegionSegmentInformation(data, position);\n        var genericRegionSegmentFlags =\n          data[position + RegionSegmentInformationFieldLength];\n        var genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n        // searching for the segment end\n        var searchPatternLength = 6;\n        var searchPattern = new Uint8Array(searchPatternLength);\n        if (!genericRegionMmr) {\n          searchPattern[0] = 0xff;\n          searchPattern[1] = 0xac;\n        }\n        searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n        searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n        searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n        searchPattern[5] = genericRegionInfo.height & 0xff;\n        for (i = position, ii = data.length; i < ii; i++) {\n          var j = 0;\n          while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n            j++;\n          }\n          if (j === searchPatternLength) {\n            segmentHeader.length = i + searchPatternLength;\n            break;\n          }\n        }\n        if (segmentHeader.length === 0xffffffff) {\n          throw new Jbig2Error(\"segment end was not found\");\n        }\n      } else {\n        throw new Jbig2Error(\"invalid unknown segment length\");\n      }\n    }\n    segmentHeader.headerEnd = position;\n    return segmentHeader;\n  }\n\n  function readSegments(header, data, start, end) {\n    var segments = [];\n    var position = start;\n    while (position < end) {\n      var segmentHeader = readSegmentHeader(data, position);\n      position = segmentHeader.headerEnd;\n      var segment = {\n        header: segmentHeader,\n        data,\n      };\n      if (!header.randomAccess) {\n        segment.start = position;\n        position += segmentHeader.length;\n        segment.end = position;\n      }\n      segments.push(segment);\n      if (segmentHeader.type === 51) {\n        break; // end of file is found\n      }\n    }\n    if (header.randomAccess) {\n      for (var i = 0, ii = segments.length; i < ii; i++) {\n        segments[i].start = position;\n        position += segments[i].header.length;\n        segments[i].end = position;\n      }\n    }\n    return segments;\n  }\n\n  // 7.4.1 Region segment information field\n  function readRegionSegmentInformation(data, start) {\n    return {\n      width: readUint32(data, start),\n      height: readUint32(data, start + 4),\n      x: readUint32(data, start + 8),\n      y: readUint32(data, start + 12),\n      combinationOperator: data[start + 16] & 7,\n    };\n  }\n  var RegionSegmentInformationFieldLength = 17;\n\n  function processSegment(segment, visitor) {\n    var header = segment.header;\n\n    var data = segment.data,\n      position = segment.start,\n      end = segment.end;\n    var args, at, i, atLength;\n    switch (header.type) {\n      case 0: // SymbolDictionary\n        // 7.4.2 Symbol dictionary segment syntax\n        var dictionary = {};\n        var dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n        dictionary.huffman = !!(dictionaryFlags & 1);\n        dictionary.refinement = !!(dictionaryFlags & 2);\n        dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n        dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n        dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n        dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n        dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n        dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n        dictionary.template = (dictionaryFlags >> 10) & 3;\n        dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n        position += 2;\n        if (!dictionary.huffman) {\n          atLength = dictionary.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          dictionary.at = at;\n        }\n        if (dictionary.refinement && !dictionary.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          dictionary.refinementAt = at;\n        }\n        dictionary.numberOfExportedSymbols = readUint32(data, position);\n        position += 4;\n        dictionary.numberOfNewSymbols = readUint32(data, position);\n        position += 4;\n        args = [\n          dictionary,\n          header.number,\n          header.referredTo,\n          data,\n          position,\n          end,\n        ];\n        break;\n      case 6: // ImmediateTextRegion\n      case 7: // ImmediateLosslessTextRegion\n        var textRegion = {};\n        textRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var textRegionSegmentFlags = readUint16(data, position);\n        position += 2;\n        textRegion.huffman = !!(textRegionSegmentFlags & 1);\n        textRegion.refinement = !!(textRegionSegmentFlags & 2);\n        textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n        textRegion.stripSize = 1 << textRegion.logStripSize;\n        textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n        textRegion.transposed = !!(textRegionSegmentFlags & 64);\n        textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n        textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n        textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n        textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n        if (textRegion.huffman) {\n          var textRegionHuffmanFlags = readUint16(data, position);\n          position += 2;\n          textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n          textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n          textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n          textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n          textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n          textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n          textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n          textRegion.huffmanRefinementSizeSelector = !!(\n            textRegionHuffmanFlags & 0x4000\n          );\n        }\n        if (textRegion.refinement && !textRegion.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          textRegion.refinementAt = at;\n        }\n        textRegion.numberOfSymbolInstances = readUint32(data, position);\n        position += 4;\n        args = [textRegion, header.referredTo, data, position, end];\n        break;\n      case 16: // PatternDictionary\n        // 7.4.4. Pattern dictionary segment syntax\n        const patternDictionary = {};\n        const patternDictionaryFlags = data[position++];\n        patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n        patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n        patternDictionary.patternWidth = data[position++];\n        patternDictionary.patternHeight = data[position++];\n        patternDictionary.maxPatternIndex = readUint32(data, position);\n        position += 4;\n        args = [patternDictionary, header.number, data, position, end];\n        break;\n      case 22: // ImmediateHalftoneRegion\n      case 23: // ImmediateLosslessHalftoneRegion\n        // 7.4.5 Halftone region segment syntax\n        const halftoneRegion = {};\n        halftoneRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        const halftoneRegionFlags = data[position++];\n        halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n        halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n        halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n        halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n        halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n        halftoneRegion.gridWidth = readUint32(data, position);\n        position += 4;\n        halftoneRegion.gridHeight = readUint32(data, position);\n        position += 4;\n        halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n        position += 4;\n        halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n        position += 4;\n        halftoneRegion.gridVectorX = readUint16(data, position);\n        position += 2;\n        halftoneRegion.gridVectorY = readUint16(data, position);\n        position += 2;\n        args = [halftoneRegion, header.referredTo, data, position, end];\n        break;\n      case 38: // ImmediateGenericRegion\n      case 39: // ImmediateLosslessGenericRegion\n        var genericRegion = {};\n        genericRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var genericRegionSegmentFlags = data[position++];\n        genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n        genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n        genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n        if (!genericRegion.mmr) {\n          atLength = genericRegion.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          genericRegion.at = at;\n        }\n        args = [genericRegion, data, position, end];\n        break;\n      case 48: // PageInformation\n        var pageInfo = {\n          width: readUint32(data, position),\n          height: readUint32(data, position + 4),\n          resolutionX: readUint32(data, position + 8),\n          resolutionY: readUint32(data, position + 12),\n        };\n        if (pageInfo.height === 0xffffffff) {\n          delete pageInfo.height;\n        }\n        var pageSegmentFlags = data[position + 16];\n        readUint16(data, position + 17); // pageStripingInformation\n        pageInfo.lossless = !!(pageSegmentFlags & 1);\n        pageInfo.refinement = !!(pageSegmentFlags & 2);\n        pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n        pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n        pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n        pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n        args = [pageInfo];\n        break;\n      case 49: // EndOfPage\n        break;\n      case 50: // EndOfStripe\n        break;\n      case 51: // EndOfFile\n        break;\n      case 53: // Tables\n        args = [header.number, data, position, end];\n        break;\n      case 62: // 7.4.15 defines 2 extension types which\n        // are comments and can be ignored.\n        break;\n      default:\n        throw new Jbig2Error(\n          `segment type ${header.typeName}(${header.type})` +\n            \" is not implemented\"\n        );\n    }\n    var callbackName = \"on\" + header.typeName;\n    if (callbackName in visitor) {\n      visitor[callbackName].apply(visitor, args);\n    }\n  }\n\n  function processSegments(segments, visitor) {\n    for (var i = 0, ii = segments.length; i < ii; i++) {\n      processSegment(segments[i], visitor);\n    }\n  }\n\n  function parseJbig2Chunks(chunks) {\n    var visitor = new SimpleSegmentVisitor();\n    for (var i = 0, ii = chunks.length; i < ii; i++) {\n      var chunk = chunks[i];\n      var segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n      processSegments(segments, visitor);\n    }\n    return visitor.buffer;\n  }\n\n  function parseJbig2(data) {\n    const end = data.length;\n    let position = 0;\n\n    if (\n      data[position] !== 0x97 ||\n      data[position + 1] !== 0x4a ||\n      data[position + 2] !== 0x42 ||\n      data[position + 3] !== 0x32 ||\n      data[position + 4] !== 0x0d ||\n      data[position + 5] !== 0x0a ||\n      data[position + 6] !== 0x1a ||\n      data[position + 7] !== 0x0a\n    ) {\n      throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n    }\n\n    const header = Object.create(null);\n    position += 8;\n    const flags = data[position++];\n    header.randomAccess = !(flags & 1);\n    if (!(flags & 2)) {\n      header.numberOfPages = readUint32(data, position);\n      position += 4;\n    }\n\n    const segments = readSegments(header, data, position, end);\n    const visitor = new SimpleSegmentVisitor();\n    processSegments(segments, visitor);\n\n    const { width, height } = visitor.currentPageInfo;\n    const bitPacked = visitor.buffer;\n    const imgData = new Uint8ClampedArray(width * height);\n    let q = 0,\n      k = 0;\n    for (let i = 0; i < height; i++) {\n      let mask = 0,\n        buffer;\n      for (let j = 0; j < width; j++) {\n        if (!mask) {\n          mask = 128;\n          buffer = bitPacked[k++];\n        }\n        imgData[q++] = buffer & mask ? 0 : 255;\n        mask >>= 1;\n      }\n    }\n\n    return { imgData, width, height };\n  }\n\n  function SimpleSegmentVisitor() {}\n\n  SimpleSegmentVisitor.prototype = {\n    onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {\n      this.currentPageInfo = info;\n      var rowSize = (info.width + 7) >> 3;\n      var buffer = new Uint8ClampedArray(rowSize * info.height);\n      // The contents of ArrayBuffers are initialized to 0.\n      // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n      if (info.defaultPixelValue) {\n        for (var i = 0, ii = buffer.length; i < ii; i++) {\n          buffer[i] = 0xff;\n        }\n      }\n      this.buffer = buffer;\n    },\n    drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {\n      var pageInfo = this.currentPageInfo;\n      var width = regionInfo.width,\n        height = regionInfo.height;\n      var rowSize = (pageInfo.width + 7) >> 3;\n      var combinationOperator = pageInfo.combinationOperatorOverride\n        ? regionInfo.combinationOperator\n        : pageInfo.combinationOperator;\n      var buffer = this.buffer;\n      var mask0 = 128 >> (regionInfo.x & 7);\n      var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n      var i, j, mask, offset;\n      switch (combinationOperator) {\n        case 0: // OR\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] |= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        case 2: // XOR\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] ^= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        default:\n          throw new Jbig2Error(\n            `operator ${combinationOperator} is not supported`\n          );\n      }\n    },\n    onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(\n      region,\n      data,\n      start,\n      end\n    ) {\n      var regionInfo = region.info;\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeBitmap(\n        region.mmr,\n        regionInfo.width,\n        regionInfo.height,\n        region.template,\n        region.prediction,\n        null,\n        region.at,\n        decodingContext\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {\n      this.onImmediateGenericRegion.apply(this, arguments);\n    },\n    onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(\n      dictionary,\n      currentSegment,\n      referredSegments,\n      data,\n      start,\n      end\n    ) {\n      let huffmanTables, huffmanInput;\n      if (dictionary.huffman) {\n        huffmanTables = getSymbolDictionaryHuffmanTables(\n          dictionary,\n          referredSegments,\n          this.customTables\n        );\n        huffmanInput = new Reader(data, start, end);\n      }\n\n      // Combines exported symbols from all referred segments\n      var symbols = this.symbols;\n      if (!symbols) {\n        this.symbols = symbols = {};\n      }\n\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        const referredSymbols = symbols[referredSegments[i]];\n        // referredSymbols is undefined when we have a reference to a Tables\n        // segment instead of a SymbolDictionary.\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n\n      var decodingContext = new DecodingContext(data, start, end);\n      symbols[currentSegment] = decodeSymbolDictionary(\n        dictionary.huffman,\n        dictionary.refinement,\n        inputSymbols,\n        dictionary.numberOfNewSymbols,\n        dictionary.numberOfExportedSymbols,\n        huffmanTables,\n        dictionary.template,\n        dictionary.at,\n        dictionary.refinementTemplate,\n        dictionary.refinementAt,\n        decodingContext,\n        huffmanInput\n      );\n    },\n    onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(\n      region,\n      referredSegments,\n      data,\n      start,\n      end\n    ) {\n      var regionInfo = region.info;\n      let huffmanTables, huffmanInput;\n\n      // Combines exported symbols from all referred segments\n      var symbols = this.symbols;\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        const referredSymbols = symbols[referredSegments[i]];\n        // referredSymbols is undefined when we have a reference to a Tables\n        // segment instead of a SymbolDictionary.\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n      var symbolCodeLength = log2(inputSymbols.length);\n      if (region.huffman) {\n        huffmanInput = new Reader(data, start, end);\n        huffmanTables = getTextRegionHuffmanTables(\n          region,\n          referredSegments,\n          this.customTables,\n          inputSymbols.length,\n          huffmanInput\n        );\n      }\n\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeTextRegion(\n        region.huffman,\n        region.refinement,\n        regionInfo.width,\n        regionInfo.height,\n        region.defaultPixelValue,\n        region.numberOfSymbolInstances,\n        region.stripSize,\n        inputSymbols,\n        symbolCodeLength,\n        region.transposed,\n        region.dsOffset,\n        region.referenceCorner,\n        region.combinationOperator,\n        huffmanTables,\n        region.refinementTemplate,\n        region.refinementAt,\n        decodingContext,\n        region.logStripSize,\n        huffmanInput\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {\n      this.onImmediateTextRegion.apply(this, arguments);\n    },\n    onPatternDictionary(dictionary, currentSegment, data, start, end) {\n      let patterns = this.patterns;\n      if (!patterns) {\n        this.patterns = patterns = {};\n      }\n      const decodingContext = new DecodingContext(data, start, end);\n      patterns[currentSegment] = decodePatternDictionary(\n        dictionary.mmr,\n        dictionary.patternWidth,\n        dictionary.patternHeight,\n        dictionary.maxPatternIndex,\n        dictionary.template,\n        decodingContext\n      );\n    },\n    onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n      // HalftoneRegion refers to exactly one PatternDictionary.\n      const patterns = this.patterns[referredSegments[0]];\n      const regionInfo = region.info;\n      const decodingContext = new DecodingContext(data, start, end);\n      const bitmap = decodeHalftoneRegion(\n        region.mmr,\n        patterns,\n        region.template,\n        regionInfo.width,\n        regionInfo.height,\n        region.defaultPixelValue,\n        region.enableSkip,\n        region.combinationOperator,\n        region.gridWidth,\n        region.gridHeight,\n        region.gridOffsetX,\n        region.gridOffsetY,\n        region.gridVectorX,\n        region.gridVectorY,\n        decodingContext\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessHalftoneRegion() {\n      this.onImmediateHalftoneRegion.apply(this, arguments);\n    },\n    onTables(currentSegment, data, start, end) {\n      let customTables = this.customTables;\n      if (!customTables) {\n        this.customTables = customTables = {};\n      }\n      customTables[currentSegment] = decodeTablesSegment(data, start, end);\n    },\n  };\n\n  function HuffmanLine(lineData) {\n    if (lineData.length === 2) {\n      // OOB line.\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      // Normal, upper range or lower range line.\n      // Upper range lines are processed like normal lines.\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = lineData[4] === \"lower\";\n    }\n  }\n\n  function HuffmanTreeNode(line) {\n    this.children = [];\n    if (line) {\n      // Leaf node\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      // Intermediate or root node\n      this.isLeaf = false;\n    }\n  }\n\n  HuffmanTreeNode.prototype = {\n    buildTree(line, shift) {\n      const bit = (line.prefixCode >> shift) & 1;\n      if (shift <= 0) {\n        // Create a leaf node.\n        this.children[bit] = new HuffmanTreeNode(line);\n      } else {\n        // Create an intermediate node and continue recursively.\n        let node = this.children[bit];\n        if (!node) {\n          this.children[bit] = node = new HuffmanTreeNode(null);\n        }\n        node.buildTree(line, shift - 1);\n      }\n    },\n    decodeNode(reader) {\n      if (this.isLeaf) {\n        if (this.isOOB) {\n          return null;\n        }\n        const htOffset = reader.readBits(this.rangeLength);\n        return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n      }\n      const node = this.children[reader.readBit()];\n      if (!node) {\n        throw new Jbig2Error(\"invalid Huffman data\");\n      }\n      return node.decodeNode(reader);\n    },\n  };\n\n  function HuffmanTable(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n    // Create Huffman tree.\n    this.rootNode = new HuffmanTreeNode(null);\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      const line = lines[i];\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n\n  HuffmanTable.prototype = {\n    decode(reader) {\n      return this.rootNode.decodeNode(reader);\n    },\n    assignPrefixCodes(lines) {\n      // Annex B.3 Assigning the prefix codes.\n      const linesLength = lines.length;\n      let prefixLengthMax = 0;\n      for (let i = 0; i < linesLength; i++) {\n        prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n      }\n\n      const histogram = new Uint32Array(prefixLengthMax + 1);\n      for (let i = 0; i < linesLength; i++) {\n        histogram[lines[i].prefixLength]++;\n      }\n      let currentLength = 1,\n        firstCode = 0,\n        currentCode,\n        currentTemp,\n        line;\n      histogram[0] = 0;\n\n      while (currentLength <= prefixLengthMax) {\n        firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n        currentCode = firstCode;\n        currentTemp = 0;\n        while (currentTemp < linesLength) {\n          line = lines[currentTemp];\n          if (line.prefixLength === currentLength) {\n            line.prefixCode = currentCode;\n            currentCode++;\n          }\n          currentTemp++;\n        }\n        currentLength++;\n      }\n    },\n  };\n\n  function decodeTablesSegment(data, start, end) {\n    // Decodes a Tables segment, i.e., a custom Huffman table.\n    // Annex B.2 Code table structure.\n    const flags = data[start];\n    const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n    const highestValue = readUint32(data, start + 5) & 0xffffffff;\n    const reader = new Reader(data, start + 9, end);\n\n    const prefixSizeBits = ((flags >> 1) & 7) + 1;\n    const rangeSizeBits = ((flags >> 4) & 7) + 1;\n    const lines = [];\n    let prefixLength,\n      rangeLength,\n      currentRangeLow = lowestValue;\n\n    // Normal table lines\n    do {\n      prefixLength = reader.readBits(prefixSizeBits);\n      rangeLength = reader.readBits(rangeSizeBits);\n      lines.push(\n        new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n      );\n      currentRangeLow += 1 << rangeLength;\n    } while (currentRangeLow < highestValue);\n\n    // Lower range table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(\n      new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"])\n    );\n\n    // Upper range table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n    if (flags & 1) {\n      // Out-of-band table line\n      prefixLength = reader.readBits(prefixSizeBits);\n      lines.push(new HuffmanLine([prefixLength, 0]));\n    }\n\n    return new HuffmanTable(lines, false);\n  }\n\n  const standardTablesCache = {};\n\n  function getStandardTable(number) {\n    // Annex B.5 Standard Huffman tables.\n    let table = standardTablesCache[number];\n    if (table) {\n      return table;\n    }\n    let lines;\n    switch (number) {\n      case 1:\n        lines = [\n          [0, 1, 4, 0x0],\n          [16, 2, 8, 0x2],\n          [272, 3, 16, 0x6],\n          [65808, 3, 32, 0x7], // upper\n        ];\n        break;\n      case 2:\n        lines = [\n          [0, 1, 0, 0x0],\n          [1, 2, 0, 0x2],\n          [2, 3, 0, 0x6],\n          [3, 4, 3, 0xe],\n          [11, 5, 6, 0x1e],\n          [75, 6, 32, 0x3e], // upper\n          [6, 0x3f], // OOB\n        ];\n        break;\n      case 3:\n        lines = [\n          [-256, 8, 8, 0xfe],\n          [0, 1, 0, 0x0],\n          [1, 2, 0, 0x2],\n          [2, 3, 0, 0x6],\n          [3, 4, 3, 0xe],\n          [11, 5, 6, 0x1e],\n          [-257, 8, 32, 0xff, \"lower\"],\n          [75, 7, 32, 0x7e], // upper\n          [6, 0x3e], // OOB\n        ];\n        break;\n      case 4:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 0, 0x6],\n          [4, 4, 3, 0xe],\n          [12, 5, 6, 0x1e],\n          [76, 5, 32, 0x1f], // upper\n        ];\n        break;\n      case 5:\n        lines = [\n          [-255, 7, 8, 0x7e],\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 0, 0x6],\n          [4, 4, 3, 0xe],\n          [12, 5, 6, 0x1e],\n          [-256, 7, 32, 0x7f, \"lower\"],\n          [76, 6, 32, 0x3e], // upper\n        ];\n        break;\n      case 6:\n        lines = [\n          [-2048, 5, 10, 0x1c],\n          [-1024, 4, 9, 0x8],\n          [-512, 4, 8, 0x9],\n          [-256, 4, 7, 0xa],\n          [-128, 5, 6, 0x1d],\n          [-64, 5, 5, 0x1e],\n          [-32, 4, 5, 0xb],\n          [0, 2, 7, 0x0],\n          [128, 3, 7, 0x2],\n          [256, 3, 8, 0x3],\n          [512, 4, 9, 0xc],\n          [1024, 4, 10, 0xd],\n          [-2049, 6, 32, 0x3e, \"lower\"],\n          [2048, 6, 32, 0x3f], // upper\n        ];\n        break;\n      case 7:\n        lines = [\n          [-1024, 4, 9, 0x8],\n          [-512, 3, 8, 0x0],\n          [-256, 4, 7, 0x9],\n          [-128, 5, 6, 0x1a],\n          [-64, 5, 5, 0x1b],\n          [-32, 4, 5, 0xa],\n          [0, 4, 5, 0xb],\n          [32, 5, 5, 0x1c],\n          [64, 5, 6, 0x1d],\n          [128, 4, 7, 0xc],\n          [256, 3, 8, 0x1],\n          [512, 3, 9, 0x2],\n          [1024, 3, 10, 0x3],\n          [-1025, 5, 32, 0x1e, \"lower\"],\n          [2048, 5, 32, 0x1f], // upper\n        ];\n        break;\n      case 8:\n        lines = [\n          [-15, 8, 3, 0xfc],\n          [-7, 9, 1, 0x1fc],\n          [-5, 8, 1, 0xfd],\n          [-3, 9, 0, 0x1fd],\n          [-2, 7, 0, 0x7c],\n          [-1, 4, 0, 0xa],\n          [0, 2, 1, 0x0],\n          [2, 5, 0, 0x1a],\n          [3, 6, 0, 0x3a],\n          [4, 3, 4, 0x4],\n          [20, 6, 1, 0x3b],\n          [22, 4, 4, 0xb],\n          [38, 4, 5, 0xc],\n          [70, 5, 6, 0x1b],\n          [134, 5, 7, 0x1c],\n          [262, 6, 7, 0x3c],\n          [390, 7, 8, 0x7d],\n          [646, 6, 10, 0x3d],\n          [-16, 9, 32, 0x1fe, \"lower\"],\n          [1670, 9, 32, 0x1ff], // upper\n          [2, 0x1], // OOB\n        ];\n        break;\n      case 9:\n        lines = [\n          [-31, 8, 4, 0xfc],\n          [-15, 9, 2, 0x1fc],\n          [-11, 8, 2, 0xfd],\n          [-7, 9, 1, 0x1fd],\n          [-5, 7, 1, 0x7c],\n          [-3, 4, 1, 0xa],\n          [-1, 3, 1, 0x2],\n          [1, 3, 1, 0x3],\n          [3, 5, 1, 0x1a],\n          [5, 6, 1, 0x3a],\n          [7, 3, 5, 0x4],\n          [39, 6, 2, 0x3b],\n          [43, 4, 5, 0xb],\n          [75, 4, 6, 0xc],\n          [139, 5, 7, 0x1b],\n          [267, 5, 8, 0x1c],\n          [523, 6, 8, 0x3c],\n          [779, 7, 9, 0x7d],\n          [1291, 6, 11, 0x3d],\n          [-32, 9, 32, 0x1fe, \"lower\"],\n          [3339, 9, 32, 0x1ff], // upper\n          [2, 0x0], // OOB\n        ];\n        break;\n      case 10:\n        lines = [\n          [-21, 7, 4, 0x7a],\n          [-5, 8, 0, 0xfc],\n          [-4, 7, 0, 0x7b],\n          [-3, 5, 0, 0x18],\n          [-2, 2, 2, 0x0],\n          [2, 5, 0, 0x19],\n          [3, 6, 0, 0x36],\n          [4, 7, 0, 0x7c],\n          [5, 8, 0, 0xfd],\n          [6, 2, 6, 0x1],\n          [70, 5, 5, 0x1a],\n          [102, 6, 5, 0x37],\n          [134, 6, 6, 0x38],\n          [198, 6, 7, 0x39],\n          [326, 6, 8, 0x3a],\n          [582, 6, 9, 0x3b],\n          [1094, 6, 10, 0x3c],\n          [2118, 7, 11, 0x7d],\n          [-22, 8, 32, 0xfe, \"lower\"],\n          [4166, 8, 32, 0xff], // upper\n          [2, 0x2], // OOB\n        ];\n        break;\n      case 11:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 1, 0x2],\n          [4, 4, 0, 0xc],\n          [5, 4, 1, 0xd],\n          [7, 5, 1, 0x1c],\n          [9, 5, 2, 0x1d],\n          [13, 6, 2, 0x3c],\n          [17, 7, 2, 0x7a],\n          [21, 7, 3, 0x7b],\n          [29, 7, 4, 0x7c],\n          [45, 7, 5, 0x7d],\n          [77, 7, 6, 0x7e],\n          [141, 7, 32, 0x7f], // upper\n        ];\n        break;\n      case 12:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 1, 0x6],\n          [5, 5, 0, 0x1c],\n          [6, 5, 1, 0x1d],\n          [8, 6, 1, 0x3c],\n          [10, 7, 0, 0x7a],\n          [11, 7, 1, 0x7b],\n          [13, 7, 2, 0x7c],\n          [17, 7, 3, 0x7d],\n          [25, 7, 4, 0x7e],\n          [41, 8, 5, 0xfe],\n          [73, 8, 32, 0xff], // upper\n        ];\n        break;\n      case 13:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 3, 0, 0x4],\n          [3, 4, 0, 0xc],\n          [4, 5, 0, 0x1c],\n          [5, 4, 1, 0xd],\n          [7, 3, 3, 0x5],\n          [15, 6, 1, 0x3a],\n          [17, 6, 2, 0x3b],\n          [21, 6, 3, 0x3c],\n          [29, 6, 4, 0x3d],\n          [45, 6, 5, 0x3e],\n          [77, 7, 6, 0x7e],\n          [141, 7, 32, 0x7f], // upper\n        ];\n        break;\n      case 14:\n        lines = [\n          [-2, 3, 0, 0x4],\n          [-1, 3, 0, 0x5],\n          [0, 1, 0, 0x0],\n          [1, 3, 0, 0x6],\n          [2, 3, 0, 0x7],\n        ];\n        break;\n      case 15:\n        lines = [\n          [-24, 7, 4, 0x7c],\n          [-8, 6, 2, 0x3c],\n          [-4, 5, 1, 0x1c],\n          [-2, 4, 0, 0xc],\n          [-1, 3, 0, 0x4],\n          [0, 1, 0, 0x0],\n          [1, 3, 0, 0x5],\n          [2, 4, 0, 0xd],\n          [3, 5, 1, 0x1d],\n          [5, 6, 2, 0x3d],\n          [9, 7, 4, 0x7d],\n          [-25, 7, 32, 0x7e, \"lower\"],\n          [25, 7, 32, 0x7f], // upper\n        ];\n        break;\n      default:\n        throw new Jbig2Error(`standard table B.${number} does not exist`);\n    }\n\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      lines[i] = new HuffmanLine(lines[i]);\n    }\n    table = new HuffmanTable(lines, true);\n    standardTablesCache[number] = table;\n    return table;\n  }\n\n  function Reader(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n\n  Reader.prototype = {\n    readBit() {\n      if (this.shift < 0) {\n        if (this.position >= this.end) {\n          throw new Jbig2Error(\"end of data while reading bit\");\n        }\n        this.currentByte = this.data[this.position++];\n        this.shift = 7;\n      }\n      const bit = (this.currentByte >> this.shift) & 1;\n      this.shift--;\n      return bit;\n    },\n\n    readBits(numBits) {\n      let result = 0,\n        i;\n      for (i = numBits - 1; i >= 0; i--) {\n        result |= this.readBit() << i;\n      }\n      return result;\n    },\n\n    byteAlign() {\n      this.shift = -1;\n    },\n\n    next() {\n      if (this.position >= this.end) {\n        return -1;\n      }\n      return this.data[this.position++];\n    },\n  };\n\n  function getCustomHuffmanTable(index, referredTo, customTables) {\n    // Returns a Tables segment that has been earlier decoded.\n    // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n    let currentIndex = 0;\n    for (let i = 0, ii = referredTo.length; i < ii; i++) {\n      const table = customTables[referredTo[i]];\n      if (table) {\n        if (index === currentIndex) {\n          return table;\n        }\n        currentIndex++;\n      }\n    }\n    throw new Jbig2Error(\"can't find custom Huffman table\");\n  }\n\n  function getTextRegionHuffmanTables(\n    textRegion,\n    referredTo,\n    customTables,\n    numberOfSymbols,\n    reader\n  ) {\n    // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n    // Read code lengths for RUNCODEs 0...34.\n    const codes = [];\n    for (let i = 0; i <= 34; i++) {\n      const codeLength = reader.readBits(4);\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n    }\n    // Assign Huffman codes for RUNCODEs.\n    const runCodesTable = new HuffmanTable(codes, false);\n\n    // Read a Huffman code using the assignment above.\n    // Interpret the RUNCODE codes and the additional bits (if any).\n    codes.length = 0;\n    for (let i = 0; i < numberOfSymbols; ) {\n      const codeLength = runCodesTable.decode(reader);\n      if (codeLength >= 32) {\n        let repeatedLength, numberOfRepeats, j;\n        switch (codeLength) {\n          case 32:\n            if (i === 0) {\n              throw new Jbig2Error(\"no previous value in symbol ID table\");\n            }\n            numberOfRepeats = reader.readBits(2) + 3;\n            repeatedLength = codes[i - 1].prefixLength;\n            break;\n          case 33:\n            numberOfRepeats = reader.readBits(3) + 3;\n            repeatedLength = 0;\n            break;\n          case 34:\n            numberOfRepeats = reader.readBits(7) + 11;\n            repeatedLength = 0;\n            break;\n          default:\n            throw new Jbig2Error(\"invalid code length in symbol ID table\");\n        }\n        for (j = 0; j < numberOfRepeats; j++) {\n          codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n          i++;\n        }\n      } else {\n        codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n        i++;\n      }\n    }\n    reader.byteAlign();\n    const symbolIDTable = new HuffmanTable(codes, false);\n\n    // 7.4.3.1.6 Text region segment Huffman table selection\n\n    let customIndex = 0,\n      tableFirstS,\n      tableDeltaS,\n      tableDeltaT;\n\n    switch (textRegion.huffmanFS) {\n      case 0:\n      case 1:\n        tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n        break;\n      case 3:\n        tableFirstS = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman FS selector\");\n    }\n\n    switch (textRegion.huffmanDS) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n        break;\n      case 3:\n        tableDeltaS = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DS selector\");\n    }\n\n    switch (textRegion.huffmanDT) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n        break;\n      case 3:\n        tableDeltaT = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DT selector\");\n    }\n\n    if (textRegion.refinement) {\n      // Load tables RDW, RDH, RDX and RDY.\n      throw new Jbig2Error(\"refinement with Huffman is not supported\");\n    }\n\n    return {\n      symbolIDTable,\n      tableFirstS,\n      tableDeltaS,\n      tableDeltaT,\n    };\n  }\n\n  function getSymbolDictionaryHuffmanTables(\n    dictionary,\n    referredTo,\n    customTables\n  ) {\n    // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n    let customIndex = 0,\n      tableDeltaHeight,\n      tableDeltaWidth;\n    switch (dictionary.huffmanDHSelector) {\n      case 0:\n      case 1:\n        tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n        break;\n      case 3:\n        tableDeltaHeight = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DH selector\");\n    }\n\n    switch (dictionary.huffmanDWSelector) {\n      case 0:\n      case 1:\n        tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n        break;\n      case 3:\n        tableDeltaWidth = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DW selector\");\n    }\n\n    let tableBitmapSize, tableAggregateInstances;\n    if (dictionary.bitmapSizeSelector) {\n      tableBitmapSize = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n    } else {\n      tableBitmapSize = getStandardTable(1);\n    }\n\n    if (dictionary.aggregationInstancesSelector) {\n      tableAggregateInstances = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n    } else {\n      tableAggregateInstances = getStandardTable(1);\n    }\n\n    return {\n      tableDeltaHeight,\n      tableDeltaWidth,\n      tableBitmapSize,\n      tableAggregateInstances,\n    };\n  }\n\n  function readUncompressedBitmap(reader, width, height) {\n    const bitmap = [];\n    for (let y = 0; y < height; y++) {\n      const row = new Uint8Array(width);\n      bitmap.push(row);\n      for (let x = 0; x < width; x++) {\n        row[x] = reader.readBit();\n      }\n      reader.byteAlign();\n    }\n    return bitmap;\n  }\n\n  function decodeMMRBitmap(input, width, height, endOfBlock) {\n    // MMR is the same compression algorithm as the PDF filter\n    // CCITTFaxDecode with /K -1.\n    const params = {\n      K: -1,\n      Columns: width,\n      Rows: height,\n      BlackIs1: true,\n      EndOfBlock: endOfBlock,\n    };\n    const decoder = new CCITTFaxDecoder(input, params);\n    const bitmap = [];\n    let currentByte,\n      eof = false;\n\n    for (let y = 0; y < height; y++) {\n      const row = new Uint8Array(width);\n      bitmap.push(row);\n      let shift = -1;\n      for (let x = 0; x < width; x++) {\n        if (shift < 0) {\n          currentByte = decoder.readNextChar();\n          if (currentByte === -1) {\n            // Set the rest of the bits to zero.\n            currentByte = 0;\n            eof = true;\n          }\n          shift = 7;\n        }\n        row[x] = (currentByte >> shift) & 1;\n        shift--;\n      }\n    }\n\n    if (endOfBlock && !eof) {\n      // Read until EOFB has been consumed.\n      const lookForEOFLimit = 5;\n      for (let i = 0; i < lookForEOFLimit; i++) {\n        if (decoder.readNextChar() === -1) {\n          break;\n        }\n      }\n    }\n\n    return bitmap;\n  }\n\n  function Jbig2Image() {}\n\n  Jbig2Image.prototype = {\n    parseChunks(chunks) {\n      return parseJbig2Chunks(chunks);\n    },\n\n    parse(data) {\n      const { imgData, width, height } = parseJbig2(data);\n      this.width = width;\n      this.height = height;\n      return imgData;\n    },\n  };\n\n  return Jbig2Image;\n})();\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\n// Table C-2\nconst QeTable = [\n  { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n  { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n  { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n  { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n  { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n  { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n  { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n  { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n  { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n  { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n  { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n  { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n  { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n  { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n  { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n  { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n  { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n  { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n  { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n  { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n  { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n  { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n  { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n  { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n  { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n  { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n  { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n  { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n  { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n  { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n  { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n  { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n  { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n  { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n  { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n  { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n  { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n  { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n  { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n  { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n  { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n  { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n  { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\n *   Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n  // C.3.5 Initialisation of the decoder (INITDEC)\n  constructor(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n\n    this.chigh = data[start];\n    this.clow = 0;\n\n    this.byteIn();\n\n    this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n    this.clow = (this.clow << 7) & 0xffff;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n\n  // C.3.4 Compressed data input (BYTEIN)\n  byteIn() {\n    const data = this.data;\n    let bp = this.bp;\n\n    if (data[bp] === 0xff) {\n      if (data[bp + 1] > 0x8f) {\n        this.clow += 0xff00;\n        this.ct = 8;\n      } else {\n        bp++;\n        this.clow += data[bp] << 9;\n        this.ct = 7;\n        this.bp = bp;\n      }\n    } else {\n      bp++;\n      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n      this.ct = 8;\n      this.bp = bp;\n    }\n    if (this.clow > 0xffff) {\n      this.chigh += this.clow >> 16;\n      this.clow &= 0xffff;\n    }\n  }\n\n  // C.3.2 Decoding a decision (DECODE)\n  readBit(contexts, pos) {\n    // Contexts are packed into 1 byte:\n    // highest 7 bits carry cx.index, lowest bit carries cx.mps\n    let cx_index = contexts[pos] >> 1,\n      cx_mps = contexts[pos] & 1;\n    const qeTableIcx = QeTable[cx_index];\n    const qeIcx = qeTableIcx.qe;\n    let d;\n    let a = this.a - qeIcx;\n\n    if (this.chigh < qeIcx) {\n      // exchangeLps\n      if (a < qeIcx) {\n        a = qeIcx;\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      } else {\n        a = qeIcx;\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      }\n    } else {\n      this.chigh -= qeIcx;\n      if ((a & 0x8000) !== 0) {\n        this.a = a;\n        return cx_mps;\n      }\n      // exchangeMps\n      if (a < qeIcx) {\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      } else {\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      }\n    }\n    // C.3.3 renormD;\n    do {\n      if (this.ct === 0) {\n        this.byteIn();\n      }\n\n      a <<= 1;\n      this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n      this.clow = (this.clow << 1) & 0xffff;\n      this.ct--;\n    } while ((a & 0x8000) === 0);\n    this.a = a;\n\n    contexts[pos] = (cx_index << 1) | cx_mps;\n    return d;\n  }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createObjectURL, shadow } from \"../shared/util.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { isDict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\n\n/**\n * Depending on the type of JPEG a JpegStream is handled in different ways. For\n * JPEG's that are supported natively such as DeviceGray and DeviceRGB the image\n * data is stored and then loaded by the browser. For unsupported JPEG's we use\n * a library to decode these images and the stream behaves like all the other\n * DecodeStreams.\n */\nconst JpegStream = (function JpegStreamClosure() {\n  function JpegStream(stream, maybeLength, dict, params) {\n    // Some images may contain 'junk' before the SOI (start-of-image) marker.\n    // Note: this seems to mainly affect inline images.\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      // Find the first byte of the SOI marker (0xFFD8).\n      if (ch === 0xff) {\n        stream.skip(-1); // Reset the stream position to the SOI.\n        break;\n      }\n    }\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  JpegStream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(JpegStream.prototype, \"bytes\", {\n    get: function JpegStream_bytes() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  JpegStream.prototype.ensureBuffer = function(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  JpegStream.prototype.readBlock = function() {\n    if (this.eof) {\n      return;\n    }\n    const jpegOptions = {\n      decodeTransform: undefined,\n      colorTransform: undefined,\n    };\n\n    // Checking if values need to be transformed before conversion.\n    const decodeArr = this.dict.getArray(\"Decode\", \"D\");\n    if (this.forceRGB && Array.isArray(decodeArr)) {\n      const bitsPerComponent = this.dict.get(\"BitsPerComponent\") || 8;\n      const decodeArrLength = decodeArr.length;\n      const transform = new Int32Array(decodeArrLength);\n      let transformNeeded = false;\n      const maxValue = (1 << bitsPerComponent) - 1;\n      for (let i = 0; i < decodeArrLength; i += 2) {\n        transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n        transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n          transformNeeded = true;\n        }\n      }\n      if (transformNeeded) {\n        jpegOptions.decodeTransform = transform;\n      }\n    }\n    // Fetching the 'ColorTransform' entry, if it exists.\n    if (isDict(this.params)) {\n      const colorTransform = this.params.get(\"ColorTransform\");\n      if (Number.isInteger(colorTransform)) {\n        jpegOptions.colorTransform = colorTransform;\n      }\n    }\n    const jpegImage = new JpegImage(jpegOptions);\n\n    jpegImage.parse(this.bytes);\n    const data = jpegImage.getData({\n      width: this.drawWidth,\n      height: this.drawHeight,\n      forceRGB: this.forceRGB,\n      isSourcePDF: true,\n    });\n    this.buffer = data;\n    this.bufferLength = data.length;\n    this.eof = true;\n  };\n\n  Object.defineProperty(JpegStream.prototype, \"maybeValidDimensions\", {\n    get: function JpegStream_maybeValidDimensions() {\n      const { dict, stream } = this;\n      const dictHeight = dict.get(\"Height\", \"H\");\n      const startPos = stream.pos;\n\n      let validDimensions = true,\n        foundSOF = false,\n        b;\n      while ((b = stream.getByte()) !== -1) {\n        if (b !== 0xff) {\n          // Not a valid marker.\n          continue;\n        }\n        switch (stream.getByte()) {\n          case 0xc0: // SOF0\n          case 0xc1: // SOF1\n          case 0xc2: // SOF2\n            // These three SOF{n} markers are the only ones that the built-in\n            // PDF.js JPEG decoder currently supports.\n            foundSOF = true;\n\n            stream.pos += 2; // Skip marker length.\n            stream.pos += 1; // Skip precision.\n            const scanLines = stream.getUint16();\n\n            // The \"normal\" case, where the image data and dictionary agrees.\n            if (scanLines === dictHeight) {\n              break;\n            }\n            // A DNL (Define Number of Lines) marker is expected,\n            // which browsers (usually) cannot decode natively.\n            if (scanLines === 0) {\n              validDimensions = false;\n              break;\n            }\n            // The dimensions of the image, among other properties, should\n            // always be taken from the image data *itself* rather than the\n            // XObject dictionary. However there's cases of corrupt images that\n            // browsers cannot decode natively, for example:\n            //  - JPEG images with DNL markers, where the SOF `scanLines`\n            //    parameter has an unexpected value (see issue 8614).\n            //  - JPEG images with too large SOF `scanLines` parameter, where\n            //    the EOI marker is encountered prematurely (see issue 10880).\n            // In an attempt to handle these kinds of corrupt images, compare\n            // the dimensions in the image data with the dictionary and *always*\n            // let the PDF.js JPEG decoder (rather than the browser) handle the\n            // image if the difference is larger than one order of magnitude\n            // (since that would generally suggest that something is off).\n            if (scanLines > dictHeight * 10) {\n              validDimensions = false;\n              break;\n            }\n            break;\n\n          case 0xc3: // SOF3\n          /* falls through */\n          case 0xc5: // SOF5\n          case 0xc6: // SOF6\n          case 0xc7: // SOF7\n          /* falls through */\n          case 0xc9: // SOF9\n          case 0xca: // SOF10\n          case 0xcb: // SOF11\n          /* falls through */\n          case 0xcd: // SOF13\n          case 0xce: // SOF14\n          case 0xcf: // SOF15\n            foundSOF = true;\n            break;\n\n          case 0xc4: // DHT\n          case 0xcc: // DAC\n          /* falls through */\n          case 0xda: // SOS\n          case 0xdb: // DQT\n          case 0xdc: // DNL\n          case 0xdd: // DRI\n          case 0xde: // DHP\n          case 0xdf: // EXP\n          /* falls through */\n          case 0xe0: // APP0\n          case 0xe1: // APP1\n          case 0xe2: // APP2\n          case 0xe3: // APP3\n          case 0xe4: // APP4\n          case 0xe5: // APP5\n          case 0xe6: // APP6\n          case 0xe7: // APP7\n          case 0xe8: // APP8\n          case 0xe9: // APP9\n          case 0xea: // APP10\n          case 0xeb: // APP11\n          case 0xec: // APP12\n          case 0xed: // APP13\n          case 0xee: // APP14\n          case 0xef: // APP15\n          /* falls through */\n          case 0xfe: // COM\n            const markerLength = stream.getUint16();\n            if (markerLength > 2) {\n              stream.skip(markerLength - 2); // Jump to the next marker.\n            } else {\n              // The marker length is invalid, resetting the stream position.\n              stream.skip(-2);\n            }\n            break;\n\n          case 0xff: // Fill byte.\n            // Avoid skipping a valid marker, resetting the stream position.\n            stream.skip(-1);\n            break;\n\n          case 0xd9: // EOI\n            foundSOF = true;\n            break;\n        }\n        if (foundSOF) {\n          break;\n        }\n      }\n      // Finally, don't forget to reset the stream position.\n      stream.pos = startPos;\n\n      return shadow(this, \"maybeValidDimensions\", validDimensions);\n    },\n    configurable: true,\n  });\n\n  JpegStream.prototype.getIR = function(forceDataSchema = false) {\n    return createObjectURL(this.bytes, \"image/jpeg\", forceDataSchema);\n  };\n\n  return JpegStream;\n})();\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n  constructor(msg) {\n    super(`JPEG error: ${msg}`);\n  }\n}\n\nclass DNLMarkerError extends BaseException {\n  constructor(message, scanLines) {\n    super(message);\n    this.scanLines = scanLines;\n  }\n}\n\nclass EOIMarkerError extends BaseException {}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n *   (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n *   (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n *   (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\nvar JpegImage = (function JpegImageClosure() {\n  // prettier-ignore\n  var dctZigZag = new Uint8Array([\n     0,\n     1,  8,\n    16,  9,  2,\n     3, 10, 17, 24,\n    32, 25, 18, 11, 4,\n     5, 12, 19, 26, 33, 40,\n    48, 41, 34, 27, 20, 13,  6,\n     7, 14, 21, 28, 35, 42, 49, 56,\n    57, 50, 43, 36, 29, 22, 15,\n    23, 30, 37, 44, 51, 58,\n    59, 52, 45, 38, 31,\n    39, 46, 53, 60,\n    61, 54, 47,\n    55, 62,\n    63\n  ]);\n\n  var dctCos1 = 4017; // cos(pi/16)\n  var dctSin1 = 799; // sin(pi/16)\n  var dctCos3 = 3406; // cos(3*pi/16)\n  var dctSin3 = 2276; // sin(3*pi/16)\n  var dctCos6 = 1567; // cos(6*pi/16)\n  var dctSin6 = 3784; // sin(6*pi/16)\n  var dctSqrt2 = 5793; // sqrt(2)\n  var dctSqrt1d2 = 2896; // sqrt(2) / 2\n\n  function JpegImage({ decodeTransform = null, colorTransform = -1 } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n\n  function buildHuffmanTable(codeLengths, values) {\n    var k = 0,\n      code = [],\n      i,\n      j,\n      length = 16;\n    while (length > 0 && !codeLengths[length - 1]) {\n      length--;\n    }\n    code.push({ children: [], index: 0 });\n    var p = code[0],\n      q;\n    for (i = 0; i < length; i++) {\n      for (j = 0; j < codeLengths[i]; j++) {\n        p = code.pop();\n        p.children[p.index] = values[k];\n        while (p.index > 0) {\n          p = code.pop();\n        }\n        p.index++;\n        code.push(p);\n        while (code.length <= i) {\n          code.push((q = { children: [], index: 0 }));\n          p.children[p.index] = q.children;\n          p = q;\n        }\n        k++;\n      }\n      if (i + 1 < length) {\n        // p here points to last code\n        code.push((q = { children: [], index: 0 }));\n        p.children[p.index] = q.children;\n        p = q;\n      }\n    }\n    return code[0].children;\n  }\n\n  function getBlockBufferOffset(component, row, col) {\n    return 64 * ((component.blocksPerLine + 1) * row + col);\n  }\n\n  function decodeScan(\n    data,\n    offset,\n    frame,\n    components,\n    resetInterval,\n    spectralStart,\n    spectralEnd,\n    successivePrev,\n    successive,\n    parseDNLMarker = false\n  ) {\n    var mcusPerLine = frame.mcusPerLine;\n    var progressive = frame.progressive;\n\n    var startOffset = offset,\n      bitsData = 0,\n      bitsCount = 0;\n\n    function readBit() {\n      if (bitsCount > 0) {\n        bitsCount--;\n        return (bitsData >> bitsCount) & 1;\n      }\n      bitsData = data[offset++];\n      if (bitsData === 0xff) {\n        var nextByte = data[offset++];\n        if (nextByte) {\n          if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n            offset += 2; // Skip marker length.\n\n            const scanLines = readUint16(data, offset);\n            offset += 2;\n            if (scanLines > 0 && scanLines !== frame.scanLines) {\n              throw new DNLMarkerError(\n                \"Found DNL marker (0xFFDC) while parsing scan data\",\n                scanLines\n              );\n            }\n          } else if (nextByte === /* EOI = */ 0xd9) {\n            if (parseDNLMarker) {\n              // NOTE: only 8-bit JPEG images are supported in this decoder.\n              const maybeScanLines = blockRow * 8;\n              // Heuristic to attempt to handle corrupt JPEG images with too\n              // large `scanLines` parameter, by falling back to the currently\n              // parsed number of scanLines when it's at least one order of\n              // magnitude smaller than expected (fixes issue10880.pdf).\n              if (maybeScanLines > 0 && maybeScanLines < frame.scanLines / 10) {\n                throw new DNLMarkerError(\n                  \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n                    \"possibly caused by incorrect `scanLines` parameter\",\n                  maybeScanLines\n                );\n              }\n            }\n            throw new EOIMarkerError(\n              \"Found EOI marker (0xFFD9) while parsing scan data\"\n            );\n          }\n          throw new JpegError(\n            `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n          );\n        }\n        // unstuff 0\n      }\n      bitsCount = 7;\n      return bitsData >>> 7;\n    }\n\n    function decodeHuffman(tree) {\n      var node = tree;\n      while (true) {\n        node = node[readBit()];\n        switch (typeof node) {\n          case \"number\":\n            return node;\n          case \"object\":\n            continue;\n        }\n        throw new JpegError(\"invalid huffman sequence\");\n      }\n    }\n\n    function receive(length) {\n      var n = 0;\n      while (length > 0) {\n        n = (n << 1) | readBit();\n        length--;\n      }\n      return n;\n    }\n\n    function receiveAndExtend(length) {\n      if (length === 1) {\n        return readBit() === 1 ? 1 : -1;\n      }\n      var n = receive(length);\n      if (n >= 1 << (length - 1)) {\n        return n;\n      }\n      return n + (-1 << length) + 1;\n    }\n\n    function decodeBaseline(component, offset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t);\n      component.blockData[offset] = component.pred += diff;\n      var k = 1;\n      while (k < 64) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15,\n          r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[offset + z] = receiveAndExtend(s);\n        k++;\n      }\n    }\n\n    function decodeDCFirst(component, offset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n      component.blockData[offset] = component.pred += diff;\n    }\n\n    function decodeDCSuccessive(component, offset) {\n      component.blockData[offset] |= readBit() << successive;\n    }\n\n    var eobrun = 0;\n    function decodeACFirst(component, offset) {\n      if (eobrun > 0) {\n        eobrun--;\n        return;\n      }\n      var k = spectralStart,\n        e = spectralEnd;\n      while (k <= e) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15,\n          r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            eobrun = receive(r) + (1 << r) - 1;\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[offset + z] =\n          receiveAndExtend(s) * (1 << successive);\n        k++;\n      }\n    }\n\n    var successiveACState = 0,\n      successiveACNextValue;\n    function decodeACSuccessive(component, offset) {\n      var k = spectralStart;\n      var e = spectralEnd;\n      var r = 0;\n      var s;\n      var rs;\n      while (k <= e) {\n        const offsetZ = offset + dctZigZag[k];\n        const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n        switch (successiveACState) {\n          case 0: // initial state\n            rs = decodeHuffman(component.huffmanTableAC);\n            s = rs & 15;\n            r = rs >> 4;\n            if (s === 0) {\n              if (r < 15) {\n                eobrun = receive(r) + (1 << r);\n                successiveACState = 4;\n              } else {\n                r = 16;\n                successiveACState = 1;\n              }\n            } else {\n              if (s !== 1) {\n                throw new JpegError(\"invalid ACn encoding\");\n              }\n              successiveACNextValue = receiveAndExtend(s);\n              successiveACState = r ? 2 : 3;\n            }\n            continue;\n          case 1: // skipping r zero items\n          case 2:\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              r--;\n              if (r === 0) {\n                successiveACState = successiveACState === 2 ? 3 : 0;\n              }\n            }\n            break;\n          case 3: // set value for a zero item\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              component.blockData[offsetZ] =\n                successiveACNextValue << successive;\n              successiveACState = 0;\n            }\n            break;\n          case 4: // eob\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            }\n            break;\n        }\n        k++;\n      }\n      if (successiveACState === 4) {\n        eobrun--;\n        if (eobrun === 0) {\n          successiveACState = 0;\n        }\n      }\n    }\n\n    let blockRow = 0;\n    function decodeMcu(component, decode, mcu, row, col) {\n      var mcuRow = (mcu / mcusPerLine) | 0;\n      var mcuCol = mcu % mcusPerLine;\n      blockRow = mcuRow * component.v + row;\n      var blockCol = mcuCol * component.h + col;\n      var offset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, offset);\n    }\n\n    function decodeBlock(component, decode, mcu) {\n      blockRow = (mcu / component.blocksPerLine) | 0;\n      var blockCol = mcu % component.blocksPerLine;\n      var offset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, offset);\n    }\n\n    var componentsLength = components.length;\n    var component, i, j, k, n;\n    var decodeFn;\n    if (progressive) {\n      if (spectralStart === 0) {\n        decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n      } else {\n        decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n      }\n    } else {\n      decodeFn = decodeBaseline;\n    }\n\n    var mcu = 0,\n      fileMarker;\n    var mcuExpected;\n    if (componentsLength === 1) {\n      mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n    } else {\n      mcuExpected = mcusPerLine * frame.mcusPerColumn;\n    }\n\n    var h, v;\n    while (mcu < mcuExpected) {\n      // reset interval stuff\n      var mcuToRead = resetInterval\n        ? Math.min(mcuExpected - mcu, resetInterval)\n        : mcuExpected;\n      for (i = 0; i < componentsLength; i++) {\n        components[i].pred = 0;\n      }\n      eobrun = 0;\n\n      if (componentsLength === 1) {\n        component = components[0];\n        for (n = 0; n < mcuToRead; n++) {\n          decodeBlock(component, decodeFn, mcu);\n          mcu++;\n        }\n      } else {\n        for (n = 0; n < mcuToRead; n++) {\n          for (i = 0; i < componentsLength; i++) {\n            component = components[i];\n            h = component.h;\n            v = component.v;\n            for (j = 0; j < v; j++) {\n              for (k = 0; k < h; k++) {\n                decodeMcu(component, decodeFn, mcu, j, k);\n              }\n            }\n          }\n          mcu++;\n        }\n      }\n\n      // find marker\n      bitsCount = 0;\n      fileMarker = findNextFileMarker(data, offset);\n      if (!fileMarker) {\n        // Reached the end of the image data without finding an EOI marker.\n        break;\n      } else if (fileMarker.invalid) {\n        // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n        // past those to attempt to find a valid marker (fixes issue4090.pdf).\n        warn(\n          \"decodeScan - unexpected MCU data, current marker is: \" +\n            fileMarker.invalid\n        );\n        offset = fileMarker.offset;\n      }\n      var marker = fileMarker && fileMarker.marker;\n      if (!marker || marker <= 0xff00) {\n        throw new JpegError(\"decodeScan - a valid marker was not found.\");\n      }\n\n      if (marker >= 0xffd0 && marker <= 0xffd7) {\n        // RSTx\n        offset += 2;\n      } else {\n        break;\n      }\n    }\n\n    fileMarker = findNextFileMarker(data, offset);\n    // Some images include more Scan blocks than expected, skip past those and\n    // attempt to find the next valid marker (fixes issue8182.pdf).\n    if (fileMarker && fileMarker.invalid) {\n      warn(\n        \"decodeScan - unexpected Scan data, current marker is: \" +\n          fileMarker.invalid\n      );\n      offset = fileMarker.offset;\n    }\n\n    return offset - startOffset;\n  }\n\n  // A port of poppler's IDCT method which in turn is taken from:\n  //   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n  //   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n  //   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n  //   988-991.\n  function quantizeAndInverse(component, blockBufferOffset, p) {\n    var qt = component.quantizationTable,\n      blockData = component.blockData;\n    var v0, v1, v2, v3, v4, v5, v6, v7;\n    var p0, p1, p2, p3, p4, p5, p6, p7;\n    var t;\n\n    if (!qt) {\n      throw new JpegError(\"missing required Quantization Table.\");\n    }\n\n    // inverse DCT on rows\n    for (var row = 0; row < 64; row += 8) {\n      // gather block data\n      p0 = blockData[blockBufferOffset + row];\n      p1 = blockData[blockBufferOffset + row + 1];\n      p2 = blockData[blockBufferOffset + row + 2];\n      p3 = blockData[blockBufferOffset + row + 3];\n      p4 = blockData[blockBufferOffset + row + 4];\n      p5 = blockData[blockBufferOffset + row + 5];\n      p6 = blockData[blockBufferOffset + row + 6];\n      p7 = blockData[blockBufferOffset + row + 7];\n\n      // dequant p0\n      p0 *= qt[row];\n\n      // check for all-zero AC coefficients\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = (dctSqrt2 * p0 + 512) >> 10;\n        p[row] = t;\n        p[row + 1] = t;\n        p[row + 2] = t;\n        p[row + 3] = t;\n        p[row + 4] = t;\n        p[row + 5] = t;\n        p[row + 6] = t;\n        p[row + 7] = t;\n        continue;\n      }\n      // dequant p1 ... p7\n      p1 *= qt[row + 1];\n      p2 *= qt[row + 2];\n      p3 *= qt[row + 3];\n      p4 *= qt[row + 4];\n      p5 *= qt[row + 5];\n      p6 *= qt[row + 6];\n      p7 *= qt[row + 7];\n\n      // stage 4\n      v0 = (dctSqrt2 * p0 + 128) >> 8;\n      v1 = (dctSqrt2 * p4 + 128) >> 8;\n      v2 = p2;\n      v3 = p6;\n      v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n      v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n      v5 = p3 << 4;\n      v6 = p5 << 4;\n\n      // stage 3\n      v0 = (v0 + v1 + 1) >> 1;\n      v1 = v0 - v1;\n      t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n      v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n      v3 = t;\n      v4 = (v4 + v6 + 1) >> 1;\n      v6 = v4 - v6;\n      v7 = (v7 + v5 + 1) >> 1;\n      v5 = v7 - v5;\n\n      // stage 2\n      v0 = (v0 + v3 + 1) >> 1;\n      v3 = v0 - v3;\n      v1 = (v1 + v2 + 1) >> 1;\n      v2 = v1 - v2;\n      t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n      v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n      v7 = t;\n      t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n      v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n      v6 = t;\n\n      // stage 1\n      p[row] = v0 + v7;\n      p[row + 7] = v0 - v7;\n      p[row + 1] = v1 + v6;\n      p[row + 6] = v1 - v6;\n      p[row + 2] = v2 + v5;\n      p[row + 5] = v2 - v5;\n      p[row + 3] = v3 + v4;\n      p[row + 4] = v3 - v4;\n    }\n\n    // inverse DCT on columns\n    for (var col = 0; col < 8; ++col) {\n      p0 = p[col];\n      p1 = p[col + 8];\n      p2 = p[col + 16];\n      p3 = p[col + 24];\n      p4 = p[col + 32];\n      p5 = p[col + 40];\n      p6 = p[col + 48];\n      p7 = p[col + 56];\n\n      // check for all-zero AC coefficients\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = (dctSqrt2 * p0 + 8192) >> 14;\n        // Convert to 8-bit.\n        if (t < -2040) {\n          t = 0;\n        } else if (t >= 2024) {\n          t = 255;\n        } else {\n          t = (t + 2056) >> 4;\n        }\n        blockData[blockBufferOffset + col] = t;\n        blockData[blockBufferOffset + col + 8] = t;\n        blockData[blockBufferOffset + col + 16] = t;\n        blockData[blockBufferOffset + col + 24] = t;\n        blockData[blockBufferOffset + col + 32] = t;\n        blockData[blockBufferOffset + col + 40] = t;\n        blockData[blockBufferOffset + col + 48] = t;\n        blockData[blockBufferOffset + col + 56] = t;\n        continue;\n      }\n\n      // stage 4\n      v0 = (dctSqrt2 * p0 + 2048) >> 12;\n      v1 = (dctSqrt2 * p4 + 2048) >> 12;\n      v2 = p2;\n      v3 = p6;\n      v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n      v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n      v5 = p3;\n      v6 = p5;\n\n      // stage 3\n      // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n      // converting to UInt8 range later.\n      v0 = ((v0 + v1 + 1) >> 1) + 4112;\n      v1 = v0 - v1;\n      t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n      v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n      v3 = t;\n      v4 = (v4 + v6 + 1) >> 1;\n      v6 = v4 - v6;\n      v7 = (v7 + v5 + 1) >> 1;\n      v5 = v7 - v5;\n\n      // stage 2\n      v0 = (v0 + v3 + 1) >> 1;\n      v3 = v0 - v3;\n      v1 = (v1 + v2 + 1) >> 1;\n      v2 = v1 - v2;\n      t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n      v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n      v7 = t;\n      t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n      v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n      v6 = t;\n\n      // stage 1\n      p0 = v0 + v7;\n      p7 = v0 - v7;\n      p1 = v1 + v6;\n      p6 = v1 - v6;\n      p2 = v2 + v5;\n      p5 = v2 - v5;\n      p3 = v3 + v4;\n      p4 = v3 - v4;\n\n      // Convert to 8-bit integers.\n      if (p0 < 16) {\n        p0 = 0;\n      } else if (p0 >= 4080) {\n        p0 = 255;\n      } else {\n        p0 >>= 4;\n      }\n      if (p1 < 16) {\n        p1 = 0;\n      } else if (p1 >= 4080) {\n        p1 = 255;\n      } else {\n        p1 >>= 4;\n      }\n      if (p2 < 16) {\n        p2 = 0;\n      } else if (p2 >= 4080) {\n        p2 = 255;\n      } else {\n        p2 >>= 4;\n      }\n      if (p3 < 16) {\n        p3 = 0;\n      } else if (p3 >= 4080) {\n        p3 = 255;\n      } else {\n        p3 >>= 4;\n      }\n      if (p4 < 16) {\n        p4 = 0;\n      } else if (p4 >= 4080) {\n        p4 = 255;\n      } else {\n        p4 >>= 4;\n      }\n      if (p5 < 16) {\n        p5 = 0;\n      } else if (p5 >= 4080) {\n        p5 = 255;\n      } else {\n        p5 >>= 4;\n      }\n      if (p6 < 16) {\n        p6 = 0;\n      } else if (p6 >= 4080) {\n        p6 = 255;\n      } else {\n        p6 >>= 4;\n      }\n      if (p7 < 16) {\n        p7 = 0;\n      } else if (p7 >= 4080) {\n        p7 = 255;\n      } else {\n        p7 >>= 4;\n      }\n\n      // store block data\n      blockData[blockBufferOffset + col] = p0;\n      blockData[blockBufferOffset + col + 8] = p1;\n      blockData[blockBufferOffset + col + 16] = p2;\n      blockData[blockBufferOffset + col + 24] = p3;\n      blockData[blockBufferOffset + col + 32] = p4;\n      blockData[blockBufferOffset + col + 40] = p5;\n      blockData[blockBufferOffset + col + 48] = p6;\n      blockData[blockBufferOffset + col + 56] = p7;\n    }\n  }\n\n  function buildComponentData(frame, component) {\n    var blocksPerLine = component.blocksPerLine;\n    var blocksPerColumn = component.blocksPerColumn;\n    var computationBuffer = new Int16Array(64);\n\n    for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n      for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n        var offset = getBlockBufferOffset(component, blockRow, blockCol);\n        quantizeAndInverse(component, offset, computationBuffer);\n      }\n    }\n    return component.blockData;\n  }\n\n  function findNextFileMarker(data, currentPos, startPos = currentPos) {\n    const maxPos = data.length - 1;\n    var newPos = startPos < currentPos ? startPos : currentPos;\n\n    if (currentPos >= maxPos) {\n      return null; // Don't attempt to read non-existent data and just return.\n    }\n    var currentMarker = readUint16(data, currentPos);\n    if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n      return {\n        invalid: null,\n        marker: currentMarker,\n        offset: currentPos,\n      };\n    }\n    var newMarker = readUint16(data, newPos);\n    while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n      if (++newPos >= maxPos) {\n        return null; // Don't attempt to read non-existent data and just return.\n      }\n      newMarker = readUint16(data, newPos);\n    }\n    return {\n      invalid: currentMarker.toString(16),\n      marker: newMarker,\n      offset: newPos,\n    };\n  }\n\n  JpegImage.prototype = {\n    parse(data, { dnlScanLines = null } = {}) {\n      function readDataBlock() {\n        const length = readUint16(data, offset);\n        offset += 2;\n        let endOffset = offset + length - 2;\n\n        var fileMarker = findNextFileMarker(data, endOffset, offset);\n        if (fileMarker && fileMarker.invalid) {\n          warn(\n            \"readDataBlock - incorrect length, current marker is: \" +\n              fileMarker.invalid\n          );\n          endOffset = fileMarker.offset;\n        }\n\n        var array = data.subarray(offset, endOffset);\n        offset += array.length;\n        return array;\n      }\n\n      function prepareComponents(frame) {\n        var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n        var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n        for (var i = 0; i < frame.components.length; i++) {\n          component = frame.components[i];\n          var blocksPerLine = Math.ceil(\n            (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n          );\n          var blocksPerColumn = Math.ceil(\n            (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n          );\n          var blocksPerLineForMcu = mcusPerLine * component.h;\n          var blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n          var blocksBufferSize =\n            64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n          component.blockData = new Int16Array(blocksBufferSize);\n          component.blocksPerLine = blocksPerLine;\n          component.blocksPerColumn = blocksPerColumn;\n        }\n        frame.mcusPerLine = mcusPerLine;\n        frame.mcusPerColumn = mcusPerColumn;\n      }\n\n      var offset = 0;\n      var jfif = null;\n      var adobe = null;\n      var frame, resetInterval;\n      let numSOSMarkers = 0;\n      var quantizationTables = [];\n      var huffmanTablesAC = [],\n        huffmanTablesDC = [];\n\n      let fileMarker = readUint16(data, offset);\n      offset += 2;\n      if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n        throw new JpegError(\"SOI not found\");\n      }\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n\n      markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n        var i, j, l;\n        switch (fileMarker) {\n          case 0xffe0: // APP0 (Application Specific)\n          case 0xffe1: // APP1\n          case 0xffe2: // APP2\n          case 0xffe3: // APP3\n          case 0xffe4: // APP4\n          case 0xffe5: // APP5\n          case 0xffe6: // APP6\n          case 0xffe7: // APP7\n          case 0xffe8: // APP8\n          case 0xffe9: // APP9\n          case 0xffea: // APP10\n          case 0xffeb: // APP11\n          case 0xffec: // APP12\n          case 0xffed: // APP13\n          case 0xffee: // APP14\n          case 0xffef: // APP15\n          case 0xfffe: // COM (Comment)\n            var appData = readDataBlock();\n\n            if (fileMarker === 0xffe0) {\n              // 'JFIF\\x00'\n              if (\n                appData[0] === 0x4a &&\n                appData[1] === 0x46 &&\n                appData[2] === 0x49 &&\n                appData[3] === 0x46 &&\n                appData[4] === 0\n              ) {\n                jfif = {\n                  version: { major: appData[5], minor: appData[6] },\n                  densityUnits: appData[7],\n                  xDensity: (appData[8] << 8) | appData[9],\n                  yDensity: (appData[10] << 8) | appData[11],\n                  thumbWidth: appData[12],\n                  thumbHeight: appData[13],\n                  thumbData: appData.subarray(\n                    14,\n                    14 + 3 * appData[12] * appData[13]\n                  ),\n                };\n              }\n            }\n            // TODO APP1 - Exif\n            if (fileMarker === 0xffee) {\n              // 'Adobe'\n              if (\n                appData[0] === 0x41 &&\n                appData[1] === 0x64 &&\n                appData[2] === 0x6f &&\n                appData[3] === 0x62 &&\n                appData[4] === 0x65\n              ) {\n                adobe = {\n                  version: (appData[5] << 8) | appData[6],\n                  flags0: (appData[7] << 8) | appData[8],\n                  flags1: (appData[9] << 8) | appData[10],\n                  transformCode: appData[11],\n                };\n              }\n            }\n            break;\n\n          case 0xffdb: // DQT (Define Quantization Tables)\n            const quantizationTablesLength = readUint16(data, offset);\n            offset += 2;\n            var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n            var z;\n            while (offset < quantizationTablesEnd) {\n              var quantizationTableSpec = data[offset++];\n              var tableData = new Uint16Array(64);\n              if (quantizationTableSpec >> 4 === 0) {\n                // 8 bit values\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = data[offset++];\n                }\n              } else if (quantizationTableSpec >> 4 === 1) {\n                // 16 bit values\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = readUint16(data, offset);\n                  offset += 2;\n                }\n              } else {\n                throw new JpegError(\"DQT - invalid table spec\");\n              }\n              quantizationTables[quantizationTableSpec & 15] = tableData;\n            }\n            break;\n\n          case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n          case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n          case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n            if (frame) {\n              throw new JpegError(\"Only single frame JPEGs supported\");\n            }\n            offset += 2; // Skip marker length.\n\n            frame = {};\n            frame.extended = fileMarker === 0xffc1;\n            frame.progressive = fileMarker === 0xffc2;\n            frame.precision = data[offset++];\n            const sofScanLines = readUint16(data, offset);\n            offset += 2;\n            frame.scanLines = dnlScanLines || sofScanLines;\n            frame.samplesPerLine = readUint16(data, offset);\n            offset += 2;\n            frame.components = [];\n            frame.componentIds = {};\n            var componentsCount = data[offset++],\n              componentId;\n            var maxH = 0,\n              maxV = 0;\n            for (i = 0; i < componentsCount; i++) {\n              componentId = data[offset];\n              var h = data[offset + 1] >> 4;\n              var v = data[offset + 1] & 15;\n              if (maxH < h) {\n                maxH = h;\n              }\n              if (maxV < v) {\n                maxV = v;\n              }\n              var qId = data[offset + 2];\n              l = frame.components.push({\n                h,\n                v,\n                quantizationId: qId,\n                quantizationTable: null, // See comment below.\n              });\n              frame.componentIds[componentId] = l - 1;\n              offset += 3;\n            }\n            frame.maxH = maxH;\n            frame.maxV = maxV;\n            prepareComponents(frame);\n            break;\n\n          case 0xffc4: // DHT (Define Huffman Tables)\n            const huffmanLength = readUint16(data, offset);\n            offset += 2;\n            for (i = 2; i < huffmanLength; ) {\n              var huffmanTableSpec = data[offset++];\n              var codeLengths = new Uint8Array(16);\n              var codeLengthSum = 0;\n              for (j = 0; j < 16; j++, offset++) {\n                codeLengthSum += codeLengths[j] = data[offset];\n              }\n              var huffmanValues = new Uint8Array(codeLengthSum);\n              for (j = 0; j < codeLengthSum; j++, offset++) {\n                huffmanValues[j] = data[offset];\n              }\n              i += 17 + codeLengthSum;\n\n              (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n                huffmanTableSpec & 15\n              ] = buildHuffmanTable(codeLengths, huffmanValues);\n            }\n            break;\n\n          case 0xffdd: // DRI (Define Restart Interval)\n            offset += 2; // Skip marker length.\n\n            resetInterval = readUint16(data, offset);\n            offset += 2;\n            break;\n\n          case 0xffda: // SOS (Start of Scan)\n            // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n            // of the first scan segment and may only occur once in an image.\n            // Furthermore, to prevent an infinite loop, do *not* attempt to\n            // parse DNL markers during re-parsing of the JPEG scan data.\n            const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n            offset += 2; // Skip marker length.\n\n            var selectorsCount = data[offset++];\n            var components = [],\n              component;\n            for (i = 0; i < selectorsCount; i++) {\n              var componentIndex = frame.componentIds[data[offset++]];\n              component = frame.components[componentIndex];\n              var tableSpec = data[offset++];\n              component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n              component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n              components.push(component);\n            }\n            var spectralStart = data[offset++];\n            var spectralEnd = data[offset++];\n            var successiveApproximation = data[offset++];\n            try {\n              var processed = decodeScan(\n                data,\n                offset,\n                frame,\n                components,\n                resetInterval,\n                spectralStart,\n                spectralEnd,\n                successiveApproximation >> 4,\n                successiveApproximation & 15,\n                parseDNLMarker\n              );\n              offset += processed;\n            } catch (ex) {\n              if (ex instanceof DNLMarkerError) {\n                warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n                return this.parse(data, { dnlScanLines: ex.scanLines });\n              } else if (ex instanceof EOIMarkerError) {\n                warn(`${ex.message} -- ignoring the rest of the image data.`);\n                break markerLoop;\n              }\n              throw ex;\n            }\n            break;\n\n          case 0xffdc: // DNL (Define Number of Lines)\n            // Ignore the marker, since it's being handled in `decodeScan`.\n            offset += 4;\n            break;\n\n          case 0xffff: // Fill bytes\n            if (data[offset] !== 0xff) {\n              // Avoid skipping a valid marker.\n              offset--;\n            }\n            break;\n\n          default:\n            // Could be incorrect encoding -- the last 0xFF byte of the previous\n            // block could have been eaten by the encoder, hence we fallback to\n            // `startPos = offset - 3` when looking for the next valid marker.\n            const nextFileMarker = findNextFileMarker(\n              data,\n              /* currentPos = */ offset - 2,\n              /* startPos = */ offset - 3\n            );\n            if (nextFileMarker && nextFileMarker.invalid) {\n              warn(\n                \"JpegImage.parse - unexpected data, current marker is: \" +\n                  nextFileMarker.invalid\n              );\n              offset = nextFileMarker.offset;\n              break;\n            }\n            if (offset >= data.length - 1) {\n              warn(\n                \"JpegImage.parse - reached the end of the image data \" +\n                  \"without finding an EOI marker (0xFFD9).\"\n              );\n              break markerLoop;\n            }\n            throw new JpegError(\n              \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n            );\n        }\n        fileMarker = readUint16(data, offset);\n        offset += 2;\n      }\n\n      this.width = frame.samplesPerLine;\n      this.height = frame.scanLines;\n      this.jfif = jfif;\n      this.adobe = adobe;\n      this.components = [];\n      for (i = 0; i < frame.components.length; i++) {\n        component = frame.components[i];\n\n        // Prevent errors when DQT markers are placed after SOF{n} markers,\n        // by assigning the `quantizationTable` entry after the entire image\n        // has been parsed (fixes issue7406.pdf).\n        var quantizationTable = quantizationTables[component.quantizationId];\n        if (quantizationTable) {\n          component.quantizationTable = quantizationTable;\n        }\n\n        this.components.push({\n          output: buildComponentData(frame, component),\n          scaleX: component.h / frame.maxH,\n          scaleY: component.v / frame.maxV,\n          blocksPerLine: component.blocksPerLine,\n          blocksPerColumn: component.blocksPerColumn,\n        });\n      }\n      this.numComponents = this.components.length;\n      return undefined;\n    },\n\n    _getLinearizedBlockData(width, height, isSourcePDF = false) {\n      var scaleX = this.width / width,\n        scaleY = this.height / height;\n\n      var component, componentScaleX, componentScaleY, blocksPerScanline;\n      var x, y, i, j, k;\n      var index;\n      var offset = 0;\n      var output;\n      var numComponents = this.components.length;\n      var dataLength = width * height * numComponents;\n      var data = new Uint8ClampedArray(dataLength);\n      var xScaleBlockOffset = new Uint32Array(width);\n      var mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n      let lastComponentScaleX;\n\n      for (i = 0; i < numComponents; i++) {\n        component = this.components[i];\n        componentScaleX = component.scaleX * scaleX;\n        componentScaleY = component.scaleY * scaleY;\n        offset = i;\n        output = component.output;\n        blocksPerScanline = (component.blocksPerLine + 1) << 3;\n        // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n        // component data, that's only necessary when `componentScaleX` changes.\n        if (componentScaleX !== lastComponentScaleX) {\n          for (x = 0; x < width; x++) {\n            j = 0 | (x * componentScaleX);\n            xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n          }\n          lastComponentScaleX = componentScaleX;\n        }\n        // linearize the blocks of the component\n        for (y = 0; y < height; y++) {\n          j = 0 | (y * componentScaleY);\n          index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n          for (x = 0; x < width; x++) {\n            data[offset] = output[index + xScaleBlockOffset[x]];\n            offset += numComponents;\n          }\n        }\n      }\n\n      // decodeTransform contains pairs of multiplier (-256..256) and additive\n      let transform = this._decodeTransform;\n\n      // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n      // (this can be observed by extracting the raw image data).\n      // Since the conversion algorithms (see below) were written primarily for\n      // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n      // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n      //\n      // Unfortunately it's not (always) possible to tell, from the image data\n      // alone, if it needs to be inverted. Thus in an attempt to provide better\n      // out-of-box behaviour when `JpegImage` is used standalone, default to\n      // inverting JPEG (CMYK) images if and only if the image data does *not*\n      // come from a PDF file and no `decodeTransform` was passed by the user.\n      if (!isSourcePDF && numComponents === 4 && !transform) {\n        // prettier-ignore\n        transform = new Int32Array([\n          -256, 255, -256, 255, -256, 255, -256, 255]);\n      }\n\n      if (transform) {\n        for (i = 0; i < dataLength; ) {\n          for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n            data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n          }\n        }\n      }\n      return data;\n    },\n\n    get _isColorConversionNeeded() {\n      if (this.adobe) {\n        // The adobe transform marker overrides any previous setting.\n        return !!this.adobe.transformCode;\n      }\n      if (this.numComponents === 3) {\n        if (this._colorTransform === 0) {\n          // If the Adobe transform marker is not present and the image\n          // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n          // then the colours should *not* be transformed.\n          return false;\n        }\n        return true;\n      }\n      // `this.numComponents !== 3`\n      if (this._colorTransform === 1) {\n        // If the Adobe transform marker is not present and the image\n        // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n        // then the colours should be transformed.\n        return true;\n      }\n      return false;\n    },\n\n    _convertYccToRgb: function convertYccToRgb(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 3) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = Y - 179.456 + 1.402 * Cr;\n        data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n        data[i + 2] = Y - 226.816 + 1.772 * Cb;\n      }\n      return data;\n    },\n\n    _convertYcckToRgb: function convertYcckToRgb(data) {\n      var Y, Cb, Cr, k;\n      var offset = 0;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        k = data[i + 3];\n\n        data[offset++] =\n          -122.67195406894 +\n          Cb *\n            (-6.60635669420364e-5 * Cb +\n              0.000437130475926232 * Cr -\n              5.4080610064599e-5 * Y +\n              0.00048449797120281 * k -\n              0.154362151871126) +\n          Cr *\n            (-0.000957964378445773 * Cr +\n              0.000817076911346625 * Y -\n              0.00477271405408747 * k +\n              1.53380253221734) +\n          Y *\n            (0.000961250184130688 * Y -\n              0.00266257332283933 * k +\n              0.48357088451265) +\n          k * (-0.000336197177618394 * k + 0.484791561490776);\n\n        data[offset++] =\n          107.268039397724 +\n          Cb *\n            (2.19927104525741e-5 * Cb -\n              0.000640992018297945 * Cr +\n              0.000659397001245577 * Y +\n              0.000426105652938837 * k -\n              0.176491792462875) +\n          Cr *\n            (-0.000778269941513683 * Cr +\n              0.00130872261408275 * Y +\n              0.000770482631801132 * k -\n              0.151051492775562) +\n          Y *\n            (0.00126935368114843 * Y -\n              0.00265090189010898 * k +\n              0.25802910206845) +\n          k * (-0.000318913117588328 * k - 0.213742400323665);\n\n        data[offset++] =\n          -20.810012546947 +\n          Cb *\n            (-0.000570115196973677 * Cb -\n              2.63409051004589e-5 * Cr +\n              0.0020741088115012 * Y -\n              0.00288260236853442 * k +\n              0.814272968359295) +\n          Cr *\n            (-1.53496057440975e-5 * Cr -\n              0.000132689043961446 * Y +\n              0.000560833691242812 * k -\n              0.195152027534049) +\n          Y *\n            (0.00174418132927582 * Y -\n              0.00255243321439347 * k +\n              0.116935020465145) +\n          k * (-0.000343531996510555 * k + 0.24165260232407);\n      }\n      // Ensure that only the converted RGB data is returned.\n      return data.subarray(0, offset);\n    },\n\n    _convertYcckToCmyk: function convertYcckToCmyk(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = 434.456 - Y - 1.402 * Cr;\n        data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n        data[i + 2] = 481.816 - Y - 1.772 * Cb;\n        // K in data[i + 3] is unchanged\n      }\n      return data;\n    },\n\n    _convertCmykToRgb: function convertCmykToRgb(data) {\n      var c, m, y, k;\n      var offset = 0;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        c = data[i];\n        m = data[i + 1];\n        y = data[i + 2];\n        k = data[i + 3];\n\n        data[offset++] =\n          255 +\n          c *\n            (-0.00006747147073602441 * c +\n              0.0008379262121013727 * m +\n              0.0002894718188643294 * y +\n              0.003264231057537806 * k -\n              1.1185611867203937) +\n          m *\n            (0.000026374107616089405 * m -\n              0.00008626949158638572 * y -\n              0.0002748769067499491 * k -\n              0.02155688794978967) +\n          y *\n            (-0.00003878099212869363 * y -\n              0.0003267808279485286 * k +\n              0.0686742238595345) -\n          k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n        data[offset++] =\n          255 +\n          c *\n            (0.00013596372813588848 * c +\n              0.000924537132573585 * m +\n              0.00010567359618683593 * y +\n              0.0004791864687436512 * k -\n              0.3109689587515875) +\n          m *\n            (-0.00023545346108370344 * m +\n              0.0002702845253534714 * y +\n              0.0020200308977307156 * k -\n              0.7488052167015494) +\n          y *\n            (0.00006834815998235662 * y +\n              0.00015168452363460973 * k -\n              0.09751927774728933) -\n          k * (0.00031891311758832814 * k + 0.7364883807733168);\n\n        data[offset++] =\n          255 +\n          c *\n            (0.000013598650411385307 * c +\n              0.00012423956175490851 * m +\n              0.0004751985097583589 * y -\n              0.0000036729317476630422 * k -\n              0.05562186980264034) +\n          m *\n            (0.00016141380598724676 * m +\n              0.0009692239130725186 * y +\n              0.0007782692450036253 * k -\n              0.44015232367526463) +\n          y *\n            (5.068882914068769e-7 * y +\n              0.0017778369011375071 * k -\n              0.7591454649749609) -\n          k * (0.0003435319965105553 * k + 0.7063770186160144);\n      }\n      // Ensure that only the converted RGB data is returned.\n      return data.subarray(0, offset);\n    },\n\n    getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          isSourcePDF === true,\n          'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n        );\n      }\n      if (this.numComponents > 4) {\n        throw new JpegError(\"Unsupported color mode\");\n      }\n      // Type of data: Uint8ClampedArray(width * height * numComponents)\n      var data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n      if (this.numComponents === 1 && forceRGB) {\n        var dataLength = data.length;\n        var rgbData = new Uint8ClampedArray(dataLength * 3);\n        var offset = 0;\n        for (var i = 0; i < dataLength; i++) {\n          var grayColor = data[i];\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n        }\n        return rgbData;\n      } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n        return this._convertYccToRgb(data);\n      } else if (this.numComponents === 4) {\n        if (this._isColorConversionNeeded) {\n          if (forceRGB) {\n            return this._convertYcckToRgb(data);\n          }\n          return this._convertYcckToCmyk(data);\n        } else if (forceRGB) {\n          return this._convertCmykToRgb(data);\n        }\n      }\n      return data;\n    },\n  };\n\n  return JpegImage;\n})();\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nconst JpxStream = (function JpxStreamClosure() {\n  function JpxStream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  JpxStream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(JpxStream.prototype, \"bytes\", {\n    get: function JpxStream_bytes() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  JpxStream.prototype.ensureBuffer = function(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  JpxStream.prototype.readBlock = function() {\n    if (this.eof) {\n      return;\n    }\n    const jpxImage = new JpxImage();\n    jpxImage.parse(this.bytes);\n\n    const width = jpxImage.width;\n    const height = jpxImage.height;\n    const componentsCount = jpxImage.componentsCount;\n    const tileCount = jpxImage.tiles.length;\n    if (tileCount === 1) {\n      this.buffer = jpxImage.tiles[0].items;\n    } else {\n      const data = new Uint8ClampedArray(width * height * componentsCount);\n\n      for (let k = 0; k < tileCount; k++) {\n        const tileComponents = jpxImage.tiles[k];\n        const tileWidth = tileComponents.width;\n        const tileHeight = tileComponents.height;\n        const tileLeft = tileComponents.left;\n        const tileTop = tileComponents.top;\n\n        const src = tileComponents.items;\n        let srcPosition = 0;\n        let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n        const imgRowSize = width * componentsCount;\n        const tileRowSize = tileWidth * componentsCount;\n\n        for (let j = 0; j < tileHeight; j++) {\n          const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n          data.set(rowBytes, dataPosition);\n          srcPosition += tileRowSize;\n          dataPosition += imgRowSize;\n        }\n      }\n      this.buffer = data;\n    }\n    this.bufferLength = this.buffer.length;\n    this.eof = true;\n  };\n\n  return JpxStream;\n})();\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n  constructor(msg) {\n    super(`JPX error: ${msg}`);\n  }\n}\n\nvar JpxImage = (function JpxImageClosure() {\n  // Table E.1\n  var SubbandsGainLog2 = {\n    LL: 0,\n    LH: 1,\n    HL: 1,\n    HH: 2,\n  };\n  function JpxImage() {\n    this.failOnCorruptedImage = false;\n  }\n  JpxImage.prototype = {\n    parse: function JpxImage_parse(data) {\n      var head = readUint16(data, 0);\n      // No box header, immediate start of codestream (SOC)\n      if (head === 0xff4f) {\n        this.parseCodestream(data, 0, data.length);\n        return;\n      }\n\n      var position = 0,\n        length = data.length;\n      while (position < length) {\n        var headerSize = 8;\n        var lbox = readUint32(data, position);\n        var tbox = readUint32(data, position + 4);\n        position += headerSize;\n        if (lbox === 1) {\n          // XLBox: read UInt64 according to spec.\n          // JavaScript's int precision of 53 bit should be sufficient here.\n          lbox =\n            readUint32(data, position) * 4294967296 +\n            readUint32(data, position + 4);\n          position += 8;\n          headerSize += 8;\n        }\n        if (lbox === 0) {\n          lbox = length - position + headerSize;\n        }\n        if (lbox < headerSize) {\n          throw new JpxError(\"Invalid box field size\");\n        }\n        var dataLength = lbox - headerSize;\n        var jumpDataLength = true;\n        switch (tbox) {\n          case 0x6a703268: // 'jp2h'\n            jumpDataLength = false; // parsing child boxes\n            break;\n          case 0x636f6c72: // 'colr'\n            // Colorspaces are not used, the CS from the PDF is used.\n            var method = data[position];\n            if (method === 1) {\n              // enumerated colorspace\n              var colorspace = readUint32(data, position + 3);\n              switch (colorspace) {\n                case 16: // this indicates a sRGB colorspace\n                case 17: // this indicates a grayscale colorspace\n                case 18: // this indicates a YUV colorspace\n                  break;\n                default:\n                  warn(\"Unknown colorspace \" + colorspace);\n                  break;\n              }\n            } else if (method === 2) {\n              info(\"ICC profile not supported\");\n            }\n            break;\n          case 0x6a703263: // 'jp2c'\n            this.parseCodestream(data, position, position + dataLength);\n            break;\n          case 0x6a502020: // 'jP\\024\\024'\n            if (readUint32(data, position) !== 0x0d0a870a) {\n              warn(\"Invalid JP2 signature\");\n            }\n            break;\n          // The following header types are valid but currently not used:\n          case 0x6a501a1a: // 'jP\\032\\032'\n          case 0x66747970: // 'ftyp'\n          case 0x72726571: // 'rreq'\n          case 0x72657320: // 'res '\n          case 0x69686472: // 'ihdr'\n            break;\n          default:\n            var headerType = String.fromCharCode(\n              (tbox >> 24) & 0xff,\n              (tbox >> 16) & 0xff,\n              (tbox >> 8) & 0xff,\n              tbox & 0xff\n            );\n            warn(\"Unsupported header type \" + tbox + \" (\" + headerType + \")\");\n            break;\n        }\n        if (jumpDataLength) {\n          position += dataLength;\n        }\n      }\n    },\n    parseImageProperties: function JpxImage_parseImageProperties(stream) {\n      var newByte = stream.getByte();\n      while (newByte >= 0) {\n        var oldByte = newByte;\n        newByte = stream.getByte();\n        var code = (oldByte << 8) | newByte;\n        // Image and tile size (SIZ)\n        if (code === 0xff51) {\n          stream.skip(4);\n          var Xsiz = stream.getInt32() >>> 0; // Byte 4\n          var Ysiz = stream.getInt32() >>> 0; // Byte 8\n          var XOsiz = stream.getInt32() >>> 0; // Byte 12\n          var YOsiz = stream.getInt32() >>> 0; // Byte 16\n          stream.skip(16);\n          var Csiz = stream.getUint16(); // Byte 36\n          this.width = Xsiz - XOsiz;\n          this.height = Ysiz - YOsiz;\n          this.componentsCount = Csiz;\n          // Results are always returned as `Uint8ClampedArray`s.\n          this.bitsPerComponent = 8;\n          return;\n        }\n      }\n      throw new JpxError(\"No size marker found in JPX stream\");\n    },\n    parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n      var context = {};\n      var doNotRecover = false;\n      try {\n        var position = start;\n        while (position + 1 < end) {\n          var code = readUint16(data, position);\n          position += 2;\n\n          var length = 0,\n            j,\n            sqcd,\n            spqcds,\n            spqcdSize,\n            scalarExpounded,\n            tile;\n          switch (code) {\n            case 0xff4f: // Start of codestream (SOC)\n              context.mainHeader = true;\n              break;\n            case 0xffd9: // End of codestream (EOC)\n              break;\n            case 0xff51: // Image and tile size (SIZ)\n              length = readUint16(data, position);\n              var siz = {};\n              siz.Xsiz = readUint32(data, position + 4);\n              siz.Ysiz = readUint32(data, position + 8);\n              siz.XOsiz = readUint32(data, position + 12);\n              siz.YOsiz = readUint32(data, position + 16);\n              siz.XTsiz = readUint32(data, position + 20);\n              siz.YTsiz = readUint32(data, position + 24);\n              siz.XTOsiz = readUint32(data, position + 28);\n              siz.YTOsiz = readUint32(data, position + 32);\n              var componentsCount = readUint16(data, position + 36);\n              siz.Csiz = componentsCount;\n              var components = [];\n              j = position + 38;\n              for (var i = 0; i < componentsCount; i++) {\n                var component = {\n                  precision: (data[j] & 0x7f) + 1,\n                  isSigned: !!(data[j] & 0x80),\n                  XRsiz: data[j + 1],\n                  YRsiz: data[j + 2],\n                };\n                j += 3;\n                calculateComponentDimensions(component, siz);\n                components.push(component);\n              }\n              context.SIZ = siz;\n              context.components = components;\n              calculateTileGrids(context, components);\n              context.QCC = [];\n              context.COC = [];\n              break;\n            case 0xff5c: // Quantization default (QCD)\n              length = readUint16(data, position);\n              var qcd = {};\n              j = position + 2;\n              sqcd = data[j++];\n              switch (sqcd & 0x1f) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error(\"Invalid SQcd value \" + sqcd);\n              }\n              qcd.noQuantization = spqcdSize === 8;\n              qcd.scalarExpounded = scalarExpounded;\n              qcd.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                var spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcd.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCD = qcd;\n              } else {\n                context.currentTile.QCD = qcd;\n                context.currentTile.QCC = [];\n              }\n              break;\n            case 0xff5d: // Quantization component (QCC)\n              length = readUint16(data, position);\n              var qcc = {};\n              j = position + 2;\n              var cqcc;\n              if (context.SIZ.Csiz < 257) {\n                cqcc = data[j++];\n              } else {\n                cqcc = readUint16(data, j);\n                j += 2;\n              }\n              sqcd = data[j++];\n              switch (sqcd & 0x1f) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error(\"Invalid SQcd value \" + sqcd);\n              }\n              qcc.noQuantization = spqcdSize === 8;\n              qcc.scalarExpounded = scalarExpounded;\n              qcc.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcc.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCC[cqcc] = qcc;\n              } else {\n                context.currentTile.QCC[cqcc] = qcc;\n              }\n              break;\n            case 0xff52: // Coding style default (COD)\n              length = readUint16(data, position);\n              var cod = {};\n              j = position + 2;\n              var scod = data[j++];\n              cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n              cod.sopMarkerUsed = !!(scod & 2);\n              cod.ephMarkerUsed = !!(scod & 4);\n              cod.progressionOrder = data[j++];\n              cod.layersCount = readUint16(data, j);\n              j += 2;\n              cod.multipleComponentTransform = data[j++];\n\n              cod.decompositionLevelsCount = data[j++];\n              cod.xcb = (data[j++] & 0xf) + 2;\n              cod.ycb = (data[j++] & 0xf) + 2;\n              var blockStyle = data[j++];\n              cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n              cod.resetContextProbabilities = !!(blockStyle & 2);\n              cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n              cod.verticallyStripe = !!(blockStyle & 8);\n              cod.predictableTermination = !!(blockStyle & 16);\n              cod.segmentationSymbolUsed = !!(blockStyle & 32);\n              cod.reversibleTransformation = data[j++];\n              if (cod.entropyCoderWithCustomPrecincts) {\n                var precinctsSizes = [];\n                while (j < length + position) {\n                  var precinctsSize = data[j++];\n                  precinctsSizes.push({\n                    PPx: precinctsSize & 0xf,\n                    PPy: precinctsSize >> 4,\n                  });\n                }\n                cod.precinctsSizes = precinctsSizes;\n              }\n              var unsupported = [];\n              if (cod.selectiveArithmeticCodingBypass) {\n                unsupported.push(\"selectiveArithmeticCodingBypass\");\n              }\n              if (cod.resetContextProbabilities) {\n                unsupported.push(\"resetContextProbabilities\");\n              }\n              if (cod.terminationOnEachCodingPass) {\n                unsupported.push(\"terminationOnEachCodingPass\");\n              }\n              if (cod.verticallyStripe) {\n                unsupported.push(\"verticallyStripe\");\n              }\n              if (cod.predictableTermination) {\n                unsupported.push(\"predictableTermination\");\n              }\n              if (unsupported.length > 0) {\n                doNotRecover = true;\n                throw new Error(\n                  \"Unsupported COD options (\" + unsupported.join(\", \") + \")\"\n                );\n              }\n              if (context.mainHeader) {\n                context.COD = cod;\n              } else {\n                context.currentTile.COD = cod;\n                context.currentTile.COC = [];\n              }\n              break;\n            case 0xff90: // Start of tile-part (SOT)\n              length = readUint16(data, position);\n              tile = {};\n              tile.index = readUint16(data, position + 2);\n              tile.length = readUint32(data, position + 4);\n              tile.dataEnd = tile.length + position - 2;\n              tile.partIndex = data[position + 8];\n              tile.partsCount = data[position + 9];\n\n              context.mainHeader = false;\n              if (tile.partIndex === 0) {\n                // reset component specific settings\n                tile.COD = context.COD;\n                tile.COC = context.COC.slice(0); // clone of the global COC\n                tile.QCD = context.QCD;\n                tile.QCC = context.QCC.slice(0); // clone of the global COC\n              }\n              context.currentTile = tile;\n              break;\n            case 0xff93: // Start of data (SOD)\n              tile = context.currentTile;\n              if (tile.partIndex === 0) {\n                initializeTile(context, tile.index);\n                buildPackets(context);\n              }\n\n              // moving to the end of the data\n              length = tile.dataEnd - position;\n              parseTilePackets(context, data, position, length);\n              break;\n            case 0xff55: // Tile-part lengths, main header (TLM)\n            case 0xff57: // Packet length, main header (PLM)\n            case 0xff58: // Packet length, tile-part header (PLT)\n            case 0xff64: // Comment (COM)\n              length = readUint16(data, position);\n              // skipping content\n              break;\n            case 0xff53: // Coding style component (COC)\n              throw new Error(\n                \"Codestream code 0xFF53 (COC) is not implemented\"\n              );\n            default:\n              throw new Error(\"Unknown codestream code: \" + code.toString(16));\n          }\n          position += length;\n        }\n      } catch (e) {\n        if (doNotRecover || this.failOnCorruptedImage) {\n          throw new JpxError(e.message);\n        } else {\n          warn(\"JPX: Trying to recover from: \" + e.message);\n        }\n      }\n      this.tiles = transformComponents(context);\n      this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n      this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n      this.componentsCount = context.SIZ.Csiz;\n    },\n  };\n  function calculateComponentDimensions(component, siz) {\n    // Section B.2 Component mapping\n    component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n    component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n    component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n    component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n    component.width = component.x1 - component.x0;\n    component.height = component.y1 - component.y0;\n  }\n  function calculateTileGrids(context, components) {\n    var siz = context.SIZ;\n    // Section B.3 Division into tile and tile-components\n    var tile,\n      tiles = [];\n    var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n    var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n    for (var q = 0; q < numYtiles; q++) {\n      for (var p = 0; p < numXtiles; p++) {\n        tile = {};\n        tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n        tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n        tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n        tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n        tile.width = tile.tx1 - tile.tx0;\n        tile.height = tile.ty1 - tile.ty0;\n        tile.components = [];\n        tiles.push(tile);\n      }\n    }\n    context.tiles = tiles;\n\n    var componentsCount = siz.Csiz;\n    for (var i = 0, ii = componentsCount; i < ii; i++) {\n      var component = components[i];\n      for (var j = 0, jj = tiles.length; j < jj; j++) {\n        var tileComponent = {};\n        tile = tiles[j];\n        tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n        tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n        tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n        tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n        tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n        tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n        tile.components[i] = tileComponent;\n      }\n    }\n  }\n  function getBlocksDimensions(context, component, r) {\n    var codOrCoc = component.codingStyleParameters;\n    var result = {};\n    if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n      result.PPx = 15;\n      result.PPy = 15;\n    } else {\n      result.PPx = codOrCoc.precinctsSizes[r].PPx;\n      result.PPy = codOrCoc.precinctsSizes[r].PPy;\n    }\n    // calculate codeblock size as described in section B.7\n    result.xcb_ =\n      r > 0\n        ? Math.min(codOrCoc.xcb, result.PPx - 1)\n        : Math.min(codOrCoc.xcb, result.PPx);\n    result.ycb_ =\n      r > 0\n        ? Math.min(codOrCoc.ycb, result.PPy - 1)\n        : Math.min(codOrCoc.ycb, result.PPy);\n    return result;\n  }\n  function buildPrecincts(context, resolution, dimensions) {\n    // Section B.6 Division resolution to precincts\n    var precinctWidth = 1 << dimensions.PPx;\n    var precinctHeight = 1 << dimensions.PPy;\n    // Jasper introduces codeblock groups for mapping each subband codeblocks\n    // to precincts. Precinct partition divides a resolution according to width\n    // and height parameters. The subband that belongs to the resolution level\n    // has a different size than the level, unless it is the zero resolution.\n\n    // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n    // The precinct partitioning for a particular subband is derived from a\n    // partitioning of its parent LL band (i.e., the LL band at the next higher\n    // resolution level)... The LL band associated with each resolution level is\n    // divided into precincts... Each of the resulting precinct regions is then\n    // mapped into its child subbands (if any) at the next lower resolution\n    // level. This is accomplished by using the coordinate transformation\n    // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n    // coordinates of a point in the LL band and child subband, respectively.\n    var isZeroRes = resolution.resLevel === 0;\n    var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n    var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n    var numprecinctswide =\n      resolution.trx1 > resolution.trx0\n        ? Math.ceil(resolution.trx1 / precinctWidth) -\n          Math.floor(resolution.trx0 / precinctWidth)\n        : 0;\n    var numprecinctshigh =\n      resolution.try1 > resolution.try0\n        ? Math.ceil(resolution.try1 / precinctHeight) -\n          Math.floor(resolution.try0 / precinctHeight)\n        : 0;\n    var numprecincts = numprecinctswide * numprecinctshigh;\n\n    resolution.precinctParameters = {\n      precinctWidth,\n      precinctHeight,\n      numprecinctswide,\n      numprecinctshigh,\n      numprecincts,\n      precinctWidthInSubband,\n      precinctHeightInSubband,\n    };\n  }\n  function buildCodeblocks(context, subband, dimensions) {\n    // Section B.7 Division sub-band into code-blocks\n    var xcb_ = dimensions.xcb_;\n    var ycb_ = dimensions.ycb_;\n    var codeblockWidth = 1 << xcb_;\n    var codeblockHeight = 1 << ycb_;\n    var cbx0 = subband.tbx0 >> xcb_;\n    var cby0 = subband.tby0 >> ycb_;\n    var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n    var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n    var precinctParameters = subband.resolution.precinctParameters;\n    var codeblocks = [];\n    var precincts = [];\n    var i, j, codeblock, precinctNumber;\n    for (j = cby0; j < cby1; j++) {\n      for (i = cbx0; i < cbx1; i++) {\n        codeblock = {\n          cbx: i,\n          cby: j,\n          tbx0: codeblockWidth * i,\n          tby0: codeblockHeight * j,\n          tbx1: codeblockWidth * (i + 1),\n          tby1: codeblockHeight * (j + 1),\n        };\n\n        codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n        codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n        codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n        codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n        // Calculate precinct number for this codeblock, codeblock position\n        // should be relative to its subband, use actual dimension and position\n        // See comment about codeblock group width and height\n        var pi = Math.floor(\n          (codeblock.tbx0_ - subband.tbx0) /\n            precinctParameters.precinctWidthInSubband\n        );\n        var pj = Math.floor(\n          (codeblock.tby0_ - subband.tby0) /\n            precinctParameters.precinctHeightInSubband\n        );\n        precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n        codeblock.precinctNumber = precinctNumber;\n        codeblock.subbandType = subband.type;\n        codeblock.Lblock = 3;\n\n        if (\n          codeblock.tbx1_ <= codeblock.tbx0_ ||\n          codeblock.tby1_ <= codeblock.tby0_\n        ) {\n          continue;\n        }\n        codeblocks.push(codeblock);\n        // building precinct for the sub-band\n        var precinct = precincts[precinctNumber];\n        if (precinct !== undefined) {\n          if (i < precinct.cbxMin) {\n            precinct.cbxMin = i;\n          } else if (i > precinct.cbxMax) {\n            precinct.cbxMax = i;\n          }\n          if (j < precinct.cbyMin) {\n            precinct.cbxMin = j;\n          } else if (j > precinct.cbyMax) {\n            precinct.cbyMax = j;\n          }\n        } else {\n          precincts[precinctNumber] = precinct = {\n            cbxMin: i,\n            cbyMin: j,\n            cbxMax: i,\n            cbyMax: j,\n          };\n        }\n        codeblock.precinct = precinct;\n      }\n    }\n    subband.codeblockParameters = {\n      codeblockWidth: xcb_,\n      codeblockHeight: ycb_,\n      numcodeblockwide: cbx1 - cbx0 + 1,\n      numcodeblockhigh: cby1 - cby0 + 1,\n    };\n    subband.codeblocks = codeblocks;\n    subband.precincts = precincts;\n  }\n  function createPacket(resolution, precinctNumber, layerNumber) {\n    var precinctCodeblocks = [];\n    // Section B.10.8 Order of info in packet\n    var subbands = resolution.subbands;\n    // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n    for (var i = 0, ii = subbands.length; i < ii; i++) {\n      var subband = subbands[i];\n      var codeblocks = subband.codeblocks;\n      for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n        var codeblock = codeblocks[j];\n        if (codeblock.precinctNumber !== precinctNumber) {\n          continue;\n        }\n        precinctCodeblocks.push(codeblock);\n      }\n    }\n    return {\n      layerNumber,\n      codeblocks: precinctCodeblocks,\n    };\n  }\n  function LayerResolutionComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        tile.components[q].codingStyleParameters.decompositionLevelsCount\n      );\n    }\n\n    var l = 0,\n      r = 0,\n      i = 0,\n      k = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.1 Layer-resolution-component-position\n      for (; l < layersCount; l++) {\n        for (; r <= maxDecompositionLevelsCount; r++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts; ) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        r = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ResolutionLayerComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        tile.components[q].codingStyleParameters.decompositionLevelsCount\n      );\n    }\n\n    var r = 0,\n      l = 0,\n      i = 0,\n      k = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.2 Resolution-layer-component-position\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; l < layersCount; l++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts; ) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        l = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ResolutionPositionComponentLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var l, r, c, p;\n    var maxDecompositionLevelsCount = 0;\n    for (c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        component.codingStyleParameters.decompositionLevelsCount\n      );\n    }\n    var maxNumPrecinctsInLevel = new Int32Array(\n      maxDecompositionLevelsCount + 1\n    );\n    for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n      var maxNumPrecincts = 0;\n      for (c = 0; c < componentsCount; ++c) {\n        var resolutions = tile.components[c].resolutions;\n        if (r < resolutions.length) {\n          maxNumPrecincts = Math.max(\n            maxNumPrecincts,\n            resolutions[r].precinctParameters.numprecincts\n          );\n        }\n      }\n      maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n    }\n    l = 0;\n    r = 0;\n    c = 0;\n    p = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.3 Resolution-position-component-layer\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; p < maxNumPrecinctsInLevel[r]; p++) {\n          for (; c < componentsCount; c++) {\n            var component = tile.components[c];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            if (p >= numprecincts) {\n              continue;\n            }\n            for (; l < layersCount; ) {\n              var packet = createPacket(resolution, p, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          c = 0;\n        }\n        p = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function PositionComponentResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var precinctsIterationSizes = precinctsSizes;\n    var l = 0,\n      r = 0,\n      c = 0,\n      px = 0,\n      py = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.4 Position-component-resolution-layer\n      for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n        for (; px < precinctsIterationSizes.maxNumWide; px++) {\n          for (; c < componentsCount; c++) {\n            var component = tile.components[c];\n            var decompositionLevelsCount =\n              component.codingStyleParameters.decompositionLevelsCount;\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale =\n                precinctsSizes.components[c].resolutions[r];\n              var k = getPrecinctIndexIfExist(\n                px,\n                py,\n                sizeInImageScale,\n                precinctsIterationSizes,\n                resolution\n              );\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount; ) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          c = 0;\n        }\n        px = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ComponentPositionResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var l = 0,\n      r = 0,\n      c = 0,\n      px = 0,\n      py = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.5 Component-position-resolution-layer\n      for (; c < componentsCount; ++c) {\n        var component = tile.components[c];\n        var precinctsIterationSizes = precinctsSizes.components[c];\n        var decompositionLevelsCount =\n          component.codingStyleParameters.decompositionLevelsCount;\n        for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n          for (; px < precinctsIterationSizes.maxNumWide; px++) {\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n              var k = getPrecinctIndexIfExist(\n                px,\n                py,\n                sizeInImageScale,\n                precinctsIterationSizes,\n                resolution\n              );\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount; ) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          px = 0;\n        }\n        py = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function getPrecinctIndexIfExist(\n    pxIndex,\n    pyIndex,\n    sizeInImageScale,\n    precinctIterationSizes,\n    resolution\n  ) {\n    var posX = pxIndex * precinctIterationSizes.minWidth;\n    var posY = pyIndex * precinctIterationSizes.minHeight;\n    if (\n      posX % sizeInImageScale.width !== 0 ||\n      posY % sizeInImageScale.height !== 0\n    ) {\n      return null;\n    }\n    var startPrecinctRowIndex =\n      (posY / sizeInImageScale.width) *\n      resolution.precinctParameters.numprecinctswide;\n    return posX / sizeInImageScale.height + startPrecinctRowIndex;\n  }\n  function getPrecinctSizesInImageScale(tile) {\n    var componentsCount = tile.components.length;\n    var minWidth = Number.MAX_VALUE;\n    var minHeight = Number.MAX_VALUE;\n    var maxNumWide = 0;\n    var maxNumHigh = 0;\n    var sizePerComponent = new Array(componentsCount);\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      var sizePerResolution = new Array(decompositionLevelsCount + 1);\n      var minWidthCurrentComponent = Number.MAX_VALUE;\n      var minHeightCurrentComponent = Number.MAX_VALUE;\n      var maxNumWideCurrentComponent = 0;\n      var maxNumHighCurrentComponent = 0;\n      var scale = 1;\n      for (var r = decompositionLevelsCount; r >= 0; --r) {\n        var resolution = component.resolutions[r];\n        var widthCurrentResolution =\n          scale * resolution.precinctParameters.precinctWidth;\n        var heightCurrentResolution =\n          scale * resolution.precinctParameters.precinctHeight;\n        minWidthCurrentComponent = Math.min(\n          minWidthCurrentComponent,\n          widthCurrentResolution\n        );\n        minHeightCurrentComponent = Math.min(\n          minHeightCurrentComponent,\n          heightCurrentResolution\n        );\n        maxNumWideCurrentComponent = Math.max(\n          maxNumWideCurrentComponent,\n          resolution.precinctParameters.numprecinctswide\n        );\n        maxNumHighCurrentComponent = Math.max(\n          maxNumHighCurrentComponent,\n          resolution.precinctParameters.numprecinctshigh\n        );\n        sizePerResolution[r] = {\n          width: widthCurrentResolution,\n          height: heightCurrentResolution,\n        };\n        scale <<= 1;\n      }\n      minWidth = Math.min(minWidth, minWidthCurrentComponent);\n      minHeight = Math.min(minHeight, minHeightCurrentComponent);\n      maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n      maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n      sizePerComponent[c] = {\n        resolutions: sizePerResolution,\n        minWidth: minWidthCurrentComponent,\n        minHeight: minHeightCurrentComponent,\n        maxNumWide: maxNumWideCurrentComponent,\n        maxNumHigh: maxNumHighCurrentComponent,\n      };\n    }\n    return {\n      components: sizePerComponent,\n      minWidth,\n      minHeight,\n      maxNumWide,\n      maxNumHigh,\n    };\n  }\n  function buildPackets(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var componentsCount = siz.Csiz;\n    // Creating resolutions and sub-bands for each component\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      // Section B.5 Resolution levels and sub-bands\n      var resolutions = [];\n      var subbands = [];\n      for (var r = 0; r <= decompositionLevelsCount; r++) {\n        var blocksDimensions = getBlocksDimensions(context, component, r);\n        var resolution = {};\n        var scale = 1 << (decompositionLevelsCount - r);\n        resolution.trx0 = Math.ceil(component.tcx0 / scale);\n        resolution.try0 = Math.ceil(component.tcy0 / scale);\n        resolution.trx1 = Math.ceil(component.tcx1 / scale);\n        resolution.try1 = Math.ceil(component.tcy1 / scale);\n        resolution.resLevel = r;\n        buildPrecincts(context, resolution, blocksDimensions);\n        resolutions.push(resolution);\n\n        var subband;\n        if (r === 0) {\n          // one sub-band (LL) with last decomposition\n          subband = {};\n          subband.type = \"LL\";\n          subband.tbx0 = Math.ceil(component.tcx0 / scale);\n          subband.tby0 = Math.ceil(component.tcy0 / scale);\n          subband.tbx1 = Math.ceil(component.tcx1 / scale);\n          subband.tby1 = Math.ceil(component.tcy1 / scale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolution.subbands = [subband];\n        } else {\n          var bscale = 1 << (decompositionLevelsCount - r + 1);\n          var resolutionSubbands = [];\n          // three sub-bands (HL, LH and HH) with rest of decompositions\n          subband = {};\n          subband.type = \"HL\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          subband = {};\n          subband.type = \"LH\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          subband = {};\n          subband.type = \"HH\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          resolution.subbands = resolutionSubbands;\n        }\n      }\n      component.resolutions = resolutions;\n      component.subbands = subbands;\n    }\n    // Generate the packets sequence\n    var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n    switch (progressionOrder) {\n      case 0:\n        tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n          context\n        );\n        break;\n      case 1:\n        tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n          context\n        );\n        break;\n      case 2:\n        tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n          context\n        );\n        break;\n      case 3:\n        tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n          context\n        );\n        break;\n      case 4:\n        tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n          context\n        );\n        break;\n      default:\n        throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n    }\n  }\n  function parseTilePackets(context, data, offset, dataLength) {\n    var position = 0;\n    var buffer,\n      bufferSize = 0,\n      skipNextBit = false;\n    function readBits(count) {\n      while (bufferSize < count) {\n        var b = data[offset + position];\n        position++;\n        if (skipNextBit) {\n          buffer = (buffer << 7) | b;\n          bufferSize += 7;\n          skipNextBit = false;\n        } else {\n          buffer = (buffer << 8) | b;\n          bufferSize += 8;\n        }\n        if (b === 0xff) {\n          skipNextBit = true;\n        }\n      }\n      bufferSize -= count;\n      return (buffer >>> bufferSize) & ((1 << count) - 1);\n    }\n    function skipMarkerIfEqual(value) {\n      if (\n        data[offset + position - 1] === 0xff &&\n        data[offset + position] === value\n      ) {\n        skipBytes(1);\n        return true;\n      } else if (\n        data[offset + position] === 0xff &&\n        data[offset + position + 1] === value\n      ) {\n        skipBytes(2);\n        return true;\n      }\n      return false;\n    }\n    function skipBytes(count) {\n      position += count;\n    }\n    function alignToByte() {\n      bufferSize = 0;\n      if (skipNextBit) {\n        position++;\n        skipNextBit = false;\n      }\n    }\n    function readCodingpasses() {\n      if (readBits(1) === 0) {\n        return 1;\n      }\n      if (readBits(1) === 0) {\n        return 2;\n      }\n      var value = readBits(2);\n      if (value < 3) {\n        return value + 3;\n      }\n      value = readBits(5);\n      if (value < 31) {\n        return value + 6;\n      }\n      value = readBits(7);\n      return value + 37;\n    }\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var sopMarkerUsed = context.COD.sopMarkerUsed;\n    var ephMarkerUsed = context.COD.ephMarkerUsed;\n    var packetsIterator = tile.packetsIterator;\n    while (position < dataLength) {\n      alignToByte();\n      if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n        // Skip also marker segment length and packet sequence ID\n        skipBytes(4);\n      }\n      var packet = packetsIterator.nextPacket();\n      if (!readBits(1)) {\n        continue;\n      }\n      var layerNumber = packet.layerNumber;\n      var queue = [],\n        codeblock;\n      for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n        codeblock = packet.codeblocks[i];\n        var precinct = codeblock.precinct;\n        var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n        var codeblockRow = codeblock.cby - precinct.cbyMin;\n        var codeblockIncluded = false;\n        var firstTimeInclusion = false;\n        var valueReady;\n        if (codeblock[\"included\"] !== undefined) {\n          codeblockIncluded = !!readBits(1);\n        } else {\n          // reading inclusion tree\n          precinct = codeblock.precinct;\n          var inclusionTree, zeroBitPlanesTree;\n          if (precinct[\"inclusionTree\"] !== undefined) {\n            inclusionTree = precinct.inclusionTree;\n          } else {\n            // building inclusion and zero bit-planes trees\n            var width = precinct.cbxMax - precinct.cbxMin + 1;\n            var height = precinct.cbyMax - precinct.cbyMin + 1;\n            inclusionTree = new InclusionTree(width, height, layerNumber);\n            zeroBitPlanesTree = new TagTree(width, height);\n            precinct.inclusionTree = inclusionTree;\n            precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n          }\n\n          if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n            while (true) {\n              if (readBits(1)) {\n                valueReady = !inclusionTree.nextLevel();\n                if (valueReady) {\n                  codeblock.included = true;\n                  codeblockIncluded = firstTimeInclusion = true;\n                  break;\n                }\n              } else {\n                inclusionTree.incrementValue(layerNumber);\n                break;\n              }\n            }\n          }\n        }\n        if (!codeblockIncluded) {\n          continue;\n        }\n        if (firstTimeInclusion) {\n          zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n          zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n          while (true) {\n            if (readBits(1)) {\n              valueReady = !zeroBitPlanesTree.nextLevel();\n              if (valueReady) {\n                break;\n              }\n            } else {\n              zeroBitPlanesTree.incrementValue();\n            }\n          }\n          codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n        }\n        var codingpasses = readCodingpasses();\n        while (readBits(1)) {\n          codeblock.Lblock++;\n        }\n        var codingpassesLog2 = log2(codingpasses);\n        // rounding down log2\n        var bits =\n          (codingpasses < 1 << codingpassesLog2\n            ? codingpassesLog2 - 1\n            : codingpassesLog2) + codeblock.Lblock;\n        var codedDataLength = readBits(bits);\n        queue.push({\n          codeblock,\n          codingpasses,\n          dataLength: codedDataLength,\n        });\n      }\n      alignToByte();\n      if (ephMarkerUsed) {\n        skipMarkerIfEqual(0x92);\n      }\n      while (queue.length > 0) {\n        var packetItem = queue.shift();\n        codeblock = packetItem.codeblock;\n        if (codeblock[\"data\"] === undefined) {\n          codeblock.data = [];\n        }\n        codeblock.data.push({\n          data,\n          start: offset + position,\n          end: offset + position + packetItem.dataLength,\n          codingpasses: packetItem.codingpasses,\n        });\n        position += packetItem.dataLength;\n      }\n    }\n    return position;\n  }\n  function copyCoefficients(\n    coefficients,\n    levelWidth,\n    levelHeight,\n    subband,\n    delta,\n    mb,\n    reversible,\n    segmentationSymbolUsed\n  ) {\n    var x0 = subband.tbx0;\n    var y0 = subband.tby0;\n    var width = subband.tbx1 - subband.tbx0;\n    var codeblocks = subband.codeblocks;\n    var right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n    var bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n    for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n      var codeblock = codeblocks[i];\n      var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n      var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n      if (blockWidth === 0 || blockHeight === 0) {\n        continue;\n      }\n      if (codeblock[\"data\"] === undefined) {\n        continue;\n      }\n\n      var bitModel, currentCodingpassType;\n      bitModel = new BitModel(\n        blockWidth,\n        blockHeight,\n        codeblock.subbandType,\n        codeblock.zeroBitPlanes,\n        mb\n      );\n      currentCodingpassType = 2; // first bit plane starts from cleanup\n\n      // collect data\n      var data = codeblock.data,\n        totalLength = 0,\n        codingpasses = 0;\n      var j, jj, dataItem;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        totalLength += dataItem.end - dataItem.start;\n        codingpasses += dataItem.codingpasses;\n      }\n      var encodedData = new Uint8Array(totalLength);\n      var position = 0;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n        encodedData.set(chunk, position);\n        position += chunk.length;\n      }\n      // decoding the item\n      var decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n      bitModel.setDecoder(decoder);\n\n      for (j = 0; j < codingpasses; j++) {\n        switch (currentCodingpassType) {\n          case 0:\n            bitModel.runSignificancePropagationPass();\n            break;\n          case 1:\n            bitModel.runMagnitudeRefinementPass();\n            break;\n          case 2:\n            bitModel.runCleanupPass();\n            if (segmentationSymbolUsed) {\n              bitModel.checkSegmentationSymbol();\n            }\n            break;\n        }\n        currentCodingpassType = (currentCodingpassType + 1) % 3;\n      }\n\n      var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n      var sign = bitModel.coefficentsSign;\n      var magnitude = bitModel.coefficentsMagnitude;\n      var bitsDecoded = bitModel.bitsDecoded;\n      var magnitudeCorrection = reversible ? 0 : 0.5;\n      var k, n, nb;\n      position = 0;\n      // Do the interleaving of Section F.3.3 here, so we do not need\n      // to copy later. LL level is not interleaved, just copied.\n      var interleave = subband.type !== \"LL\";\n      for (j = 0; j < blockHeight; j++) {\n        var row = (offset / width) | 0; // row in the non-interleaved subband\n        var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n        for (k = 0; k < blockWidth; k++) {\n          n = magnitude[position];\n          if (n !== 0) {\n            n = (n + magnitudeCorrection) * delta;\n            if (sign[position] !== 0) {\n              n = -n;\n            }\n            nb = bitsDecoded[position];\n            var pos = interleave ? levelOffset + (offset << 1) : offset;\n            if (reversible && nb >= mb) {\n              coefficients[pos] = n;\n            } else {\n              coefficients[pos] = n * (1 << (mb - nb));\n            }\n          }\n          offset++;\n          position++;\n        }\n        offset += width - blockWidth;\n      }\n    }\n  }\n  function transformTile(context, tile, c) {\n    var component = tile.components[c];\n    var codingStyleParameters = component.codingStyleParameters;\n    var quantizationParameters = component.quantizationParameters;\n    var decompositionLevelsCount =\n      codingStyleParameters.decompositionLevelsCount;\n    var spqcds = quantizationParameters.SPqcds;\n    var scalarExpounded = quantizationParameters.scalarExpounded;\n    var guardBits = quantizationParameters.guardBits;\n    var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n    var precision = context.components[c].precision;\n\n    var reversible = codingStyleParameters.reversibleTransformation;\n    var transform = reversible\n      ? new ReversibleTransform()\n      : new IrreversibleTransform();\n\n    var subbandCoefficients = [];\n    var b = 0;\n    for (var i = 0; i <= decompositionLevelsCount; i++) {\n      var resolution = component.resolutions[i];\n\n      var width = resolution.trx1 - resolution.trx0;\n      var height = resolution.try1 - resolution.try0;\n      // Allocate space for the whole sublevel.\n      var coefficients = new Float32Array(width * height);\n\n      for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n        var mu, epsilon;\n        if (!scalarExpounded) {\n          // formula E-5\n          mu = spqcds[0].mu;\n          epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n        } else {\n          mu = spqcds[b].mu;\n          epsilon = spqcds[b].epsilon;\n          b++;\n        }\n\n        var subband = resolution.subbands[j];\n        var gainLog2 = SubbandsGainLog2[subband.type];\n\n        // calculate quantization coefficient (Section E.1.1.1)\n        var delta = reversible\n          ? 1\n          : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n        var mb = guardBits + epsilon - 1;\n\n        // In the first resolution level, copyCoefficients will fill the\n        // whole array with coefficients. In the succeeding passes,\n        // copyCoefficients will consecutively fill in the values that belong\n        // to the interleaved positions of the HL, LH, and HH coefficients.\n        // The LL coefficients will then be interleaved in Transform.iterate().\n        copyCoefficients(\n          coefficients,\n          width,\n          height,\n          subband,\n          delta,\n          mb,\n          reversible,\n          segmentationSymbolUsed\n        );\n      }\n      subbandCoefficients.push({\n        width,\n        height,\n        items: coefficients,\n      });\n    }\n\n    var result = transform.calculate(\n      subbandCoefficients,\n      component.tcx0,\n      component.tcy0\n    );\n    return {\n      left: component.tcx0,\n      top: component.tcy0,\n      width: result.width,\n      height: result.height,\n      items: result.items,\n    };\n  }\n  function transformComponents(context) {\n    var siz = context.SIZ;\n    var components = context.components;\n    var componentsCount = siz.Csiz;\n    var resultImages = [];\n    for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n      var tile = context.tiles[i];\n      var transformedTiles = [];\n      var c;\n      for (c = 0; c < componentsCount; c++) {\n        transformedTiles[c] = transformTile(context, tile, c);\n      }\n      var tile0 = transformedTiles[0];\n      var out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n      var result = {\n        left: tile0.left,\n        top: tile0.top,\n        width: tile0.width,\n        height: tile0.height,\n        items: out,\n      };\n\n      // Section G.2.2 Inverse multi component transform\n      var shift, offset;\n      var pos = 0,\n        j,\n        jj,\n        y0,\n        y1,\n        y2;\n      if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n        var fourComponents = componentsCount === 4;\n        var y0items = transformedTiles[0].items;\n        var y1items = transformedTiles[1].items;\n        var y2items = transformedTiles[2].items;\n        var y3items = fourComponents ? transformedTiles[3].items : null;\n\n        // HACK: The multiple component transform formulas below assume that\n        // all components have the same precision. With this in mind, we\n        // compute shift and offset only once.\n        shift = components[0].precision - 8;\n        offset = (128 << shift) + 0.5;\n\n        var component0 = tile.components[0];\n        var alpha01 = componentsCount - 3;\n        jj = y0items.length;\n        if (!component0.codingStyleParameters.reversibleTransformation) {\n          // inverse irreversible multiple component transform\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            out[pos++] = (y0 + 1.402 * y2) >> shift;\n            out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n            out[pos++] = (y0 + 1.772 * y1) >> shift;\n          }\n        } else {\n          // inverse reversible multiple component transform\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            const g = y0 - ((y2 + y1) >> 2);\n\n            out[pos++] = (g + y2) >> shift;\n            out[pos++] = g >> shift;\n            out[pos++] = (g + y1) >> shift;\n          }\n        }\n        if (fourComponents) {\n          for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n            out[pos] = (y3items[j] + offset) >> shift;\n          }\n        }\n      } else {\n        // no multi-component transform\n        for (c = 0; c < componentsCount; c++) {\n          var items = transformedTiles[c].items;\n          shift = components[c].precision - 8;\n          offset = (128 << shift) + 0.5;\n          for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n            out[pos] = (items[j] + offset) >> shift;\n            pos += componentsCount;\n          }\n        }\n      }\n      resultImages.push(result);\n    }\n    return resultImages;\n  }\n  function initializeTile(context, tileIndex) {\n    var siz = context.SIZ;\n    var componentsCount = siz.Csiz;\n    var tile = context.tiles[tileIndex];\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var qcdOrQcc =\n        context.currentTile.QCC[c] !== undefined\n          ? context.currentTile.QCC[c]\n          : context.currentTile.QCD;\n      component.quantizationParameters = qcdOrQcc;\n      var codOrCoc =\n        context.currentTile.COC[c] !== undefined\n          ? context.currentTile.COC[c]\n          : context.currentTile.COD;\n      component.codingStyleParameters = codOrCoc;\n    }\n    tile.codingStyleDefaultParameters = context.currentTile.COD;\n  }\n\n  // Section B.10.2 Tag trees\n  var TagTree = (function TagTreeClosure() {\n    function TagTree(width, height) {\n      var levelsLength = log2(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var level = {\n          width,\n          height,\n          items: [],\n        };\n        this.levels.push(level);\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    TagTree.prototype = {\n      reset: function TagTree_reset(i, j) {\n        var currentLevel = 0,\n          value = 0,\n          level;\n        while (currentLevel < this.levels.length) {\n          level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          if (level.items[index] !== undefined) {\n            value = level.items[index];\n            break;\n          }\n          level.index = index;\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        currentLevel--;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        this.currentLevel = currentLevel;\n        delete this.value;\n      },\n      incrementValue: function TagTree_incrementValue() {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index]++;\n      },\n      nextLevel: function TagTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        currentLevel--;\n        if (currentLevel < 0) {\n          this.value = value;\n          return false;\n        }\n\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      },\n    };\n    return TagTree;\n  })();\n\n  var InclusionTree = (function InclusionTreeClosure() {\n    function InclusionTree(width, height, defaultValue) {\n      var levelsLength = log2(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var items = new Uint8Array(width * height);\n        for (var j = 0, jj = items.length; j < jj; j++) {\n          items[j] = defaultValue;\n        }\n\n        var level = {\n          width,\n          height,\n          items,\n        };\n        this.levels.push(level);\n\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    InclusionTree.prototype = {\n      reset: function InclusionTree_reset(i, j, stopValue) {\n        var currentLevel = 0;\n        while (currentLevel < this.levels.length) {\n          var level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          level.index = index;\n          var value = level.items[index];\n\n          if (value === 0xff) {\n            break;\n          }\n\n          if (value > stopValue) {\n            this.currentLevel = currentLevel;\n            // already know about this one, propagating the value to top levels\n            this.propagateValues();\n            return false;\n          }\n\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        this.currentLevel = currentLevel - 1;\n        return true;\n      },\n      incrementValue: function InclusionTree_incrementValue(stopValue) {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index] = stopValue + 1;\n        this.propagateValues();\n      },\n      propagateValues: function InclusionTree_propagateValues() {\n        var levelIndex = this.currentLevel;\n        var level = this.levels[levelIndex];\n        var currentValue = level.items[level.index];\n        while (--levelIndex >= 0) {\n          level = this.levels[levelIndex];\n          level.items[level.index] = currentValue;\n        }\n      },\n      nextLevel: function InclusionTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        level.items[level.index] = 0xff;\n        currentLevel--;\n        if (currentLevel < 0) {\n          return false;\n        }\n\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      },\n    };\n    return InclusionTree;\n  })();\n\n  // Section D. Coefficient bit modeling\n  var BitModel = (function BitModelClosure() {\n    var UNIFORM_CONTEXT = 17;\n    var RUNLENGTH_CONTEXT = 18;\n    // Table D-1\n    // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n    // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n    // prettier-ignore\n    var LLAndLHContextsLabel = new Uint8Array([\n      0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n      7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n      8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8\n    ]);\n    // prettier-ignore\n    var HLContextLabel = new Uint8Array([\n      0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n      8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n      4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8\n    ]);\n    // prettier-ignore\n    var HHContextLabel = new Uint8Array([\n      0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n      5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n      8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8\n    ]);\n\n    function BitModel(width, height, subband, zeroBitPlanes, mb) {\n      this.width = width;\n      this.height = height;\n\n      let contextLabelTable;\n      if (subband === \"HH\") {\n        contextLabelTable = HHContextLabel;\n      } else if (subband === \"HL\") {\n        contextLabelTable = HLContextLabel;\n      } else {\n        contextLabelTable = LLAndLHContextsLabel;\n      }\n      this.contextLabelTable = contextLabelTable;\n\n      var coefficientCount = width * height;\n\n      // coefficients outside the encoding region treated as insignificant\n      // add border state cells for significanceState\n      this.neighborsSignificance = new Uint8Array(coefficientCount);\n      this.coefficentsSign = new Uint8Array(coefficientCount);\n      let coefficentsMagnitude;\n      if (mb > 14) {\n        coefficentsMagnitude = new Uint32Array(coefficientCount);\n      } else if (mb > 6) {\n        coefficentsMagnitude = new Uint16Array(coefficientCount);\n      } else {\n        coefficentsMagnitude = new Uint8Array(coefficientCount);\n      }\n      this.coefficentsMagnitude = coefficentsMagnitude;\n      this.processingFlags = new Uint8Array(coefficientCount);\n\n      var bitsDecoded = new Uint8Array(coefficientCount);\n      if (zeroBitPlanes !== 0) {\n        for (var i = 0; i < coefficientCount; i++) {\n          bitsDecoded[i] = zeroBitPlanes;\n        }\n      }\n      this.bitsDecoded = bitsDecoded;\n\n      this.reset();\n    }\n\n    BitModel.prototype = {\n      setDecoder: function BitModel_setDecoder(decoder) {\n        this.decoder = decoder;\n      },\n      reset: function BitModel_reset() {\n        // We have 17 contexts that are accessed via context labels,\n        // plus the uniform and runlength context.\n        this.contexts = new Int8Array(19);\n\n        // Contexts are packed into 1 byte:\n        // highest 7 bits carry the index, lowest bit carries mps\n        this.contexts[0] = (4 << 1) | 0;\n        this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n        this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n      },\n      setNeighborsSignificance: function BitModel_setNeighborsSignificance(\n        row,\n        column,\n        index\n      ) {\n        var neighborsSignificance = this.neighborsSignificance;\n        var width = this.width,\n          height = this.height;\n        var left = column > 0;\n        var right = column + 1 < width;\n        var i;\n\n        if (row > 0) {\n          i = index - width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n\n        if (row + 1 < height) {\n          i = index + width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n\n        if (left) {\n          neighborsSignificance[index - 1] += 0x01;\n        }\n        if (right) {\n          neighborsSignificance[index + 1] += 0x01;\n        }\n        neighborsSignificance[index] |= 0x80;\n      },\n      runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var neighborsSignificance = this.neighborsSignificance;\n        var processingFlags = this.processingFlags;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processedInverseMask = ~1;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n\n        for (var i0 = 0; i0 < height; i0 += 4) {\n          for (var j = 0; j < width; j++) {\n            var index = i0 * width + j;\n            for (var i1 = 0; i1 < 4; i1++, index += width) {\n              var i = i0 + i1;\n              if (i >= height) {\n                break;\n              }\n              // clear processed flag first\n              processingFlags[index] &= processedInverseMask;\n\n              if (\n                coefficentsMagnitude[index] ||\n                !neighborsSignificance[index]\n              ) {\n                continue;\n              }\n\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision) {\n                var sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contribution, sign0, sign1, significance1;\n        var contextLabel, decoded;\n\n        // calculate horizontal contribution\n        significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n        if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n          sign1 = coefficentsSign[index + 1];\n          if (significance1) {\n            sign0 = coefficentsSign[index - 1];\n            contribution = 1 - sign1 - sign0;\n          } else {\n            contribution = 1 - sign1 - sign1;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - 1];\n          contribution = 1 - sign0 - sign0;\n        } else {\n          contribution = 0;\n        }\n        var horizontalContribution = 3 * contribution;\n\n        // calculate vertical contribution and combine with the horizontal\n        significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n        if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n          sign1 = coefficentsSign[index + width];\n          if (significance1) {\n            sign0 = coefficentsSign[index - width];\n            contribution = 1 - sign1 - sign0 + horizontalContribution;\n          } else {\n            contribution = 1 - sign1 - sign1 + horizontalContribution;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - width];\n          contribution = 1 - sign0 - sign0 + horizontalContribution;\n        } else {\n          contribution = horizontalContribution;\n        }\n\n        if (contribution >= 0) {\n          contextLabel = 9 + contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel);\n        } else {\n          contextLabel = 9 - contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n        }\n        return decoded;\n      },\n      runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var neighborsSignificance = this.neighborsSignificance;\n        var contexts = this.contexts;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var length = width * height;\n        var width4 = width * 4;\n\n        for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n          indexNext = Math.min(length, index0 + width4);\n          for (var j = 0; j < width; j++) {\n            for (var index = index0 + j; index < indexNext; index += width) {\n              // significant but not those that have just become\n              if (\n                !coefficentsMagnitude[index] ||\n                (processingFlags[index] & processedMask) !== 0\n              ) {\n                continue;\n              }\n\n              var contextLabel = 16;\n              if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n                processingFlags[index] ^= firstMagnitudeBitMask;\n                // first refinement\n                var significance = neighborsSignificance[index] & 127;\n                contextLabel = significance === 0 ? 15 : 14;\n              }\n\n              var bit = decoder.readBit(contexts, contextLabel);\n              coefficentsMagnitude[index] =\n                (coefficentsMagnitude[index] << 1) | bit;\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      runCleanupPass: function BitModel_runCleanupPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var neighborsSignificance = this.neighborsSignificance;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var oneRowDown = width;\n        var twoRowsDown = width * 2;\n        var threeRowsDown = width * 3;\n        var iNext;\n        for (var i0 = 0; i0 < height; i0 = iNext) {\n          iNext = Math.min(i0 + 4, height);\n          var indexBase = i0 * width;\n          var checkAllEmpty = i0 + 3 < height;\n          for (var j = 0; j < width; j++) {\n            var index0 = indexBase + j;\n            // using the property: labels[neighborsSignificance[index]] === 0\n            // when neighborsSignificance[index] === 0\n            var allEmpty =\n              checkAllEmpty &&\n              processingFlags[index0] === 0 &&\n              processingFlags[index0 + oneRowDown] === 0 &&\n              processingFlags[index0 + twoRowsDown] === 0 &&\n              processingFlags[index0 + threeRowsDown] === 0 &&\n              neighborsSignificance[index0] === 0 &&\n              neighborsSignificance[index0 + oneRowDown] === 0 &&\n              neighborsSignificance[index0 + twoRowsDown] === 0 &&\n              neighborsSignificance[index0 + threeRowsDown] === 0;\n            var i1 = 0,\n              index = index0;\n            var i = i0,\n              sign;\n            if (allEmpty) {\n              var hasSignificantCoefficent = decoder.readBit(\n                contexts,\n                RUNLENGTH_CONTEXT\n              );\n              if (!hasSignificantCoefficent) {\n                bitsDecoded[index0]++;\n                bitsDecoded[index0 + oneRowDown]++;\n                bitsDecoded[index0 + twoRowsDown]++;\n                bitsDecoded[index0 + threeRowsDown]++;\n                continue; // next column\n              }\n              i1 =\n                (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n                decoder.readBit(contexts, UNIFORM_CONTEXT);\n              if (i1 !== 0) {\n                i = i0 + i1;\n                index += i1 * width;\n              }\n\n              sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n\n              index = index0;\n              for (var i2 = i0; i2 <= i; i2++, index += width) {\n                bitsDecoded[index]++;\n              }\n\n              i1++;\n            }\n            for (i = i0 + i1; i < iNext; i++, index += width) {\n              if (\n                coefficentsMagnitude[index] ||\n                (processingFlags[index] & processedMask) !== 0\n              ) {\n                continue;\n              }\n\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision === 1) {\n                sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n            }\n          }\n        }\n      },\n      checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n        var decoder = this.decoder;\n        var contexts = this.contexts;\n        var symbol =\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n          decoder.readBit(contexts, UNIFORM_CONTEXT);\n        if (symbol !== 0xa) {\n          throw new JpxError(\"Invalid segmentation symbol\");\n        }\n      },\n    };\n\n    return BitModel;\n  })();\n\n  // Section F, Discrete wavelet transformation\n  var Transform = (function TransformClosure() {\n    function Transform() {}\n\n    Transform.prototype.calculate = function transformCalculate(\n      subbands,\n      u0,\n      v0\n    ) {\n      var ll = subbands[0];\n      for (var i = 1, ii = subbands.length; i < ii; i++) {\n        ll = this.iterate(ll, subbands[i], u0, v0);\n      }\n      return ll;\n    };\n    Transform.prototype.extend = function extend(buffer, offset, size) {\n      // Section F.3.7 extending... using max extension of 4\n      var i1 = offset - 1,\n        j1 = offset + 1;\n      var i2 = offset + size - 2,\n        j2 = offset + size;\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1] = buffer[j1];\n      buffer[j2] = buffer[i2];\n    };\n    Transform.prototype.iterate = function Transform_iterate(\n      ll,\n      hl_lh_hh,\n      u0,\n      v0\n    ) {\n      var llWidth = ll.width,\n        llHeight = ll.height,\n        llItems = ll.items;\n      var width = hl_lh_hh.width;\n      var height = hl_lh_hh.height;\n      var items = hl_lh_hh.items;\n      var i, j, k, l, u, v;\n\n      // Interleave LL according to Section F.3.3\n      for (k = 0, i = 0; i < llHeight; i++) {\n        l = i * 2 * width;\n        for (j = 0; j < llWidth; j++, k++, l += 2) {\n          items[l] = llItems[k];\n        }\n      }\n      // The LL band is not needed anymore.\n      llItems = ll.items = null;\n\n      var bufferPadding = 4;\n      var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n      // Section F.3.4 HOR_SR\n      if (width === 1) {\n        // if width = 1, when u0 even keep items as is, when odd divide by 2\n        if ((u0 & 1) !== 0) {\n          for (v = 0, k = 0; v < height; v++, k += width) {\n            items[k] *= 0.5;\n          }\n        }\n      } else {\n        for (v = 0, k = 0; v < height; v++, k += width) {\n          rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n          this.extend(rowBuffer, bufferPadding, width);\n          this.filter(rowBuffer, bufferPadding, width);\n\n          items.set(\n            rowBuffer.subarray(bufferPadding, bufferPadding + width),\n            k\n          );\n        }\n      }\n\n      // Accesses to the items array can take long, because it may not fit into\n      // CPU cache and has to be fetched from main memory. Since subsequent\n      // accesses to the items array are not local when reading columns, we\n      // have a cache miss every time. To reduce cache misses, get up to\n      // 'numBuffers' items at a time and store them into the individual\n      // buffers. The colBuffers should be small enough to fit into CPU cache.\n      var numBuffers = 16;\n      var colBuffers = [];\n      for (i = 0; i < numBuffers; i++) {\n        colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n      }\n      var b,\n        currentBuffer = 0;\n      ll = bufferPadding + height;\n\n      // Section F.3.5 VER_SR\n      if (height === 1) {\n        // if height = 1, when v0 even keep items as is, when odd divide by 2\n        if ((v0 & 1) !== 0) {\n          for (u = 0; u < width; u++) {\n            items[u] *= 0.5;\n          }\n        }\n      } else {\n        for (u = 0; u < width; u++) {\n          // if we ran out of buffers, copy several image columns at once\n          if (currentBuffer === 0) {\n            numBuffers = Math.min(width - u, numBuffers);\n            for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                colBuffers[b][l] = items[k + b];\n              }\n            }\n            currentBuffer = numBuffers;\n          }\n\n          currentBuffer--;\n          var buffer = colBuffers[currentBuffer];\n          this.extend(buffer, bufferPadding, height);\n          this.filter(buffer, bufferPadding, height);\n\n          // If this is last buffer in this group of buffers, flush all buffers.\n          if (currentBuffer === 0) {\n            k = u - numBuffers + 1;\n            for (l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                items[k + b] = colBuffers[b][l];\n              }\n            }\n          }\n        }\n      }\n\n      return {\n        width,\n        height,\n        items,\n      };\n    };\n    return Transform;\n  })();\n\n  // Section 3.8.2 Irreversible 9-7 filter\n  var IrreversibleTransform = (function IrreversibleTransformClosure() {\n    function IrreversibleTransform() {\n      Transform.call(this);\n    }\n\n    IrreversibleTransform.prototype = Object.create(Transform.prototype);\n    IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(\n      x,\n      offset,\n      length\n    ) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n, current, next;\n\n      var alpha = -1.586134342059924;\n      var beta = -0.052980118572961;\n      var gamma = 0.882911075530934;\n      var delta = 0.443506852043971;\n      var K = 1.230174104914001;\n      var K_ = 1 / K;\n\n      // step 1 is combined with step 3\n\n      // step 2\n      j = offset - 3;\n      for (n = len + 4; n--; j += 2) {\n        x[j] *= K_;\n      }\n\n      // step 1 & 3\n      j = offset - 2;\n      current = delta * x[j - 1];\n      for (n = len + 3; n--; j += 2) {\n        next = delta * x[j + 1];\n        x[j] = K * x[j] - current - next;\n        if (n--) {\n          j += 2;\n          current = delta * x[j + 1];\n          x[j] = K * x[j] - current - next;\n        } else {\n          break;\n        }\n      }\n\n      // step 4\n      j = offset - 1;\n      current = gamma * x[j - 1];\n      for (n = len + 2; n--; j += 2) {\n        next = gamma * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = gamma * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n\n      // step 5\n      j = offset;\n      current = beta * x[j - 1];\n      for (n = len + 1; n--; j += 2) {\n        next = beta * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = beta * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n\n      // step 6\n      if (len !== 0) {\n        j = offset + 1;\n        current = alpha * x[j - 1];\n        for (n = len; n--; j += 2) {\n          next = alpha * x[j + 1];\n          x[j] -= current + next;\n          if (n--) {\n            j += 2;\n            current = alpha * x[j + 1];\n            x[j] -= current + next;\n          } else {\n            break;\n          }\n        }\n      }\n    };\n\n    return IrreversibleTransform;\n  })();\n\n  // Section 3.8.1 Reversible 5-3 filter\n  var ReversibleTransform = (function ReversibleTransformClosure() {\n    function ReversibleTransform() {\n      Transform.call(this);\n    }\n\n    ReversibleTransform.prototype = Object.create(Transform.prototype);\n    ReversibleTransform.prototype.filter = function reversibleTransformFilter(\n      x,\n      offset,\n      length\n    ) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n;\n\n      for (j = offset, n = len + 1; n--; j += 2) {\n        x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n      }\n\n      for (j = offset + 1, n = len; n--; j += 2) {\n        x[j] += (x[j - 1] + x[j + 1]) >> 1;\n      }\n    };\n\n    return ReversibleTransform;\n  })();\n\n  return JpxImage;\n})();\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FormatError,\n  PasswordException,\n  PasswordResponses,\n  stringToBytes,\n  unreachable,\n  utf8StringToString,\n  warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./stream.js\";\n\nvar ARCFourCipher = (function ARCFourCipherClosure() {\n  function ARCFourCipher(key) {\n    this.a = 0;\n    this.b = 0;\n    var s = new Uint8Array(256);\n    var i,\n      j = 0,\n      tmp,\n      keyLength = key.length;\n    for (i = 0; i < 256; ++i) {\n      s[i] = i;\n    }\n    for (i = 0; i < 256; ++i) {\n      tmp = s[i];\n      j = (j + tmp + key[i % keyLength]) & 0xff;\n      s[i] = s[j];\n      s[j] = tmp;\n    }\n    this.s = s;\n  }\n\n  ARCFourCipher.prototype = {\n    encryptBlock: function ARCFourCipher_encryptBlock(data) {\n      var i,\n        n = data.length,\n        tmp,\n        tmp2;\n      var a = this.a,\n        b = this.b,\n        s = this.s;\n      var output = new Uint8Array(n);\n      for (i = 0; i < n; ++i) {\n        a = (a + 1) & 0xff;\n        tmp = s[a];\n        b = (b + tmp) & 0xff;\n        tmp2 = s[b];\n        s[a] = tmp2;\n        s[b] = tmp;\n        output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n      }\n      this.a = a;\n      this.b = b;\n      return output;\n    },\n  };\n  ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;\n\n  return ARCFourCipher;\n})();\n\nvar calculateMD5 = (function calculateMD5Closure() {\n  // prettier-ignore\n  var r = new Uint8Array([\n    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,\n    5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,\n    4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,\n    6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n\n  // prettier-ignore\n  var k = new Int32Array([\n    -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n    -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n    1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n    643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n    568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n    1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n    -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n    -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n    -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n    -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n    -145523070, -1120210379, 718787259, -343485551]);\n\n  function hash(data, offset, length) {\n    var h0 = 1732584193,\n      h1 = -271733879,\n      h2 = -1732584194,\n      h3 = 271733878;\n    // pre-processing\n    var paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = (length << 3) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    var w = new Int32Array(16);\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j, i += 4) {\n        w[j] =\n          padded[i] |\n          (padded[i + 1] << 8) |\n          (padded[i + 2] << 16) |\n          (padded[i + 3] << 24);\n      }\n      var a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        f,\n        g;\n      for (j = 0; j < 64; ++j) {\n        if (j < 16) {\n          f = (b & c) | (~b & d);\n          g = j;\n        } else if (j < 32) {\n          f = (d & b) | (~d & c);\n          g = (5 * j + 1) & 15;\n        } else if (j < 48) {\n          f = b ^ c ^ d;\n          g = (3 * j + 5) & 15;\n        } else {\n          f = c ^ (b | ~d);\n          g = (7 * j) & 15;\n        }\n        var tmp = d,\n          rotateArg = (a + f + k[j] + w[g]) | 0,\n          rotate = r[j];\n        d = c;\n        c = b;\n        b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n        a = tmp;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\nvar Word64 = (function Word64Closure() {\n  function Word64(highInteger, lowInteger) {\n    this.high = highInteger | 0;\n    this.low = lowInteger | 0;\n  }\n  Word64.prototype = {\n    and: function Word64_and(word) {\n      this.high &= word.high;\n      this.low &= word.low;\n    },\n    xor: function Word64_xor(word) {\n      this.high ^= word.high;\n      this.low ^= word.low;\n    },\n\n    or: function Word64_or(word) {\n      this.high |= word.high;\n      this.low |= word.low;\n    },\n\n    shiftRight: function Word64_shiftRight(places) {\n      if (places >= 32) {\n        this.low = (this.high >>> (places - 32)) | 0;\n        this.high = 0;\n      } else {\n        this.low = (this.low >>> places) | (this.high << (32 - places));\n        this.high = (this.high >>> places) | 0;\n      }\n    },\n\n    shiftLeft: function Word64_shiftLeft(places) {\n      if (places >= 32) {\n        this.high = this.low << (places - 32);\n        this.low = 0;\n      } else {\n        this.high = (this.high << places) | (this.low >>> (32 - places));\n        this.low = this.low << places;\n      }\n    },\n\n    rotateRight: function Word64_rotateRight(places) {\n      var low, high;\n      if (places & 32) {\n        high = this.low;\n        low = this.high;\n      } else {\n        low = this.low;\n        high = this.high;\n      }\n      places &= 31;\n      this.low = (low >>> places) | (high << (32 - places));\n      this.high = (high >>> places) | (low << (32 - places));\n    },\n\n    not: function Word64_not() {\n      this.high = ~this.high;\n      this.low = ~this.low;\n    },\n\n    add: function Word64_add(word) {\n      var lowAdd = (this.low >>> 0) + (word.low >>> 0);\n      var highAdd = (this.high >>> 0) + (word.high >>> 0);\n      if (lowAdd > 0xffffffff) {\n        highAdd += 1;\n      }\n      this.low = lowAdd | 0;\n      this.high = highAdd | 0;\n    },\n\n    copyTo: function Word64_copyTo(bytes, offset) {\n      bytes[offset] = (this.high >>> 24) & 0xff;\n      bytes[offset + 1] = (this.high >> 16) & 0xff;\n      bytes[offset + 2] = (this.high >> 8) & 0xff;\n      bytes[offset + 3] = this.high & 0xff;\n      bytes[offset + 4] = (this.low >>> 24) & 0xff;\n      bytes[offset + 5] = (this.low >> 16) & 0xff;\n      bytes[offset + 6] = (this.low >> 8) & 0xff;\n      bytes[offset + 7] = this.low & 0xff;\n    },\n\n    assign: function Word64_assign(word) {\n      this.high = word.high;\n      this.low = word.low;\n    },\n  };\n  return Word64;\n})();\n\nvar calculateSHA256 = (function calculateSHA256Closure() {\n  function rotr(x, n) {\n    return (x >>> n) | (x << (32 - n));\n  }\n\n  function ch(x, y, z) {\n    return (x & y) ^ (~x & z);\n  }\n\n  function maj(x, y, z) {\n    return (x & y) ^ (x & z) ^ (y & z);\n  }\n\n  function sigma(x) {\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n  }\n\n  function sigmaPrime(x) {\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n  }\n\n  function littleSigma(x) {\n    return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n  }\n\n  function littleSigmaPrime(x) {\n    return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n  }\n\n  // prettier-ignore\n  var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n           0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n           0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n           0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n           0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n           0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n           0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n           0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n           0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n           0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n           0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n           0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n           0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n           0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n           0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n           0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n  function hash(data, offset, length) {\n    // initial hash values\n    var h0 = 0x6a09e667,\n      h1 = 0xbb67ae85,\n      h2 = 0x3c6ef372,\n      h3 = 0xa54ff53a,\n      h4 = 0x510e527f,\n      h5 = 0x9b05688c,\n      h6 = 0x1f83d9ab,\n      h7 = 0x5be0cd19;\n    // pre-processing\n    var paddedLength = Math.ceil((length + 9) / 64) * 64;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n    var w = new Uint32Array(64);\n    // for each 512 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j] =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        i += 4;\n      }\n\n      for (j = 16; j < 64; ++j) {\n        w[j] =\n          (littleSigmaPrime(w[j - 2]) +\n            w[j - 7] +\n            littleSigma(w[j - 15]) +\n            w[j - 16]) |\n          0;\n      }\n      var a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        e = h4,\n        f = h5,\n        g = h6,\n        h = h7,\n        t1,\n        t2;\n      for (j = 0; j < 64; ++j) {\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n        t2 = sigma(a) + maj(a, b, c);\n        h = g;\n        g = f;\n        f = e;\n        e = (d + t1) | 0;\n        d = c;\n        c = b;\n        b = a;\n        a = (t1 + t2) | 0;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n      h4 = (h4 + e) | 0;\n      h5 = (h5 + f) | 0;\n      h6 = (h6 + g) | 0;\n      h7 = (h7 + h) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n      (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n      (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n      (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\n\nvar calculateSHA512 = (function calculateSHA512Closure() {\n  function ch(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.not();\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function maj(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.and(z);\n    result.xor(tmp);\n    tmp.assign(y);\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function sigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(28);\n    tmp.assign(x);\n    tmp.rotateRight(34);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(39);\n    result.xor(tmp);\n  }\n\n  function sigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(14);\n    tmp.assign(x);\n    tmp.rotateRight(18);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(41);\n    result.xor(tmp);\n  }\n\n  function littleSigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(1);\n    tmp.assign(x);\n    tmp.rotateRight(8);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(7);\n    result.xor(tmp);\n  }\n\n  function littleSigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(19);\n    tmp.assign(x);\n    tmp.rotateRight(61);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(6);\n    result.xor(tmp);\n  }\n\n  // prettier-ignore\n  var k = [\n    new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n    new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n    new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n    new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n    new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n    new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n    new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n    new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n    new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n    new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n    new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n    new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n    new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n    new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n    new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n    new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n    new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n    new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n    new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n    new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n    new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n    new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n    new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n    new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n    new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n    new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n    new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n    new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n    new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n    new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n    new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n    new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n    new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n    new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n    new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n    new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n    new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n    new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n    new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n    new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n  function hash(data, offset, length, mode384) {\n    mode384 = !!mode384;\n    // initial hash values\n    var h0, h1, h2, h3, h4, h5, h6, h7;\n    if (!mode384) {\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n      h4 = new Word64(0x510e527f, 0xade682d1);\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\n    } else {\n      // SHA384 is exactly the same\n      // except with different starting values and a trimmed result\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n      h1 = new Word64(0x629a292a, 0x367cd507);\n      h2 = new Word64(0x9159015a, 0x3070dd17);\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\n      h4 = new Word64(0x67332667, 0xffc00b31);\n      h5 = new Word64(0x8eb44a87, 0x68581511);\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n    }\n\n    // pre-processing\n    var paddedLength = Math.ceil((length + 17) / 128) * 128;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 16;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n\n    var w = new Array(80);\n    for (i = 0; i < 80; i++) {\n      w[i] = new Word64(0, 0);\n    }\n    var a = new Word64(0, 0),\n      b = new Word64(0, 0),\n      c = new Word64(0, 0);\n    var d = new Word64(0, 0),\n      e = new Word64(0, 0),\n      f = new Word64(0, 0);\n    var g = new Word64(0, 0),\n      h = new Word64(0, 0);\n    var t1 = new Word64(0, 0),\n      t2 = new Word64(0, 0);\n    var tmp1 = new Word64(0, 0),\n      tmp2 = new Word64(0, 0),\n      tmp3;\n\n    // for each 1024 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j].high =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        w[j].low =\n          (padded[i + 4] << 24) |\n          (padded[i + 5] << 16) |\n          (padded[i + 6] << 8) |\n          padded[i + 7];\n        i += 8;\n      }\n      for (j = 16; j < 80; ++j) {\n        tmp3 = w[j];\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n        tmp3.add(w[j - 7]);\n        littleSigma(tmp1, w[j - 15], tmp2);\n        tmp3.add(tmp1);\n        tmp3.add(w[j - 16]);\n      }\n\n      a.assign(h0);\n      b.assign(h1);\n      c.assign(h2);\n      d.assign(h3);\n      e.assign(h4);\n      f.assign(h5);\n      g.assign(h6);\n      h.assign(h7);\n      for (j = 0; j < 80; ++j) {\n        t1.assign(h);\n        sigmaPrime(tmp1, e, tmp2);\n        t1.add(tmp1);\n        ch(tmp1, e, f, g, tmp2);\n        t1.add(tmp1);\n        t1.add(k[j]);\n        t1.add(w[j]);\n\n        sigma(t2, a, tmp2);\n        maj(tmp1, a, b, c, tmp2);\n        t2.add(tmp1);\n\n        tmp3 = h;\n        h = g;\n        g = f;\n        f = e;\n        d.add(t1);\n        e = d;\n        d = c;\n        c = b;\n        b = a;\n        tmp3.assign(t1);\n        tmp3.add(t2);\n        a = tmp3;\n      }\n      h0.add(a);\n      h1.add(b);\n      h2.add(c);\n      h3.add(d);\n      h4.add(e);\n      h5.add(f);\n      h6.add(g);\n      h7.add(h);\n    }\n\n    var result;\n    if (!mode384) {\n      result = new Uint8Array(64);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n      h6.copyTo(result, 48);\n      h7.copyTo(result, 56);\n    } else {\n      result = new Uint8Array(48);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n    }\n    return result;\n  }\n\n  return hash;\n})();\nvar calculateSHA384 = (function calculateSHA384Closure() {\n  function hash(data, offset, length) {\n    return calculateSHA512(data, offset, length, true);\n  }\n\n  return hash;\n})();\nvar NullCipher = (function NullCipherClosure() {\n  function NullCipher() {}\n\n  NullCipher.prototype = {\n    decryptBlock: function NullCipher_decryptBlock(data) {\n      return data;\n    },\n  };\n\n  return NullCipher;\n})();\n\nclass AESBaseCipher {\n  constructor() {\n    if (this.constructor === AESBaseCipher) {\n      unreachable(\"Cannot initialize AESBaseCipher.\");\n    }\n\n    // prettier-ignore\n    this._s = new Uint8Array([\n      0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n      0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n      0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n      0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n      0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n      0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n      0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n      0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n      0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n      0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n      0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n      0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n      0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n      0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n      0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n      0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n      0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n      0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n      0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n      0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n      0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n      0xb0, 0x54, 0xbb, 0x16,\n    ]);\n\n    // prettier-ignore\n    this._inv_s = new Uint8Array([\n      0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n      0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n      0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n      0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n      0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n      0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n      0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n      0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n      0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n      0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n      0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n      0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n      0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n      0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n      0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n      0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n      0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n      0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n      0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n      0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n      0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n      0x55, 0x21, 0x0c, 0x7d,\n    ]);\n\n    // prettier-ignore\n    this._mix = new Uint32Array([\n      0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n      0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n      0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n      0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n      0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n      0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n      0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n      0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n      0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n      0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n      0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n      0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n      0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n      0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n      0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n      0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n      0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n      0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n      0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n      0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n      0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n      0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n      0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n      0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n      0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n      0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n      0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n      0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n      0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n      0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n      0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n      0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n      0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n      0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n      0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n      0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n      0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n      0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n      0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n      0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n      0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n      0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n      0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n    ]);\n\n    this._mixCol = new Uint8Array(256);\n    for (let i = 0; i < 256; i++) {\n      if (i < 128) {\n        this._mixCol[i] = i << 1;\n      } else {\n        this._mixCol[i] = (i << 1) ^ 0x1b;\n      }\n    }\n\n    this.buffer = new Uint8Array(16);\n    this.bufferPosition = 0;\n  }\n\n  _expandKey(cipherKey) {\n    unreachable(\"Cannot call `_expandKey` on the base class\");\n  }\n\n  _decrypt(input, key) {\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n      // InvShiftRows\n      t = state[13];\n      state[13] = state[9];\n      state[9] = state[5];\n      state[5] = state[1];\n      state[1] = t;\n      t = state[14];\n      u = state[10];\n      state[14] = state[6];\n      state[10] = state[2];\n      state[6] = t;\n      state[2] = u;\n      t = state[15];\n      u = state[11];\n      v = state[7];\n      state[15] = state[3];\n      state[11] = t;\n      state[7] = u;\n      state[3] = v;\n      // InvSubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = this._inv_s[state[j]];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n      // InvMixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = this._mix[state[j]];\n        const s1 = this._mix[state[j + 1]];\n        const s2 = this._mix[state[j + 2]];\n        const s3 = this._mix[state[j + 3]];\n        t =\n          s0 ^\n          (s1 >>> 8) ^\n          (s1 << 24) ^\n          (s2 >>> 16) ^\n          (s2 << 16) ^\n          (s3 >>> 24) ^\n          (s3 << 8);\n        state[j] = (t >>> 24) & 0xff;\n        state[j + 1] = (t >> 16) & 0xff;\n        state[j + 2] = (t >> 8) & 0xff;\n        state[j + 3] = t & 0xff;\n      }\n    }\n    // InvShiftRows\n    t = state[13];\n    state[13] = state[9];\n    state[9] = state[5];\n    state[5] = state[1];\n    state[1] = t;\n    t = state[14];\n    u = state[10];\n    state[14] = state[6];\n    state[10] = state[2];\n    state[6] = t;\n    state[2] = u;\n    t = state[15];\n    u = state[11];\n    v = state[7];\n    state[15] = state[3];\n    state[11] = t;\n    state[7] = u;\n    state[3] = v;\n    for (let j = 0; j < 16; ++j) {\n      // InvSubBytes\n      state[j] = this._inv_s[state[j]];\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n    return state;\n  }\n\n  _encrypt(input, key) {\n    const s = this._s;\n\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    for (let j = 0; j < 16; ++j) {\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n\n    for (let i = 1; i < this._cyclesOfRepetition; i++) {\n      // SubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = s[state[j]];\n      }\n      // ShiftRows\n      v = state[1];\n      state[1] = state[5];\n      state[5] = state[9];\n      state[9] = state[13];\n      state[13] = v;\n      v = state[2];\n      u = state[6];\n      state[2] = state[10];\n      state[6] = state[14];\n      state[10] = v;\n      state[14] = u;\n      v = state[3];\n      u = state[7];\n      t = state[11];\n      state[3] = state[15];\n      state[7] = v;\n      state[11] = u;\n      state[15] = t;\n      // MixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = state[j + 0];\n        const s1 = state[j + 1];\n        const s2 = state[j + 2];\n        const s3 = state[j + 3];\n        t = s0 ^ s1 ^ s2 ^ s3;\n        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n    }\n\n    // SubBytes\n    for (let j = 0; j < 16; ++j) {\n      state[j] = s[state[j]];\n    }\n    // ShiftRows\n    v = state[1];\n    state[1] = state[5];\n    state[5] = state[9];\n    state[9] = state[13];\n    state[13] = v;\n    v = state[2];\n    u = state[6];\n    state[2] = state[10];\n    state[6] = state[14];\n    state[10] = v;\n    state[14] = u;\n    v = state[3];\n    u = state[7];\n    t = state[11];\n    state[3] = state[15];\n    state[7] = v;\n    state[11] = u;\n    state[15] = t;\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    return state;\n  }\n\n  _decryptBlock2(data, finalize) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n    let iv = this.iv;\n\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      // buffer is full, decrypting\n      const plain = this._decrypt(buffer, this._key);\n      // xor-ing the IV vector to get plain text\n      for (let j = 0; j < 16; ++j) {\n        plain[j] ^= iv[j];\n      }\n      iv = buffer;\n      result.push(plain);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    let outputLength = 16 * result.length;\n    if (finalize) {\n      // undo a padding that is described in RFC 2898\n      const lastBlock = result[result.length - 1];\n      let psLen = lastBlock[15];\n      if (psLen <= 16) {\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n          if (lastBlock[i] !== psLen) {\n            // Invalid padding, assume that the block has no padding.\n            psLen = 0;\n            break;\n          }\n        }\n        outputLength -= psLen;\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n      }\n    }\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n\n  decryptBlock(data, finalize, iv = null) {\n    const sourceLength = data.length;\n    const buffer = this.buffer;\n    let bufferLength = this.bufferPosition;\n    // If an IV is not supplied, wait for IV values. They are at the start\n    // of the stream.\n    if (iv) {\n      this.iv = iv;\n    } else {\n      for (\n        let i = 0;\n        bufferLength < 16 && i < sourceLength;\n        ++i, ++bufferLength\n      ) {\n        buffer[bufferLength] = data[i];\n      }\n      if (bufferLength < 16) {\n        // Need more data.\n        this.bufferLength = bufferLength;\n        return new Uint8Array(0);\n      }\n      this.iv = buffer;\n      data = data.subarray(16);\n    }\n    this.buffer = new Uint8Array(16);\n    this.bufferLength = 0;\n    // starting decryption\n    this.decryptBlock = this._decryptBlock2;\n    return this.decryptBlock(data, finalize);\n  }\n\n  encrypt(data, iv) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n\n    if (!iv) {\n      iv = new Uint8Array(16);\n    }\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      for (let j = 0; j < 16; ++j) {\n        buffer[j] ^= iv[j];\n      }\n\n      // buffer is full, encrypting\n      const cipher = this._encrypt(buffer, this._key);\n      iv = cipher;\n      result.push(cipher);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    const outputLength = 16 * result.length;\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 10;\n    this._keySize = 160; // bits\n\n    // prettier-ignore\n    this._rcon = new Uint8Array([\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n      0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n      0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n      0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n      0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n      0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n      0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n      0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n      0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n      0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n      0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n      0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n      0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d,\n    ]);\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 176;\n    const s = this._s;\n    const rcon = this._rcon;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    for (let j = 16, i = 1; j < b; ++i) {\n      // RotWord\n      let t1 = result[j - 3];\n      let t2 = result[j - 2];\n      let t3 = result[j - 1];\n      let t4 = result[j - 4];\n      // SubWord\n      t1 = s[t1];\n      t2 = s[t2];\n      t3 = s[t3];\n      t4 = s[t4];\n      // Rcon\n      t1 = t1 ^ rcon[i];\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 16];\n        j++;\n        result[j] = t2 ^= result[j - 16];\n        j++;\n        result[j] = t3 ^= result[j - 16];\n        j++;\n        result[j] = t4 ^= result[j - 16];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 14;\n    this._keySize = 224; // bits\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 240;\n    const s = this._s;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    let r = 1;\n    let t1, t2, t3, t4;\n    for (let j = 32, i = 1; j < b; ++i) {\n      if (j % 32 === 16) {\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n      } else if (j % 32 === 0) {\n        // RotWord\n        t1 = result[j - 3];\n        t2 = result[j - 2];\n        t3 = result[j - 1];\n        t4 = result[j - 4];\n        // SubWord\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n        // Rcon\n        t1 = t1 ^ r;\n        if ((r <<= 1) >= 256) {\n          r = (r ^ 0x1b) & 0xff;\n        }\n      }\n\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 32];\n        j++;\n        result[j] = t2 ^= result[j - 32];\n        j++;\n        result[j] = t3 ^= result[j - 32];\n        j++;\n        result[j] = t4 ^= result[j - 32];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nvar PDF17 = (function PDF17Closure() {\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  function PDF17() {}\n\n  PDF17.prototype = {\n    checkOwnerPassword: function PDF17_checkOwnerPassword(\n      password,\n      ownerValidationSalt,\n      userBytes,\n      ownerPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF17_checkUserPassword(\n      password,\n      userValidationSalt,\n      userPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF17_getOwnerKey(\n      password,\n      ownerKeySalt,\n      userBytes,\n      ownerEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    },\n    getUserKey: function PDF17_getUserKey(\n      password,\n      userKeySalt,\n      userEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    },\n  };\n  return PDF17;\n})();\n\nvar PDF20 = (function PDF20Closure() {\n  function concatArrays(array1, array2) {\n    var t = new Uint8Array(array1.length + array2.length);\n    t.set(array1, 0);\n    t.set(array2, array1.length);\n    return t;\n  }\n\n  function calculatePDF20Hash(password, input, userBytes) {\n    // This refers to Algorithm 2.B as defined in ISO 32000-2.\n    var k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n    var e = [0];\n    var i = 0;\n    while (i < 64 || e[e.length - 1] > i - 32) {\n      var arrayLength = password.length + k.length + userBytes.length;\n\n      var k1 = new Uint8Array(arrayLength * 64);\n      var array = concatArrays(password, k);\n      array = concatArrays(array, userBytes);\n      for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {\n        k1.set(array, pos);\n      }\n      // AES128 CBC NO PADDING with first 16 bytes of k as the key\n      // and the second 16 as the iv.\n      var cipher = new AES128Cipher(k.subarray(0, 16));\n      e = cipher.encrypt(k1, k.subarray(16, 32));\n      // Now we have to take the first 16 bytes of an unsigned big endian\n      // integer and compute the remainder modulo 3. That is a fairly large\n      // number and JavaScript isn't going to handle that well, so we're using\n      // a trick that allows us to perform modulo math byte by byte.\n      var remainder = 0;\n      for (var z = 0; z < 16; z++) {\n        remainder *= 256 % 3;\n        remainder %= 3;\n        remainder += (e[z] >>> 0) % 3;\n        remainder %= 3;\n      }\n      if (remainder === 0) {\n        k = calculateSHA256(e, 0, e.length);\n      } else if (remainder === 1) {\n        k = calculateSHA384(e, 0, e.length);\n      } else if (remainder === 2) {\n        k = calculateSHA512(e, 0, e.length);\n      }\n      i++;\n    }\n    return k.subarray(0, 32);\n  }\n\n  function PDF20() {}\n\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  PDF20.prototype = {\n    hash: function PDF20_hash(password, concatBytes, userBytes) {\n      return calculatePDF20Hash(password, concatBytes, userBytes);\n    },\n    checkOwnerPassword: function PDF20_checkOwnerPassword(\n      password,\n      ownerValidationSalt,\n      userBytes,\n      ownerPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculatePDF20Hash(password, hashData, userBytes);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF20_checkUserPassword(\n      password,\n      userValidationSalt,\n      userPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculatePDF20Hash(password, hashData, []);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF20_getOwnerKey(\n      password,\n      ownerKeySalt,\n      userBytes,\n      ownerEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculatePDF20Hash(password, hashData, userBytes);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    },\n    getUserKey: function PDF20_getUserKey(\n      password,\n      userKeySalt,\n      userEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      var key = calculatePDF20Hash(password, hashData, []);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    },\n  };\n  return PDF20;\n})();\n\nvar CipherTransform = (function CipherTransformClosure() {\n  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {\n    this.StringCipherConstructor = stringCipherConstructor;\n    this.StreamCipherConstructor = streamCipherConstructor;\n  }\n\n  CipherTransform.prototype = {\n    createStream: function CipherTransform_createStream(stream, length) {\n      var cipher = new this.StreamCipherConstructor();\n      return new DecryptStream(\n        stream,\n        length,\n        function cipherTransformDecryptStream(data, finalize) {\n          return cipher.decryptBlock(data, finalize);\n        }\n      );\n    },\n    decryptString: function CipherTransform_decryptString(s) {\n      var cipher = new this.StringCipherConstructor();\n      var data = stringToBytes(s);\n      data = cipher.decryptBlock(data, true);\n      return bytesToString(data);\n    },\n  };\n  return CipherTransform;\n})();\n\nvar CipherTransformFactory = (function CipherTransformFactoryClosure() {\n  // prettier-ignore\n  var defaultPasswordBytes = new Uint8Array([\n    0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41,\n    0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08,\n    0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80,\n    0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);\n\n  function createEncryptionKey20(\n    revision,\n    password,\n    ownerPassword,\n    ownerValidationSalt,\n    ownerKeySalt,\n    uBytes,\n    userPassword,\n    userValidationSalt,\n    userKeySalt,\n    ownerEncryption,\n    userEncryption,\n    perms\n  ) {\n    if (password) {\n      var passwordLength = Math.min(127, password.length);\n      password = password.subarray(0, passwordLength);\n    } else {\n      password = [];\n    }\n    var pdfAlgorithm;\n    if (revision === 6) {\n      pdfAlgorithm = new PDF20();\n    } else {\n      pdfAlgorithm = new PDF17();\n    }\n\n    if (\n      pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n    ) {\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n    } else if (\n      password.length &&\n      pdfAlgorithm.checkOwnerPassword(\n        password,\n        ownerValidationSalt,\n        uBytes,\n        ownerPassword\n      )\n    ) {\n      return pdfAlgorithm.getOwnerKey(\n        password,\n        ownerKeySalt,\n        uBytes,\n        ownerEncryption\n      );\n    }\n\n    return null;\n  }\n\n  function prepareKeyData(\n    fileId,\n    password,\n    ownerPassword,\n    userPassword,\n    flags,\n    revision,\n    keyLength,\n    encryptMetadata\n  ) {\n    var hashDataSize = 40 + ownerPassword.length + fileId.length;\n    var hashData = new Uint8Array(hashDataSize),\n      i = 0,\n      j,\n      n;\n    if (password) {\n      n = Math.min(32, password.length);\n      for (; i < n; ++i) {\n        hashData[i] = password[i];\n      }\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    // as now the padded password in the hashData[0..i]\n    for (j = 0, n = ownerPassword.length; j < n; ++j) {\n      hashData[i++] = ownerPassword[j];\n    }\n    hashData[i++] = flags & 0xff;\n    hashData[i++] = (flags >> 8) & 0xff;\n    hashData[i++] = (flags >> 16) & 0xff;\n    hashData[i++] = (flags >>> 24) & 0xff;\n    for (j = 0, n = fileId.length; j < n; ++j) {\n      hashData[i++] = fileId[j];\n    }\n    if (revision >= 4 && !encryptMetadata) {\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\n      }\n    }\n    var encryptionKey = hash.subarray(0, keyLengthInBytes);\n    var cipher, checkData;\n\n    if (revision >= 3) {\n      for (i = 0; i < 32; ++i) {\n        hashData[i] = defaultPasswordBytes[i];\n      }\n      for (j = 0, n = fileId.length; j < n; ++j) {\n        hashData[i++] = fileId[j];\n      }\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n      n = encryptionKey.length;\n      var derivedKey = new Uint8Array(n),\n        k;\n      for (j = 1; j <= 19; ++j) {\n        for (k = 0; k < n; ++k) {\n          derivedKey[k] = encryptionKey[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        checkData = cipher.encryptBlock(checkData);\n      }\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    } else {\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(defaultPasswordBytes);\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    }\n    return encryptionKey;\n  }\n\n  function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n    var hashData = new Uint8Array(32),\n      i = 0,\n      j,\n      n;\n    n = Math.min(32, password.length);\n    for (; i < n; ++i) {\n      hashData[i] = password[i];\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, hash.length);\n      }\n    }\n\n    var cipher, userPassword;\n    if (revision >= 3) {\n      userPassword = ownerPassword;\n      var derivedKey = new Uint8Array(keyLengthInBytes),\n        k;\n      for (j = 19; j >= 0; j--) {\n        for (k = 0; k < keyLengthInBytes; ++k) {\n          derivedKey[k] = hash[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        userPassword = cipher.encryptBlock(userPassword);\n      }\n    } else {\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n      userPassword = cipher.encryptBlock(ownerPassword);\n    }\n    return userPassword;\n  }\n\n  var identityName = Name.get(\"Identity\");\n\n  function CipherTransformFactory(dict, fileId, password) {\n    var filter = dict.get(\"Filter\");\n    if (!isName(filter, \"Standard\")) {\n      throw new FormatError(\"unknown encryption method\");\n    }\n    this.dict = dict;\n    var algorithm = dict.get(\"V\");\n    if (\n      !Number.isInteger(algorithm) ||\n      (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5)\n    ) {\n      throw new FormatError(\"unsupported encryption algorithm\");\n    }\n    this.algorithm = algorithm;\n    var keyLength = dict.get(\"Length\");\n    if (!keyLength) {\n      // Spec asks to rely on encryption dictionary's Length entry, however\n      // some PDFs don't have it. Trying to recover.\n      if (algorithm <= 3) {\n        // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n        keyLength = 40;\n      } else {\n        // Trying to find default handler -- it usually has Length.\n        var cfDict = dict.get(\"CF\");\n        var streamCryptoName = dict.get(\"StmF\");\n        if (isDict(cfDict) && isName(streamCryptoName)) {\n          cfDict.suppressEncryption = true; // See comment below.\n          var handlerDict = cfDict.get(streamCryptoName.name);\n          keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n          if (keyLength < 40) {\n            // Sometimes it's incorrect value of bits, generators specify bytes.\n            keyLength <<= 3;\n          }\n        }\n      }\n    }\n    if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n      throw new FormatError(\"invalid key length\");\n    }\n\n    // prepare keys\n    var ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n    var userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n    var flags = dict.get(\"P\");\n    var revision = dict.get(\"R\");\n    // meaningful when V is 4 or 5\n    var encryptMetadata =\n      (algorithm === 4 || algorithm === 5) &&\n      dict.get(\"EncryptMetadata\") !== false;\n    this.encryptMetadata = encryptMetadata;\n\n    var fileIdBytes = stringToBytes(fileId);\n    var passwordBytes;\n    if (password) {\n      if (revision === 6) {\n        try {\n          password = utf8StringToString(password);\n        } catch (ex) {\n          warn(\n            \"CipherTransformFactory: \" +\n              \"Unable to convert UTF8 encoded password.\"\n          );\n        }\n      }\n      passwordBytes = stringToBytes(password);\n    }\n\n    var encryptionKey;\n    if (algorithm !== 5) {\n      encryptionKey = prepareKeyData(\n        fileIdBytes,\n        passwordBytes,\n        ownerPassword,\n        userPassword,\n        flags,\n        revision,\n        keyLength,\n        encryptMetadata\n      );\n    } else {\n      var ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(32, 40);\n      var ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n      var uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n      var userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(32, 40);\n      var userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n      var ownerEncryption = stringToBytes(dict.get(\"OE\"));\n      var userEncryption = stringToBytes(dict.get(\"UE\"));\n      var perms = stringToBytes(dict.get(\"Perms\"));\n      encryptionKey = createEncryptionKey20(\n        revision,\n        passwordBytes,\n        ownerPassword,\n        ownerValidationSalt,\n        ownerKeySalt,\n        uBytes,\n        userPassword,\n        userValidationSalt,\n        userKeySalt,\n        ownerEncryption,\n        userEncryption,\n        perms\n      );\n    }\n    if (!encryptionKey && !password) {\n      throw new PasswordException(\n        \"No password given\",\n        PasswordResponses.NEED_PASSWORD\n      );\n    } else if (!encryptionKey && password) {\n      // Attempting use the password as an owner password\n      var decodedPassword = decodeUserPassword(\n        passwordBytes,\n        ownerPassword,\n        revision,\n        keyLength\n      );\n      encryptionKey = prepareKeyData(\n        fileIdBytes,\n        decodedPassword,\n        ownerPassword,\n        userPassword,\n        flags,\n        revision,\n        keyLength,\n        encryptMetadata\n      );\n    }\n\n    if (!encryptionKey) {\n      throw new PasswordException(\n        \"Incorrect Password\",\n        PasswordResponses.INCORRECT_PASSWORD\n      );\n    }\n\n    this.encryptionKey = encryptionKey;\n\n    if (algorithm >= 4) {\n      var cf = dict.get(\"CF\");\n      if (isDict(cf)) {\n        // The 'CF' dictionary itself should not be encrypted, and by setting\n        // `suppressEncryption` we can prevent an infinite loop inside of\n        // `XRef_fetchUncompressed` if the dictionary contains indirect objects\n        // (fixes issue7665.pdf).\n        cf.suppressEncryption = true;\n      }\n      this.cf = cf;\n      this.stmf = dict.get(\"StmF\") || identityName;\n      this.strf = dict.get(\"StrF\") || identityName;\n      this.eff = dict.get(\"EFF\") || this.stmf;\n    }\n  }\n\n  function buildObjectKey(num, gen, encryptionKey, isAes) {\n    var key = new Uint8Array(encryptionKey.length + 9),\n      i,\n      n;\n    for (i = 0, n = encryptionKey.length; i < n; ++i) {\n      key[i] = encryptionKey[i];\n    }\n    key[i++] = num & 0xff;\n    key[i++] = (num >> 8) & 0xff;\n    key[i++] = (num >> 16) & 0xff;\n    key[i++] = gen & 0xff;\n    key[i++] = (gen >> 8) & 0xff;\n    if (isAes) {\n      key[i++] = 0x73;\n      key[i++] = 0x41;\n      key[i++] = 0x6c;\n      key[i++] = 0x54;\n    }\n    var hash = calculateMD5(key, 0, i);\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n  }\n\n  function buildCipherConstructor(cf, name, num, gen, key) {\n    if (!isName(name)) {\n      throw new FormatError(\"Invalid crypt filter name.\");\n    }\n    var cryptFilter = cf.get(name.name);\n    var cfm;\n    if (cryptFilter !== null && cryptFilter !== undefined) {\n      cfm = cryptFilter.get(\"CFM\");\n    }\n    if (!cfm || cfm.name === \"None\") {\n      return function cipherTransformFactoryBuildCipherConstructorNone() {\n        return new NullCipher();\n      };\n    }\n    if (cfm.name === \"V2\") {\n      return function cipherTransformFactoryBuildCipherConstructorV2() {\n        return new ARCFourCipher(buildObjectKey(num, gen, key, false));\n      };\n    }\n    if (cfm.name === \"AESV2\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n        return new AES128Cipher(buildObjectKey(num, gen, key, true));\n      };\n    }\n    if (cfm.name === \"AESV3\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n        return new AES256Cipher(key);\n      };\n    }\n    throw new FormatError(\"Unknown crypto method\");\n  }\n\n  CipherTransformFactory.prototype = {\n    createCipherTransform: function CipherTransformFactory_createCipherTransform(\n      num,\n      gen\n    ) {\n      if (this.algorithm === 4 || this.algorithm === 5) {\n        return new CipherTransform(\n          buildCipherConstructor(\n            this.cf,\n            this.stmf,\n            num,\n            gen,\n            this.encryptionKey\n          ),\n          buildCipherConstructor(\n            this.cf,\n            this.strf,\n            num,\n            gen,\n            this.encryptionKey\n          )\n        );\n      }\n      // algorithms 1 and 2\n      var key = buildObjectKey(num, gen, this.encryptionKey, false);\n      var cipherConstructor = function buildCipherCipherConstructor() {\n        return new ARCFourCipher(key);\n      };\n      return new CipherTransform(cipherConstructor, cipherConstructor);\n    },\n  };\n\n  return CipherTransformFactory;\n})();\n\nexport {\n  AES128Cipher,\n  AES256Cipher,\n  ARCFourCipher,\n  CipherTransformFactory,\n  PDF17,\n  PDF20,\n  calculateMD5,\n  calculateSHA256,\n  calculateSHA384,\n  calculateSHA512,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  isString,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, isStream } from \"./primitives.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1 * COMPONENTS;\n\n  for (let i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n  for (let i = 0; i < h2; i++) {\n    const py = Math.floor(i * yRatio) * w1Scanline;\n    for (let j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\n\nclass ColorSpace {\n  constructor(name, numComps) {\n    if (this.constructor === ColorSpace) {\n      unreachable(\"Cannot initialize ColorSpace.\");\n    }\n    this.name = name;\n    this.numComps = numComps;\n  }\n\n  /**\n   * Converts the color value to the RGB color. The color components are\n   * located in the src array starting from the srcOffset. Returns the array\n   * of the rgb components, each value ranging from [0,255].\n   */\n  getRgb(src, srcOffset) {\n    const rgb = new Uint8ClampedArray(3);\n    this.getRgbItem(src, srcOffset, rgb, 0);\n    return rgb;\n  }\n\n  /**\n   * Converts the color value to the RGB color, similar to the getRgb method.\n   * The result placed into the dest array starting from the destOffset.\n   */\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    unreachable(\"Should not call ColorSpace.getRgbItem\");\n  }\n\n  /**\n   * Converts the specified number of the color values to the RGB colors.\n   * The colors are located in the src array starting from the srcOffset.\n   * The result is placed into the dest array starting from the destOffset.\n   * The src array items shall be in [0,2^bits) range, the dest array items\n   * will be in [0,255] range. alpha01 indicates how many alpha components\n   * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n   * array).\n   */\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n  }\n\n  /**\n   * Determines the number of bytes required to store the result of the\n   * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n   * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n   */\n  getOutputLength(inputLength, alpha01) {\n    unreachable(\"Should not call ColorSpace.getOutputLength\");\n  }\n\n  /**\n   * Returns true if source data will be equal the result/output data.\n   */\n  isPassthrough(bits) {\n    return false;\n  }\n\n  /**\n   * Refer to the static `ColorSpace.isDefaultDecode` method below.\n   */\n  isDefaultDecode(decodeMap, bpc) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n\n  /**\n   * Fills in the RGB colors in the destination buffer.  alpha01 indicates\n   * how many alpha components there are in the dest array; it will be either\n   * 0 (RGB array) or 1 (RGBA array).\n   */\n  fillRgb(\n    dest,\n    originalWidth,\n    originalHeight,\n    width,\n    height,\n    actualHeight,\n    bpc,\n    comps,\n    alpha01\n  ) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n      );\n    }\n    const count = originalWidth * originalHeight;\n    let rgbBuf = null;\n    const numComponentColors = 1 << bpc;\n    const needsResizing = originalHeight !== height || originalWidth !== width;\n\n    if (this.isPassthrough(bpc)) {\n      rgbBuf = comps;\n    } else if (\n      this.numComps === 1 &&\n      count > numComponentColors &&\n      this.name !== \"DeviceGray\" &&\n      this.name !== \"DeviceRGB\"\n    ) {\n      // Optimization: create a color map when there is just one component and\n      // we are converting more colors than the size of the color map. We\n      // don't build the map if the colorspace is gray or rgb since those\n      // methods are faster than building a map. This mainly offers big speed\n      // ups for indexed and alternate colorspaces.\n      //\n      // TODO it may be worth while to cache the color map. While running\n      // testing I never hit a cache so I will leave that out for now (perhaps\n      // we are reparsing colorspaces too much?).\n      const allColors =\n        bpc <= 8\n          ? new Uint8Array(numComponentColors)\n          : new Uint16Array(numComponentColors);\n      for (let i = 0; i < numComponentColors; i++) {\n        allColors[i] = i;\n      }\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n      this.getRgbBuffer(\n        allColors,\n        0,\n        numComponentColors,\n        colorMap,\n        0,\n        bpc,\n        /* alpha01 = */ 0\n      );\n\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        let destPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          dest[destPos++] = colorMap[key];\n          dest[destPos++] = colorMap[key + 1];\n          dest[destPos++] = colorMap[key + 2];\n          destPos += alpha01;\n        }\n      } else {\n        rgbBuf = new Uint8Array(count * 3);\n        let rgbPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          rgbBuf[rgbPos++] = colorMap[key];\n          rgbBuf[rgbPos++] = colorMap[key + 1];\n          rgbBuf[rgbPos++] = colorMap[key + 2];\n        }\n      }\n    } else {\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        this.getRgbBuffer(\n          comps,\n          0,\n          width * actualHeight,\n          dest,\n          0,\n          bpc,\n          alpha01\n        );\n      } else {\n        rgbBuf = new Uint8ClampedArray(count * 3);\n        this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n      }\n    }\n\n    if (rgbBuf) {\n      if (needsResizing) {\n        resizeRgbImage(\n          rgbBuf,\n          dest,\n          originalWidth,\n          originalHeight,\n          width,\n          height,\n          alpha01\n        );\n      } else {\n        let destPos = 0,\n          rgbPos = 0;\n        for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          destPos += alpha01;\n        }\n      }\n    }\n  }\n\n  /**\n   * True if the colorspace has components in the default range of [0, 1].\n   * This should be true for all colorspaces except for lab color spaces\n   * which are [0,100], [-128, 127], [-128, 127].\n   */\n  get usesZeroToOneRange() {\n    return shadow(this, \"usesZeroToOneRange\", true);\n  }\n\n  static parse(cs, xref, res, pdfFunctionFactory) {\n    const IR = this.parseToIR(cs, xref, res, pdfFunctionFactory);\n    return this.fromIR(IR);\n  }\n\n  static fromIR(IR) {\n    const name = Array.isArray(IR) ? IR[0] : IR;\n    let whitePoint, blackPoint, gamma;\n\n    switch (name) {\n      case \"DeviceGrayCS\":\n        return this.singletons.gray;\n      case \"DeviceRgbCS\":\n        return this.singletons.rgb;\n      case \"DeviceCmykCS\":\n        return this.singletons.cmyk;\n      case \"CalGrayCS\":\n        whitePoint = IR[1];\n        blackPoint = IR[2];\n        gamma = IR[3];\n        return new CalGrayCS(whitePoint, blackPoint, gamma);\n      case \"CalRGBCS\":\n        whitePoint = IR[1];\n        blackPoint = IR[2];\n        gamma = IR[3];\n        const matrix = IR[4];\n        return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n      case \"PatternCS\":\n        let basePatternCS = IR[1];\n        if (basePatternCS) {\n          basePatternCS = this.fromIR(basePatternCS);\n        }\n        return new PatternCS(basePatternCS);\n      case \"IndexedCS\":\n        const baseIndexedCS = IR[1];\n        const hiVal = IR[2];\n        const lookup = IR[3];\n        return new IndexedCS(this.fromIR(baseIndexedCS), hiVal, lookup);\n      case \"AlternateCS\":\n        const numComps = IR[1];\n        const alt = IR[2];\n        const tintFn = IR[3];\n        return new AlternateCS(numComps, this.fromIR(alt), tintFn);\n      case \"LabCS\":\n        whitePoint = IR[1];\n        blackPoint = IR[2];\n        const range = IR[3];\n        return new LabCS(whitePoint, blackPoint, range);\n      default:\n        throw new FormatError(`Unknown colorspace name: ${name}`);\n    }\n  }\n\n  static parseToIR(cs, xref, res = null, pdfFunctionFactory) {\n    cs = xref.fetchIfRef(cs);\n    if (isName(cs)) {\n      switch (cs.name) {\n        case \"DeviceGray\":\n        case \"G\":\n          return \"DeviceGrayCS\";\n        case \"DeviceRGB\":\n        case \"RGB\":\n          return \"DeviceRgbCS\";\n        case \"DeviceCMYK\":\n        case \"CMYK\":\n          return \"DeviceCmykCS\";\n        case \"Pattern\":\n          return [\"PatternCS\", null];\n        default:\n          if (isDict(res)) {\n            const colorSpaces = res.get(\"ColorSpace\");\n            if (isDict(colorSpaces)) {\n              const resCS = colorSpaces.get(cs.name);\n              if (resCS) {\n                if (isName(resCS)) {\n                  return this.parseToIR(resCS, xref, res, pdfFunctionFactory);\n                }\n                cs = resCS;\n                break;\n              }\n            }\n          }\n          throw new FormatError(`unrecognized colorspace ${cs.name}`);\n      }\n    }\n    if (Array.isArray(cs)) {\n      const mode = xref.fetchIfRef(cs[0]).name;\n      let numComps, params, alt, whitePoint, blackPoint, gamma;\n\n      switch (mode) {\n        case \"DeviceGray\":\n        case \"G\":\n          return \"DeviceGrayCS\";\n        case \"DeviceRGB\":\n        case \"RGB\":\n          return \"DeviceRgbCS\";\n        case \"DeviceCMYK\":\n        case \"CMYK\":\n          return \"DeviceCmykCS\";\n        case \"CalGray\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.get(\"Gamma\");\n          return [\"CalGrayCS\", whitePoint, blackPoint, gamma];\n        case \"CalRGB\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.getArray(\"Gamma\");\n          const matrix = params.getArray(\"Matrix\");\n          return [\"CalRGBCS\", whitePoint, blackPoint, gamma, matrix];\n        case \"ICCBased\":\n          const stream = xref.fetchIfRef(cs[1]);\n          const dict = stream.dict;\n          numComps = dict.get(\"N\");\n          alt = dict.get(\"Alternate\");\n          if (alt) {\n            const altIR = this.parseToIR(alt, xref, res, pdfFunctionFactory);\n            // Parse the /Alternate CS to ensure that the number of components\n            // are correct, and also (indirectly) that it is not a PatternCS.\n            const altCS = this.fromIR(altIR, pdfFunctionFactory);\n            if (altCS.numComps === numComps) {\n              return altIR;\n            }\n            warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n          }\n          if (numComps === 1) {\n            return \"DeviceGrayCS\";\n          } else if (numComps === 3) {\n            return \"DeviceRgbCS\";\n          } else if (numComps === 4) {\n            return \"DeviceCmykCS\";\n          }\n          break;\n        case \"Pattern\":\n          let basePatternCS = cs[1] || null;\n          if (basePatternCS) {\n            basePatternCS = this.parseToIR(\n              basePatternCS,\n              xref,\n              res,\n              pdfFunctionFactory\n            );\n          }\n          return [\"PatternCS\", basePatternCS];\n        case \"Indexed\":\n        case \"I\":\n          const baseIndexedCS = this.parseToIR(\n            cs[1],\n            xref,\n            res,\n            pdfFunctionFactory\n          );\n          const hiVal = xref.fetchIfRef(cs[2]) + 1;\n          let lookup = xref.fetchIfRef(cs[3]);\n          if (isStream(lookup)) {\n            lookup = lookup.getBytes();\n          }\n          return [\"IndexedCS\", baseIndexedCS, hiVal, lookup];\n        case \"Separation\":\n        case \"DeviceN\":\n          const name = xref.fetchIfRef(cs[1]);\n          numComps = Array.isArray(name) ? name.length : 1;\n          alt = this.parseToIR(cs[2], xref, res, pdfFunctionFactory);\n          const tintFn = pdfFunctionFactory.create(xref.fetchIfRef(cs[3]));\n          return [\"AlternateCS\", numComps, alt, tintFn];\n        case \"Lab\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          const range = params.getArray(\"Range\");\n          return [\"LabCS\", whitePoint, blackPoint, range];\n        default:\n          throw new FormatError(`unimplemented color space object \"${mode}\"`);\n      }\n    }\n    throw new FormatError(`unrecognized color space object: \"${cs}\"`);\n  }\n\n  /**\n   * Checks if a decode map matches the default decode map for a color space.\n   * This handles the general decode maps where there are two values per\n   * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n   * This does not handle Lab, Indexed, or Pattern decode maps since they are\n   * slightly different.\n   * @param {Array} decode - Decode map (usually from an image).\n   * @param {number} numComps - Number of components the color space has.\n   */\n  static isDefaultDecode(decode, numComps) {\n    if (!Array.isArray(decode)) {\n      return true;\n    }\n    if (numComps * 2 !== decode.length) {\n      warn(\"The decode map is not the correct length\");\n      return true;\n    }\n    for (let i = 0, ii = decode.length; i < ii; i += 2) {\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  static get singletons() {\n    return shadow(this, \"singletons\", {\n      get gray() {\n        return shadow(this, \"gray\", new DeviceGrayCS());\n      },\n      get rgb() {\n        return shadow(this, \"rgb\", new DeviceRgbCS());\n      },\n      get cmyk() {\n        return shadow(this, \"cmyk\", new DeviceCmykCS());\n      },\n    });\n  }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces.  A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n  constructor(numComps, base, tintFn) {\n    super(\"Alternate\", numComps);\n    this.base = base;\n    this.tintFn = tintFn;\n    this.tmpBuf = new Float32Array(base.numComps);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const tmpBuf = this.tmpBuf;\n    this.tintFn(src, srcOffset, tmpBuf, 0);\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const tintFn = this.tintFn;\n    const base = this.base;\n    const scale = 1 / ((1 << bits) - 1);\n    const baseNumComps = base.numComps;\n    const usesZeroToOneRange = base.usesZeroToOneRange;\n    const isPassthrough =\n      (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n    let pos = isPassthrough ? destOffset : 0;\n    const baseBuf = isPassthrough\n      ? dest\n      : new Uint8ClampedArray(baseNumComps * count);\n    const numComps = this.numComps;\n\n    const scaled = new Float32Array(numComps);\n    const tinted = new Float32Array(baseNumComps);\n    let i, j;\n\n    for (i = 0; i < count; i++) {\n      for (j = 0; j < numComps; j++) {\n        scaled[j] = src[srcOffset++] * scale;\n      }\n      tintFn(scaled, 0, tinted, 0);\n      if (usesZeroToOneRange) {\n        for (j = 0; j < baseNumComps; j++) {\n          baseBuf[pos++] = tinted[j] * 255;\n        }\n      } else {\n        base.getRgbItem(tinted, 0, baseBuf, pos);\n        pos += baseNumComps;\n      }\n    }\n\n    if (!isPassthrough) {\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(\n      (inputLength * this.base.numComps) / this.numComps,\n      alpha01\n    );\n  }\n}\n\nclass PatternCS extends ColorSpace {\n  constructor(baseCS) {\n    super(\"Pattern\", null);\n    this.base = baseCS;\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    unreachable(\"Should not call PatternCS.isDefaultDecode\");\n  }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n  constructor(base, highVal, lookup) {\n    super(\"Indexed\", 1);\n    this.base = base;\n    this.highVal = highVal;\n\n    const baseNumComps = base.numComps;\n    const length = baseNumComps * highVal;\n\n    if (isStream(lookup)) {\n      this.lookup = new Uint8Array(length);\n      const bytes = lookup.getBytes(length);\n      this.lookup.set(bytes);\n    } else if (isString(lookup)) {\n      this.lookup = new Uint8Array(length);\n      for (let i = 0; i < length; ++i) {\n        this.lookup[i] = lookup.charCodeAt(i);\n      }\n    } else if (lookup instanceof Uint8Array) {\n      this.lookup = lookup;\n    } else {\n      throw new FormatError(`Unrecognized lookup table: ${lookup}`);\n    }\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const numComps = this.base.numComps;\n    const start = src[srcOffset] * numComps;\n    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const base = this.base;\n    const numComps = base.numComps;\n    const outputDelta = base.getOutputLength(numComps, alpha01);\n    const lookup = this.lookup;\n\n    for (let i = 0; i < count; ++i) {\n      const lookupPos = src[srcOffset++] * numComps;\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n      destOffset += outputDelta;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    if (!Array.isArray(decodeMap)) {\n      return true;\n    }\n    if (decodeMap.length !== 2) {\n      warn(\"Decode map length is not correct\");\n      return true;\n    }\n    if (!Number.isInteger(bpc) || bpc < 1) {\n      warn(\"Bits per component is not correct\");\n      return true;\n    }\n    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceGray\", 1);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const c = src[srcOffset] * 255;\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      const c = scale * src[j++];\n      dest[q++] = c;\n      dest[q++] = c;\n      dest[q++] = c;\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGB\", 3);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    dest[destOffset] = src[srcOffset] * 255;\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    if (bits === 8 && alpha01 === 0) {\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n      return;\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength * (3 + alpha01)) / 3) | 0;\n  }\n\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n  // The coefficients below was found using numerical analysis: the method of\n  // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n  // where color_value is the tabular value from the table of sampled RGB colors\n  // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n  // CMYK color conversion using the estimation below:\n  //   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n    const c = src[srcOffset] * srcScale;\n    const m = src[srcOffset + 1] * srcScale;\n    const y = src[srcOffset + 2] * srcScale;\n    const k = src[srcOffset + 3] * srcScale;\n\n    dest[destOffset] =\n      255 +\n      c *\n        (-4.387332384609988 * c +\n          54.48615194189176 * m +\n          18.82290502165302 * y +\n          212.25662451639585 * k +\n          -285.2331026137004) +\n      m *\n        (1.7149763477362134 * m -\n          5.6096736904047315 * y +\n          -17.873870861415444 * k -\n          5.497006427196366) +\n      y *\n        (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n      k * (-21.86122147463605 * k - 189.48180835922747);\n\n    dest[destOffset + 1] =\n      255 +\n      c *\n        (8.841041422036149 * c +\n          60.118027045597366 * m +\n          6.871425592049007 * y +\n          31.159100130055922 * k +\n          -79.2970844816548) +\n      m *\n        (-15.310361306967817 * m +\n          17.575251261109482 * y +\n          131.35250912493976 * k -\n          190.9453302588951) +\n      y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n      k * (-20.737325471181034 * k - 187.80453709719578);\n\n    dest[destOffset + 2] =\n      255 +\n      c *\n        (0.8842522430003296 * c +\n          8.078677503112928 * m +\n          30.89978309703729 * y -\n          0.23883238689178934 * k +\n          -14.183576799673286) +\n      m *\n        (10.49593273432072 * m +\n          63.02378494754052 * y +\n          50.606957656360734 * k -\n          112.23884253719248) +\n      y *\n        (0.03296041114873217 * y +\n          115.60384449646641 * k +\n          -193.58209356861505) +\n      k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n\n  class DeviceCmykCS extends ColorSpace {\n    constructor() {\n      super(\"DeviceCMYK\", 4);\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(src, srcOffset, 1, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n      for (let i = 0; i < count; i++) {\n        convertToRgb(src, srcOffset, scale, dest, destOffset);\n        srcOffset += 4;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength / 4) * (3 + alpha01)) | 0;\n    }\n  }\n  return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A represents a gray component of a calibrated gray space.\n    // A <---> AG in the spec\n    const A = src[srcOffset] * scale;\n    const AG = A ** cs.G;\n\n    // Computes L as per spec. ( = cs.YW * AG )\n    // Except if other than default BlackPoint values are used.\n    const L = cs.YW * AG;\n    // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n    // Convert values to rgb range [0, 255].\n    const val = Math.max(295.8 * L ** 0.333333333333333333 - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n\n  class CalGrayCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma) {\n      super(\"CalGray\", 1);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalGray\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      gamma = gamma || 1;\n\n      // Translate arguments to spec variables.\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      this.G = gamma;\n\n      // Validate variables as per spec.\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n        warn(\n          `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n            `ZB: ${this.ZB}, only default values are supported.`\n        );\n      }\n\n      if (this.G < 1) {\n        info(\n          `Invalid Gamma: ${this.G} for ${this.name}, ` +\n            \"falling back to default.\"\n        );\n        this.G = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 1;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01);\n    }\n  }\n  return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n  // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n  // matrices.\n  // prettier-ignore\n  const BRADFORD_SCALE_MATRIX = new Float32Array([\n    0.8951, 0.2664, -0.1614,\n    -0.7502, 1.7135, 0.0367,\n    0.0389, -0.0685, 1.0296]);\n\n  // prettier-ignore\n  const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n    0.9869929, -0.1470543, 0.1599627,\n    0.4323053, 0.5183603, 0.0492912,\n    -0.0085287, 0.0400428, 0.9684867]);\n\n  // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n  // prettier-ignore\n  const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n    3.2404542, -1.5371385, -0.4985314,\n    -0.9692660, 1.8760108, 0.0415560,\n    0.0556434, -0.2040259, 1.0572252]);\n\n  const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n  const tempNormalizeMatrix = new Float32Array(3);\n  const tempConvertMatrix1 = new Float32Array(3);\n  const tempConvertMatrix2 = new Float32Array(3);\n\n  const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n  function matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n\n  function convertToFlat(sourceWhitePoint, LMS, result) {\n    result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n  }\n\n  function convertToD65(sourceWhitePoint, LMS, result) {\n    const D65X = 0.95047;\n    const D65Y = 1;\n    const D65Z = 1.08883;\n\n    result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n  }\n\n  function sRGBTransferFunction(color) {\n    // See http://en.wikipedia.org/wiki/SRGB.\n    if (color <= 0.0031308) {\n      return adjustToRange(0, 1, 12.92 * color);\n    }\n    return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n  }\n\n  function adjustToRange(min, max, value) {\n    return Math.max(min, Math.min(max, value));\n  }\n\n  function decodeL(L) {\n    if (L < 0) {\n      return -decodeL(-L);\n    }\n    if (L > 8.0) {\n      return ((L + 16) / 116) ** 3;\n    }\n    return L * DECODE_L_CONSTANT;\n  }\n\n  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    // In case the blackPoint is already the default blackPoint then there is\n    // no need to do compensation.\n    if (\n      sourceBlackPoint[0] === 0 &&\n      sourceBlackPoint[1] === 0 &&\n      sourceBlackPoint[2] === 0\n    ) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n\n    // For the blackPoint calculation details, please see\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    // The destination blackPoint is the default blackPoint [0, 0, 0].\n    const zeroDecodeL = decodeL(0);\n\n    const X_DST = zeroDecodeL;\n    const X_SRC = decodeL(sourceBlackPoint[0]);\n\n    const Y_DST = zeroDecodeL;\n    const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n    const Z_DST = zeroDecodeL;\n    const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n    const X_Scale = (1 - X_DST) / (1 - X_SRC);\n    const X_Offset = 1 - X_Scale;\n\n    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    const Y_Offset = 1 - Y_Scale;\n\n    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    const Z_Offset = 1 - Z_Scale;\n\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n\n  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    // In case the whitePoint is already flat then there is no need to do\n    // normalization.\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_Flat = tempNormalizeMatrix;\n    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n  }\n\n  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_D65 = tempNormalizeMatrix;\n    convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n  }\n\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A, B and C represent a red, green and blue components of a calibrated\n    // rgb space.\n    const A = adjustToRange(0, 1, src[srcOffset] * scale);\n    const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n    const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n    // A <---> AGR in the spec\n    // B <---> BGG in the spec\n    // C <---> CGB in the spec\n    const AGR = A ** cs.GR;\n    const BGG = B ** cs.GG;\n    const CGB = C ** cs.GB;\n\n    // Computes intermediate variables L, M, N as per spec.\n    // To decode X, Y, Z values map L, M, N directly to them.\n    const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n    const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n    const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n    // The following calculations are based on this document:\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    const XYZ = tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    const XYZ_Flat = tempConvertMatrix2;\n\n    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n    const XYZ_Black = tempConvertMatrix1;\n    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n    const XYZ_D65 = tempConvertMatrix2;\n    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n    const SRGB = tempConvertMatrix1;\n    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n    // Convert the values to rgb range [0, 255].\n    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n  }\n\n  class CalRGBCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma, matrix) {\n      super(\"CalRGB\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalRGB\"\n        );\n      }\n      blackPoint = blackPoint || new Float32Array(3);\n      gamma = gamma || new Float32Array([1, 1, 1]);\n      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n      // Translate arguments to spec variables.\n      const XW = whitePoint[0];\n      const YW = whitePoint[1];\n      const ZW = whitePoint[2];\n      this.whitePoint = whitePoint;\n\n      const XB = blackPoint[0];\n      const YB = blackPoint[1];\n      const ZB = blackPoint[2];\n      this.blackPoint = blackPoint;\n\n      this.GR = gamma[0];\n      this.GG = gamma[1];\n      this.GB = gamma[2];\n\n      this.MXA = matrix[0];\n      this.MYA = matrix[1];\n      this.MZA = matrix[2];\n      this.MXB = matrix[3];\n      this.MYB = matrix[4];\n      this.MZB = matrix[5];\n      this.MXC = matrix[6];\n      this.MYC = matrix[7];\n      this.MZC = matrix[8];\n\n      // Validate variables as per spec.\n      if (XW < 0 || ZW < 0 || YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (XB < 0 || YB < 0 || ZB < 0) {\n        info(\n          `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n            \"falling back to default.\"\n        );\n        this.blackPoint = new Float32Array(3);\n      }\n\n      if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n        info(\n          `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n            `${this.name}, falling back to default.`\n        );\n        this.GR = this.GG = this.GB = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n  }\n  return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n  // Function g(x) from spec\n  function fn_g(x) {\n    let result;\n    if (x >= 6 / 29) {\n      result = x * x * x;\n    } else {\n      result = (108 / 841) * (x - 4 / 29);\n    }\n    return result;\n  }\n\n  function decode(value, high1, low2, high2) {\n    return low2 + (value * (high2 - low2)) / high1;\n  }\n\n  // If decoding is needed maxVal should be 2^bits per component - 1.\n  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n    // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n    // not the usual [0, 1]. If a command like setFillColor is used the src\n    // values will already be within the correct range. However, if we are\n    // converting an image we have to map the values to the correct range given\n    // above.\n    // Ls,as,bs <---> L*,a*,b* in the spec\n    let Ls = src[srcOffset];\n    let as = src[srcOffset + 1];\n    let bs = src[srcOffset + 2];\n    if (maxVal !== false) {\n      Ls = decode(Ls, maxVal, 0, 100);\n      as = decode(as, maxVal, cs.amin, cs.amax);\n      bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n    }\n\n    // Adjust limits of 'as' and 'bs'\n    if (as > cs.amax) {\n      as = cs.amax;\n    } else if (as < cs.amin) {\n      as = cs.amin;\n    }\n    if (bs > cs.bmax) {\n      bs = cs.bmax;\n    } else if (bs < cs.bmin) {\n      bs = cs.bmin;\n    }\n\n    // Computes intermediate variables X,Y,Z as per spec\n    const M = (Ls + 16) / 116;\n    const L = M + as / 500;\n    const N = M - bs / 200;\n\n    const X = cs.XW * fn_g(L);\n    const Y = cs.YW * fn_g(M);\n    const Z = cs.ZW * fn_g(N);\n\n    let r, g, b;\n    // Using different conversions for D50 and D65 white points,\n    // per http://www.color.org/srgb.pdf\n    if (cs.ZW < 1) {\n      // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n    } else {\n      // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n    }\n    // Convert the color values to the [0,255] range (clamping is automatic).\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n\n  class LabCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, range) {\n      super(\"Lab\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space Lab\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      range = range || [-100, 100, -100, 100];\n\n      // Translate args to spec variables\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n      this.amin = range[0];\n      this.amax = range[1];\n      this.bmin = range[2];\n      this.bmax = range[3];\n\n      // These are here just for completeness - the spec doesn't offer any\n      // formulas that use BlackPoint in Lab\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      // Validate vars as per spec\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          \"Invalid WhitePoint components, no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(\"Invalid BlackPoint, falling back to default\");\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.amin > this.amax || this.bmin > this.bmax) {\n        info(\"Invalid Range, falling back to defaults\");\n        this.amin = -100;\n        this.amax = 100;\n        this.bmin = -100;\n        this.bmax = 100;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, false, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const maxVal = (1 << bits) - 1;\n      for (let i = 0; i < count; i++) {\n        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n\n    isDefaultDecode(decodeMap, bpc) {\n      // XXX: Decoding is handled with the lab conversion because of the strange\n      // ranges that are used.\n      return true;\n    }\n\n    get usesZeroToOneRange() {\n      return shadow(this, \"usesZeroToOneRange\", false);\n    }\n  }\n  return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  isString,\n  OPS,\n  stringToBytes,\n  stringToPDFString,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { Catalog, FileSpec, ObjectLoader } from \"./obj.js\";\nimport { Dict, isDict, isName, isRef, isStream } from \"./primitives.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { getInheritableProperty } from \"./core_utils.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { Stream } from \"./stream.js\";\n\nclass AnnotationFactory {\n  /**\n   * Create an `Annotation` object of the correct type for the given reference\n   * to an annotation dictionary. This yields a promise that is resolved when\n   * the `Annotation` object is constructed.\n   *\n   * @param {XRef} xref\n   * @param {Object} ref\n   * @param {PDFManager} pdfManager\n   * @param {Object} idFactory\n   * @returns {Promise} A promise that is resolved with an {Annotation}\n   *   instance.\n   */\n  static create(xref, ref, pdfManager, idFactory) {\n    return pdfManager.ensure(this, \"_create\", [\n      xref,\n      ref,\n      pdfManager,\n      idFactory,\n    ]);\n  }\n\n  /**\n   * @private\n   */\n  static _create(xref, ref, pdfManager, idFactory) {\n    const dict = xref.fetchIfRef(ref);\n    if (!isDict(dict)) {\n      return undefined;\n    }\n    const id = isRef(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n    // Determine the annotation's subtype.\n    let subtype = dict.get(\"Subtype\");\n    subtype = isName(subtype) ? subtype.name : null;\n\n    // Return the right annotation object based on the subtype and field type.\n    const parameters = {\n      xref,\n      dict,\n      subtype,\n      id,\n      pdfManager,\n    };\n\n    switch (subtype) {\n      case \"Link\":\n        return new LinkAnnotation(parameters);\n\n      case \"Text\":\n        return new TextAnnotation(parameters);\n\n      case \"Widget\":\n        let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n        fieldType = isName(fieldType) ? fieldType.name : null;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotation(parameters);\n          case \"Btn\":\n            return new ButtonWidgetAnnotation(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotation(parameters);\n        }\n        warn(\n          'Unimplemented widget field type \"' +\n            fieldType +\n            '\", ' +\n            \"falling back to base field type.\"\n        );\n        return new WidgetAnnotation(parameters);\n\n      case \"Popup\":\n        return new PopupAnnotation(parameters);\n\n      case \"FreeText\":\n        return new FreeTextAnnotation(parameters);\n\n      case \"Line\":\n        return new LineAnnotation(parameters);\n\n      case \"Square\":\n        return new SquareAnnotation(parameters);\n\n      case \"Circle\":\n        return new CircleAnnotation(parameters);\n\n      case \"PolyLine\":\n        return new PolylineAnnotation(parameters);\n\n      case \"Polygon\":\n        return new PolygonAnnotation(parameters);\n\n      case \"Caret\":\n        return new CaretAnnotation(parameters);\n\n      case \"Ink\":\n        return new InkAnnotation(parameters);\n\n      case \"Highlight\":\n        return new HighlightAnnotation(parameters);\n\n      case \"Underline\":\n        return new UnderlineAnnotation(parameters);\n\n      case \"Squiggly\":\n        return new SquigglyAnnotation(parameters);\n\n      case \"StrikeOut\":\n        return new StrikeOutAnnotation(parameters);\n\n      case \"Stamp\":\n        return new StampAnnotation(parameters);\n\n      case \"FileAttachment\":\n        return new FileAttachmentAnnotation(parameters);\n\n      default:\n        if (!subtype) {\n          warn(\"Annotation is missing the required /Subtype.\");\n        } else {\n          warn(\n            'Unimplemented annotation type \"' +\n              subtype +\n              '\", ' +\n              \"falling back to base annotation.\"\n          );\n        }\n        return new Annotation(parameters);\n    }\n  }\n}\n\nfunction getQuadPoints(dict, rect) {\n  if (!dict.has(\"QuadPoints\")) {\n    return null;\n  }\n\n  // The region is described as a number of quadrilaterals.\n  // Each quadrilateral must consist of eight coordinates.\n  const quadPoints = dict.getArray(\"QuadPoints\");\n  if (!Array.isArray(quadPoints) || quadPoints.length % 8 > 0) {\n    return null;\n  }\n\n  const quadPointsLists = [];\n  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n    // Each series of eight numbers represents the coordinates for one\n    // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n    // Convert this to an array of objects with x and y coordinates.\n    quadPointsLists.push([]);\n    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n      const x = quadPoints[j];\n      const y = quadPoints[j + 1];\n\n      // The quadpoints should be ignored if any coordinate in the array\n      // lies outside the region specified by the rectangle.\n      if (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3]) {\n        return null;\n      }\n      quadPointsLists[i].push({ x, y });\n    }\n  }\n  return quadPointsLists;\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n  // 12.5.5: Algorithm: Appearance streams\n  const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n    bbox,\n    matrix\n  );\n  if (minX === maxX || minY === maxY) {\n    // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n    // just apply the transform for rect\n    return [1, 0, 0, 1, rect[0], rect[1]];\n  }\n\n  const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n  const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n  return [\n    xRatio,\n    0,\n    0,\n    yRatio,\n    rect[0] - minX * xRatio,\n    rect[1] - minY * yRatio,\n  ];\n}\n\nclass Annotation {\n  constructor(params) {\n    const dict = params.dict;\n\n    this.setContents(dict.get(\"Contents\"));\n    this.setModificationDate(dict.get(\"M\"));\n    this.setFlags(dict.get(\"F\"));\n    this.setRectangle(dict.getArray(\"Rect\"));\n    this.setColor(dict.getArray(\"C\"));\n    this.setBorderStyle(dict);\n    this.setAppearance(dict);\n\n    // Expose public properties using a data object.\n    this.data = {\n      annotationFlags: this.flags,\n      borderStyle: this.borderStyle,\n      color: this.color,\n      contents: this.contents,\n      hasAppearance: !!this.appearance,\n      id: params.id,\n      modificationDate: this.modificationDate,\n      rect: this.rectangle,\n      subtype: params.subtype,\n    };\n  }\n\n  /**\n   * @private\n   */\n  _hasFlag(flags, flag) {\n    return !!(flags & flag);\n  }\n\n  /**\n   * @private\n   */\n  _isViewable(flags) {\n    return (\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n      !this._hasFlag(flags, AnnotationFlag.HIDDEN) &&\n      !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n    );\n  }\n\n  /**\n   * @private\n   */\n  _isPrintable(flags) {\n    return (\n      this._hasFlag(flags, AnnotationFlag.PRINT) &&\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n      !this._hasFlag(flags, AnnotationFlag.HIDDEN)\n    );\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get viewable() {\n    if (this.flags === 0) {\n      return true;\n    }\n    return this._isViewable(this.flags);\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get printable() {\n    if (this.flags === 0) {\n      return false;\n    }\n    return this._isPrintable(this.flags);\n  }\n\n  /**\n   * Set the contents.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {string} contents - Text to display for the annotation or, if the\n   *                            type of annotation does not display text, a\n   *                            description of the annotation's contents\n   */\n  setContents(contents) {\n    this.contents = stringToPDFString(contents || \"\");\n  }\n\n  /**\n   * Set the modification date.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {string} modificationDate - PDF date string that indicates when the\n   *                                    annotation was last modified\n   */\n  setModificationDate(modificationDate) {\n    this.modificationDate = isString(modificationDate)\n      ? modificationDate\n      : null;\n  }\n\n  /**\n   * Set the flags.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flags - Unsigned 32-bit integer specifying annotation\n   *                         characteristics\n   * @see {@link shared/util.js}\n   */\n  setFlags(flags) {\n    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n  }\n\n  /**\n   * Check if a provided flag is set.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFlag(flag) {\n    return this._hasFlag(this.flags, flag);\n  }\n\n  /**\n   * Set the rectangle.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} rectangle - The rectangle array with exactly four entries\n   */\n  setRectangle(rectangle) {\n    if (Array.isArray(rectangle) && rectangle.length === 4) {\n      this.rectangle = Util.normalizeRect(rectangle);\n    } else {\n      this.rectangle = [0, 0, 0, 0];\n    }\n  }\n\n  /**\n   * Set the color and take care of color space conversion.\n   * The default value is black, in RGB color space.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} color - The color array containing either 0\n   *                        (transparent), 1 (grayscale), 3 (RGB) or\n   *                        4 (CMYK) elements\n   */\n  setColor(color) {\n    const rgbColor = new Uint8ClampedArray(3);\n    if (!Array.isArray(color)) {\n      this.color = rgbColor;\n      return;\n    }\n\n    switch (color.length) {\n      case 0: // Transparent, which we indicate with a null value\n        this.color = null;\n        break;\n\n      case 1: // Convert grayscale to RGB\n        ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      case 3: // Convert RGB percentages to RGB\n        ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      case 4: // Convert CMYK to RGB\n        ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      default:\n        this.color = rgbColor;\n        break;\n    }\n  }\n\n  /**\n   * Set the border style (as AnnotationBorderStyle object).\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} borderStyle - The border style dictionary\n   */\n  setBorderStyle(borderStyle) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(this.rectangle, \"setRectangle must have been called previously.\");\n    }\n\n    this.borderStyle = new AnnotationBorderStyle();\n    if (!isDict(borderStyle)) {\n      return;\n    }\n    if (borderStyle.has(\"BS\")) {\n      const dict = borderStyle.get(\"BS\");\n      const dictType = dict.get(\"Type\");\n\n      if (!dictType || isName(dictType, \"Border\")) {\n        this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n        this.borderStyle.setStyle(dict.get(\"S\"));\n        this.borderStyle.setDashArray(dict.getArray(\"D\"));\n      }\n    } else if (borderStyle.has(\"Border\")) {\n      const array = borderStyle.getArray(\"Border\");\n      if (Array.isArray(array) && array.length >= 3) {\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\n        this.borderStyle.setVerticalCornerRadius(array[1]);\n        this.borderStyle.setWidth(array[2], this.rectangle);\n\n        if (array.length === 4) {\n          // Dash array available\n          this.borderStyle.setDashArray(array[3]);\n        }\n      }\n    } else {\n      // There are no border entries in the dictionary. According to the\n      // specification, we should draw a solid border of width 1 in that\n      // case, but Adobe Reader did not implement that part of the\n      // specification and instead draws no border at all, so we do the same.\n      // See also https://github.com/mozilla/pdf.js/issues/6179.\n      this.borderStyle.setWidth(0);\n    }\n  }\n\n  /**\n   * Set the (normal) appearance.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} dict - The annotation's data dictionary\n   */\n  setAppearance(dict) {\n    this.appearance = null;\n\n    const appearanceStates = dict.get(\"AP\");\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n\n    // In case the normal appearance is a stream, then it is used directly.\n    const normalAppearanceState = appearanceStates.get(\"N\");\n    if (isStream(normalAppearanceState)) {\n      this.appearance = normalAppearanceState;\n      return;\n    }\n    if (!isDict(normalAppearanceState)) {\n      return;\n    }\n\n    // In case the normal appearance is a dictionary, the `AS` entry provides\n    // the key of the stream in this dictionary.\n    const as = dict.get(\"AS\");\n    if (!isName(as) || !normalAppearanceState.has(as.name)) {\n      return;\n    }\n    this.appearance = normalAppearanceState.get(as.name);\n  }\n\n  loadResources(keys) {\n    return this.appearance.dict.getAsync(\"Resources\").then(resources => {\n      if (!resources) {\n        return undefined;\n      }\n\n      const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n      return objectLoader.load().then(function() {\n        return resources;\n      });\n    });\n  }\n\n  getOperatorList(evaluator, task, renderForms) {\n    if (!this.appearance) {\n      return Promise.resolve(new OperatorList());\n    }\n\n    const data = this.data;\n    const appearanceDict = this.appearance.dict;\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"ColorSpace\",\n      \"Pattern\",\n      \"Shading\",\n      \"XObject\",\n      \"Font\",\n    ]);\n    const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n    const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n    const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n    return resourcesPromise.then(resources => {\n      const opList = new OperatorList();\n      opList.addOp(OPS.beginAnnotation, [data.rect, transform, matrix]);\n      return evaluator\n        .getOperatorList({\n          stream: this.appearance,\n          task,\n          resources,\n          operatorList: opList,\n        })\n        .then(() => {\n          opList.addOp(OPS.endAnnotation, []);\n          this.appearance.reset();\n          return opList;\n        });\n    });\n  }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n  constructor() {\n    this.width = 1;\n    this.style = AnnotationBorderStyleType.SOLID;\n    this.dashArray = [3];\n    this.horizontalCornerRadius = 0;\n    this.verticalCornerRadius = 0;\n  }\n\n  /**\n   * Set the width.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} width - The width.\n   * @param {Array} rect - The annotation `Rect` entry.\n   */\n  setWidth(width, rect = [0, 0, 0, 0]) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        Array.isArray(rect) && rect.length === 4,\n        \"A valid `rect` parameter must be provided.\"\n      );\n    }\n\n    // Some corrupt PDF generators may provide the width as a `Name`,\n    // rather than as a number (fixes issue 10385).\n    if (isName(width)) {\n      this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n      return;\n    }\n    if (Number.isInteger(width)) {\n      if (width > 0) {\n        const maxWidth = (rect[2] - rect[0]) / 2;\n        const maxHeight = (rect[3] - rect[1]) / 2;\n\n        // Ignore large `width`s, since they lead to the Annotation overflowing\n        // the size set by the `Rect` entry thus causing the `annotationLayer`\n        // to render it over the surrounding document (fixes bug1552113.pdf).\n        if (\n          maxWidth > 0 &&\n          maxHeight > 0 &&\n          (width > maxWidth || width > maxHeight)\n        ) {\n          warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n          width = 1;\n        }\n      }\n      this.width = width;\n    }\n  }\n\n  /**\n   * Set the style.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Name} style - The annotation style.\n   * @see {@link shared/util.js}\n   */\n  setStyle(style) {\n    if (!isName(style)) {\n      return;\n    }\n    switch (style.name) {\n      case \"S\":\n        this.style = AnnotationBorderStyleType.SOLID;\n        break;\n\n      case \"D\":\n        this.style = AnnotationBorderStyleType.DASHED;\n        break;\n\n      case \"B\":\n        this.style = AnnotationBorderStyleType.BEVELED;\n        break;\n\n      case \"I\":\n        this.style = AnnotationBorderStyleType.INSET;\n        break;\n\n      case \"U\":\n        this.style = AnnotationBorderStyleType.UNDERLINE;\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  /**\n   * Set the dash array.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Array} dashArray - The dash array with at least one element\n   */\n  setDashArray(dashArray) {\n    // We validate the dash array, but we do not use it because CSS does not\n    // allow us to change spacing of dashes. For more information, visit\n    // http://www.w3.org/TR/css3-background/#the-border-style.\n    if (Array.isArray(dashArray) && dashArray.length > 0) {\n      // According to the PDF specification: the elements in `dashArray`\n      // shall be numbers that are nonnegative and not all equal to zero.\n      let isValid = true;\n      let allZeros = true;\n      for (const element of dashArray) {\n        const validNumber = +element >= 0;\n        if (!validNumber) {\n          isValid = false;\n          break;\n        } else if (element > 0) {\n          allZeros = false;\n        }\n      }\n      if (isValid && !allZeros) {\n        this.dashArray = dashArray;\n      } else {\n        this.width = 0; // Adobe behavior when the array is invalid.\n      }\n    } else if (dashArray) {\n      this.width = 0; // Adobe behavior when the array is invalid.\n    }\n  }\n\n  /**\n   * Set the horizontal corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The horizontal corner radius.\n   */\n  setHorizontalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.horizontalCornerRadius = radius;\n    }\n  }\n\n  /**\n   * Set the vertical corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The vertical corner radius.\n   */\n  setVerticalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.verticalCornerRadius = radius;\n    }\n  }\n}\n\nclass MarkupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const dict = parameters.dict;\n\n    if (dict.has(\"IRT\")) {\n      const rawIRT = dict.getRaw(\"IRT\");\n      this.data.inReplyTo = isRef(rawIRT) ? rawIRT.toString() : null;\n\n      const rt = dict.get(\"RT\");\n      this.data.replyType = isName(rt) ? rt.name : AnnotationReplyType.REPLY;\n    }\n\n    if (this.data.replyType === AnnotationReplyType.GROUP) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      const parent = dict.get(\"IRT\");\n\n      this.data.title = stringToPDFString(parent.get(\"T\") || \"\");\n\n      this.setContents(parent.get(\"Contents\"));\n      this.data.contents = this.contents;\n\n      if (!parent.has(\"CreationDate\")) {\n        this.data.creationDate = null;\n      } else {\n        this.setCreationDate(parent.get(\"CreationDate\"));\n        this.data.creationDate = this.creationDate;\n      }\n\n      if (!parent.has(\"M\")) {\n        this.data.modificationDate = null;\n      } else {\n        this.setModificationDate(parent.get(\"M\"));\n        this.data.modificationDate = this.modificationDate;\n      }\n\n      this.data.hasPopup = parent.has(\"Popup\");\n\n      if (!parent.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      } else {\n        this.setColor(parent.getArray(\"C\"));\n        this.data.color = this.color;\n      }\n    } else {\n      this.data.title = stringToPDFString(dict.get(\"T\") || \"\");\n\n      this.setCreationDate(dict.get(\"CreationDate\"));\n      this.data.creationDate = this.creationDate;\n\n      this.data.hasPopup = dict.has(\"Popup\");\n\n      if (!dict.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      }\n    }\n  }\n\n  /**\n   * Set the creation date.\n   *\n   * @public\n   * @memberof MarkupAnnotation\n   * @param {string} creationDate - PDF date string that indicates when the\n   *                                annotation was originally created\n   */\n  setCreationDate(creationDate) {\n    this.creationDate = isString(creationDate) ? creationDate : null;\n  }\n}\n\nclass WidgetAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    const dict = params.dict;\n    const data = this.data;\n\n    data.annotationType = AnnotationType.WIDGET;\n    data.fieldName = this._constructFieldName(dict);\n    data.fieldValue = getInheritableProperty({\n      dict,\n      key: \"V\",\n      getArray: true,\n    });\n    data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n    data.defaultAppearance = getInheritableProperty({ dict, key: \"DA\" }) || \"\";\n    const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n    data.fieldType = isName(fieldType) ? fieldType.name : null;\n    this.fieldResources =\n      getInheritableProperty({ dict, key: \"DR\" }) || Dict.empty;\n\n    data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n      data.fieldFlags = 0;\n    }\n\n    data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n\n    // Hide signatures because we cannot validate them, and unset the fieldValue\n    // since it's (most likely) a `Dict` which is non-serializable and will thus\n    // cause errors when sending annotations to the main-thread (issue 10347).\n    if (data.fieldType === \"Sig\") {\n      data.fieldValue = null;\n      this.setFlags(AnnotationFlag.HIDDEN);\n    }\n  }\n\n  /**\n   * Construct the (fully qualified) field name from the (partial) field\n   * names of the field and its ancestors.\n   *\n   * @private\n   * @memberof WidgetAnnotation\n   * @param {Dict} dict - Complete widget annotation dictionary\n   * @returns {string}\n   */\n  _constructFieldName(dict) {\n    // Both the `Parent` and `T` fields are optional. While at least one of\n    // them should be provided, bad PDF generators may fail to do so.\n    if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n      warn(\"Unknown field name, falling back to empty field name.\");\n      return \"\";\n    }\n\n    // If no parent exists, the partial and fully qualified names are equal.\n    if (!dict.has(\"Parent\")) {\n      return stringToPDFString(dict.get(\"T\"));\n    }\n\n    // Form the fully qualified field name by appending the partial name to\n    // the parent's fully qualified name, separated by a period.\n    const fieldName = [];\n    if (dict.has(\"T\")) {\n      fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n    }\n\n    let loopDict = dict;\n    while (loopDict.has(\"Parent\")) {\n      loopDict = loopDict.get(\"Parent\");\n      if (!isDict(loopDict)) {\n        // Even though it is not allowed according to the PDF specification,\n        // bad PDF generators may provide a `Parent` entry that is not a\n        // dictionary, but `null` for example (issue 8143).\n        break;\n      }\n\n      if (loopDict.has(\"T\")) {\n        fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n      }\n    }\n    return fieldName.join(\".\");\n  }\n\n  /**\n   * Check if a provided field flag is set.\n   *\n   * @public\n   * @memberof WidgetAnnotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        field characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFieldFlag(flag) {\n    return !!(this.data.fieldFlags & flag);\n  }\n\n  getOperatorList(evaluator, task, renderForms) {\n    // Do not render form elements on the canvas when interactive forms are\n    // enabled. The display layer is responsible for rendering them instead.\n    if (renderForms) {\n      return Promise.resolve(new OperatorList());\n    }\n    return super.getOperatorList(evaluator, task, renderForms);\n  }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    const dict = params.dict;\n\n    // The field value is always a string.\n    this.data.fieldValue = stringToPDFString(this.data.fieldValue || \"\");\n\n    // Determine the alignment of text in the field.\n    let alignment = getInheritableProperty({ dict, key: \"Q\" });\n    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n      alignment = null;\n    }\n    this.data.textAlignment = alignment;\n\n    // Determine the maximum length of text in the field.\n    let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n    if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n      maximumLength = null;\n    }\n    this.data.maxLen = maximumLength;\n\n    // Process field flags for the display layer.\n    this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n    this.data.comb =\n      this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n      this.data.maxLen !== null;\n  }\n\n  getOperatorList(evaluator, task, renderForms) {\n    if (renderForms || this.appearance) {\n      return super.getOperatorList(evaluator, task, renderForms);\n    }\n\n    const operatorList = new OperatorList();\n\n    // Even if there is an appearance stream, ignore it. This is the\n    // behaviour used by Adobe Reader.\n    if (!this.data.defaultAppearance) {\n      return Promise.resolve(operatorList);\n    }\n\n    const stream = new Stream(stringToBytes(this.data.defaultAppearance));\n    return evaluator\n      .getOperatorList({\n        stream,\n        task,\n        resources: this.fieldResources,\n        operatorList,\n      })\n      .then(function() {\n        return operatorList;\n      });\n  }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this.data.checkBox =\n      !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.radioButton =\n      this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n\n    if (this.data.checkBox) {\n      this._processCheckBox(params);\n    } else if (this.data.radioButton) {\n      this._processRadioButton(params);\n    } else if (this.data.pushButton) {\n      this._processPushButton(params);\n    } else {\n      warn(\"Invalid field flags for button widget annotation\");\n    }\n  }\n\n  _processCheckBox(params) {\n    if (isName(this.data.fieldValue)) {\n      this.data.fieldValue = this.data.fieldValue.name;\n    }\n\n    const customAppearance = params.dict.get(\"AP\");\n    if (!isDict(customAppearance)) {\n      return;\n    }\n\n    const exportValueOptionsDict = customAppearance.get(\"D\");\n    if (!isDict(exportValueOptionsDict)) {\n      return;\n    }\n\n    const exportValues = exportValueOptionsDict.getKeys();\n    const hasCorrectOptionCount = exportValues.length === 2;\n    if (!hasCorrectOptionCount) {\n      return;\n    }\n\n    this.data.exportValue =\n      exportValues[0] === \"Off\" ? exportValues[1] : exportValues[0];\n  }\n\n  _processRadioButton(params) {\n    this.data.fieldValue = this.data.buttonValue = null;\n\n    // The parent field's `V` entry holds a `Name` object with the appearance\n    // state of whichever child field is currently in the \"on\" state.\n    const fieldParent = params.dict.get(\"Parent\");\n    if (isDict(fieldParent) && fieldParent.has(\"V\")) {\n      const fieldParentValue = fieldParent.get(\"V\");\n      if (isName(fieldParentValue)) {\n        this.data.fieldValue = fieldParentValue.name;\n      }\n    }\n\n    // The button's value corresponds to its appearance state.\n    const appearanceStates = params.dict.get(\"AP\");\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n    const normalAppearanceState = appearanceStates.get(\"N\");\n    if (!isDict(normalAppearanceState)) {\n      return;\n    }\n    for (const key of normalAppearanceState.getKeys()) {\n      if (key !== \"Off\") {\n        this.data.buttonValue = key;\n        break;\n      }\n    }\n  }\n\n  _processPushButton(params) {\n    if (!params.dict.has(\"A\")) {\n      warn(\"Push buttons without action dictionaries are not supported\");\n      return;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    // Determine the options. The options array may consist of strings or\n    // arrays. If the array consists of arrays, then the first element of\n    // each array is the export value and the second element of each array is\n    // the display value. If the array consists of strings, then these\n    // represent both the export and display value. In this case, we convert\n    // it to an array of arrays as well for convenience in the display layer.\n    // Note that the specification does not state that the `Opt` field is\n    // inheritable, but in practice PDF generators do make annotations\n    // inherit the options from a parent annotation (issue 8094).\n    this.data.options = [];\n\n    const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n    if (Array.isArray(options)) {\n      const xref = params.xref;\n      for (let i = 0, ii = options.length; i < ii; i++) {\n        const option = xref.fetchIfRef(options[i]);\n        const isOptionArray = Array.isArray(option);\n\n        this.data.options[i] = {\n          exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option,\n          displayValue: stringToPDFString(\n            isOptionArray ? xref.fetchIfRef(option[1]) : option\n          ),\n        };\n      }\n    }\n\n    // Determine the field value. In this case, it may be a string or an\n    // array of strings. For convenience in the display layer, convert the\n    // string to an array of one string as well.\n    if (!Array.isArray(this.data.fieldValue)) {\n      this.data.fieldValue = [this.data.fieldValue];\n    }\n\n    // Process field flags for the display layer.\n    this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n    this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n  }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    const DEFAULT_ICON_SIZE = 22; // px\n\n    super(parameters);\n\n    const dict = parameters.dict;\n    this.data.annotationType = AnnotationType.TEXT;\n\n    if (this.data.hasAppearance) {\n      this.data.name = \"NoIcon\";\n    } else {\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n      this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n    }\n\n    if (dict.has(\"State\")) {\n      this.data.state = dict.get(\"State\") || null;\n      this.data.stateModel = dict.get(\"StateModel\") || null;\n    } else {\n      this.data.state = null;\n      this.data.stateModel = null;\n    }\n  }\n}\n\nclass LinkAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    this.data.annotationType = AnnotationType.LINK;\n\n    const quadPoints = getQuadPoints(params.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass PopupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POPUP;\n\n    let parentItem = parameters.dict.get(\"Parent\");\n    if (!parentItem) {\n      warn(\"Popup annotation has a missing or invalid parent annotation.\");\n      return;\n    }\n\n    const parentSubtype = parentItem.get(\"Subtype\");\n    this.data.parentType = isName(parentSubtype) ? parentSubtype.name : null;\n    const rawParent = parameters.dict.getRaw(\"Parent\");\n    this.data.parentId = isRef(rawParent) ? rawParent.toString() : null;\n\n    const rt = parentItem.get(\"RT\");\n    if (isName(rt, AnnotationReplyType.GROUP)) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      parentItem = parentItem.get(\"IRT\");\n    }\n\n    if (!parentItem.has(\"M\")) {\n      this.data.modificationDate = null;\n    } else {\n      this.setModificationDate(parentItem.get(\"M\"));\n      this.data.modificationDate = this.modificationDate;\n    }\n\n    if (!parentItem.has(\"C\")) {\n      // Fall back to the default background color.\n      this.data.color = null;\n    } else {\n      this.setColor(parentItem.getArray(\"C\"));\n      this.data.color = this.color;\n    }\n\n    // If the Popup annotation is not viewable, but the parent annotation is,\n    // that is most likely a bug. Fallback to inherit the flags from the parent\n    // annotation (this is consistent with the behaviour in Adobe Reader).\n    if (!this.viewable) {\n      const parentFlags = parentItem.get(\"F\");\n      if (this._isViewable(parentFlags)) {\n        this.setFlags(parentFlags);\n      }\n    }\n\n    this.data.title = stringToPDFString(parentItem.get(\"T\") || \"\");\n    this.data.contents = stringToPDFString(parentItem.get(\"Contents\") || \"\");\n  }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.FREETEXT;\n  }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.LINE;\n\n    this.data.lineCoordinates = Util.normalizeRect(\n      parameters.dict.getArray(\"L\")\n    );\n  }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUARE;\n  }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CIRCLE;\n  }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYLINE;\n\n    // The vertices array is an array of numbers representing the alternating\n    // horizontal and vertical coordinates, respectively, of each vertex.\n    // Convert this to an array of objects with x and y coordinates.\n    const rawVertices = parameters.dict.getArray(\"Vertices\");\n    this.data.vertices = [];\n    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n      this.data.vertices.push({\n        x: rawVertices[i],\n        y: rawVertices[i + 1],\n      });\n    }\n  }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYGON;\n  }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CARET;\n  }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.INK;\n\n    const xref = parameters.xref;\n    const originalInkLists = parameters.dict.getArray(\"InkList\");\n    this.data.inkLists = [];\n    for (let i = 0, ii = originalInkLists.length; i < ii; ++i) {\n      // The raw ink lists array contains arrays of numbers representing\n      // the alternating horizontal and vertical coordinates, respectively,\n      // of each vertex. Convert this to an array of objects with x and y\n      // coordinates.\n      this.data.inkLists.push([]);\n      for (let j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {\n        this.data.inkLists[i].push({\n          x: xref.fetchIfRef(originalInkLists[i][j]),\n          y: xref.fetchIfRef(originalInkLists[i][j + 1]),\n        });\n      }\n    }\n  }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.HIGHLIGHT;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.UNDERLINE;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUIGGLY;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STRIKEOUT;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STAMP;\n  }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n    this.data.annotationType = AnnotationType.FILEATTACHMENT;\n    this.data.file = file.serializable;\n  }\n}\n\nexport {\n  Annotation,\n  AnnotationBorderStyle,\n  AnnotationFactory,\n  MarkupAnnotation,\n  getQuadPoints,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-unsanitized/method */\n\nimport { assert, ImageKind, OPS } from \"../shared/util.js\";\n\nvar QueueOptimizer = (function QueueOptimizerClosure() {\n  function addState(parentState, pattern, checkFn, iterateFn, processFn) {\n    var state = parentState;\n    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {\n      var item = pattern[i];\n      state = state[item] || (state[item] = []);\n    }\n    state[pattern[pattern.length - 1]] = {\n      checkFn,\n      iterateFn,\n      processFn,\n    };\n  }\n\n  function handlePaintSolidColorImageMask(\n    iFirstSave,\n    count,\n    fnArray,\n    argsArray\n  ) {\n    // Handles special case of mainly LaTeX documents which use image masks to\n    // draw lines with the current fill style.\n    // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n    // have been found at iFirstSave.\n    var iFirstPIMXO = iFirstSave + 2;\n    for (var i = 0; i < count; i++) {\n      var arg = argsArray[iFirstPIMXO + 4 * i];\n      var imageMask = arg.length === 1 && arg[0];\n      if (\n        imageMask &&\n        imageMask.width === 1 &&\n        imageMask.height === 1 &&\n        (!imageMask.data.length ||\n          (imageMask.data.length === 1 && imageMask.data[0] === 0))\n      ) {\n        fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n        continue;\n      }\n      break;\n    }\n    return count - i;\n  }\n\n  var InitialState = [];\n\n  // This replaces (save, transform, paintInlineImageXObject, restore)+\n  // sequences with one |paintInlineImageXObjectGroup| operation.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n    null,\n    function iterateInlineImageGroup(context, i) {\n      var fnArray = context.fnArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          return fnArray[i] === OPS.transform;\n        case 2:\n          return fnArray[i] === OPS.paintInlineImageXObject;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n    },\n    function foundInlineImageGroup(context, i) {\n      var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n      var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n      var MAX_WIDTH = 1000;\n      var IMAGE_PADDING = 1;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIIXO = curr - 1;\n\n      var count = Math.min(\n        Math.floor((i - iFirstSave) / 4),\n        MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n      );\n      if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      // assuming that heights of those image is too small (~1 pixel)\n      // packing as much as possible by lines\n      var maxX = 0;\n      var map = [],\n        maxLineHeight = 0;\n      var currentX = IMAGE_PADDING,\n        currentY = IMAGE_PADDING;\n      var q;\n      for (q = 0; q < count; q++) {\n        var transform = argsArray[iFirstTransform + (q << 2)];\n        var img = argsArray[iFirstPIIXO + (q << 2)][0];\n        if (currentX + img.width > MAX_WIDTH) {\n          // starting new line\n          maxX = Math.max(maxX, currentX);\n          currentY += maxLineHeight + 2 * IMAGE_PADDING;\n          currentX = 0;\n          maxLineHeight = 0;\n        }\n        map.push({\n          transform,\n          x: currentX,\n          y: currentY,\n          w: img.width,\n          h: img.height,\n        });\n        currentX += img.width + 2 * IMAGE_PADDING;\n        maxLineHeight = Math.max(maxLineHeight, img.height);\n      }\n      var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n      var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n      var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n      var imgRowSize = imgWidth << 2;\n      for (q = 0; q < count; q++) {\n        var data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n        // Copy image by lines and extends pixels into padding.\n        var rowSize = map[q].w << 2;\n        var dataOffset = 0;\n        var offset = (map[q].x + map[q].y * imgWidth) << 2;\n        imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n        for (var k = 0, kk = map[q].h; k < kk; k++) {\n          imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n          dataOffset += rowSize;\n          offset += imgRowSize;\n        }\n        imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n        while (offset >= 0) {\n          data[offset - 4] = data[offset];\n          data[offset - 3] = data[offset + 1];\n          data[offset - 2] = data[offset + 2];\n          data[offset - 1] = data[offset + 3];\n          data[offset + rowSize] = data[offset + rowSize - 4];\n          data[offset + rowSize + 1] = data[offset + rowSize - 3];\n          data[offset + rowSize + 2] = data[offset + rowSize - 2];\n          data[offset + rowSize + 3] = data[offset + rowSize - 1];\n          offset -= imgRowSize;\n        }\n      }\n\n      // Replace queue items.\n      fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n      argsArray.splice(iFirstSave, count * 4, [\n        {\n          width: imgWidth,\n          height: imgHeight,\n          kind: ImageKind.RGBA_32BPP,\n          data: imgData,\n        },\n        map,\n      ]);\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (save, transform, paintImageMaskXObject, restore)+\n  // sequences with one |paintImageMaskXObjectGroup| or one\n  // |paintImageMaskXObjectRepeat| operation.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n    null,\n    function iterateImageMaskGroup(context, i) {\n      var fnArray = context.fnArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          return fnArray[i] === OPS.transform;\n        case 2:\n          return fnArray[i] === OPS.paintImageMaskXObject;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n    },\n    function foundImageMaskGroup(context, i) {\n      var MIN_IMAGES_IN_MASKS_BLOCK = 10;\n      var MAX_IMAGES_IN_MASKS_BLOCK = 100;\n      var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIMXO = curr - 1;\n\n      // At this point, i is the index of the first op past the last valid\n      // quartet.\n      var count = Math.floor((i - iFirstSave) / 4);\n      count = handlePaintSolidColorImageMask(\n        iFirstSave,\n        count,\n        fnArray,\n        argsArray\n      );\n      if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      var q;\n      var isSameImage = false;\n      var iTransform, transformArgs;\n      var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n      if (\n        argsArray[iFirstTransform][1] === 0 &&\n        argsArray[iFirstTransform][2] === 0\n      ) {\n        isSameImage = true;\n        var firstTransformArg0 = argsArray[iFirstTransform][0];\n        var firstTransformArg3 = argsArray[iFirstTransform][3];\n        iTransform = iFirstTransform + 4;\n        var iPIMXO = iFirstPIMXO + 4;\n        for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n          transformArgs = argsArray[iTransform];\n          if (\n            argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n            transformArgs[0] !== firstTransformArg0 ||\n            transformArgs[1] !== 0 ||\n            transformArgs[2] !== 0 ||\n            transformArgs[3] !== firstTransformArg3\n          ) {\n            if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n              isSameImage = false;\n            } else {\n              count = q;\n            }\n            break; // different image or transform\n          }\n        }\n      }\n\n      if (isSameImage) {\n        count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n        var positions = new Float32Array(count * 2);\n        iTransform = iFirstTransform;\n        for (q = 0; q < count; q++, iTransform += 4) {\n          transformArgs = argsArray[iTransform];\n          positions[q << 1] = transformArgs[4];\n          positions[(q << 1) + 1] = transformArgs[5];\n        }\n\n        // Replace queue items.\n        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n        argsArray.splice(iFirstSave, count * 4, [\n          firstPIMXOArg0,\n          firstTransformArg0,\n          firstTransformArg3,\n          positions,\n        ]);\n      } else {\n        count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n        var images = [];\n        for (q = 0; q < count; q++) {\n          transformArgs = argsArray[iFirstTransform + (q << 2)];\n          var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n          images.push({\n            data: maskParams.data,\n            width: maskParams.width,\n            height: maskParams.height,\n            transform: transformArgs,\n          });\n        }\n\n        // Replace queue items.\n        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n        argsArray.splice(iFirstSave, count * 4, [images]);\n      }\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (save, transform, paintImageXObject, restore)+ sequences\n  // with one paintImageXObjectRepeat operation, if the |transform| and\n  // |paintImageXObjectRepeat| ops are appropriate.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n    function(context) {\n      var argsArray = context.argsArray;\n      var iFirstTransform = context.iCurr - 2;\n      return (\n        argsArray[iFirstTransform][1] === 0 &&\n        argsArray[iFirstTransform][2] === 0\n      );\n    },\n    function iterateImageGroup(context, i) {\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          if (fnArray[i] !== OPS.transform) {\n            return false;\n          }\n          var iFirstTransform = context.iCurr - 2;\n          var firstTransformArg0 = argsArray[iFirstTransform][0];\n          var firstTransformArg3 = argsArray[iFirstTransform][3];\n          if (\n            argsArray[i][0] !== firstTransformArg0 ||\n            argsArray[i][1] !== 0 ||\n            argsArray[i][2] !== 0 ||\n            argsArray[i][3] !== firstTransformArg3\n          ) {\n            return false; // transforms don't match\n          }\n          return true;\n        case 2:\n          if (fnArray[i] !== OPS.paintImageXObject) {\n            return false;\n          }\n          var iFirstPIXO = context.iCurr - 1;\n          var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n          if (argsArray[i][0] !== firstPIXOArg0) {\n            return false; // images don't match\n          }\n          return true;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n    },\n    function(context, i) {\n      var MIN_IMAGES_IN_BLOCK = 3;\n      var MAX_IMAGES_IN_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIXO = curr - 1;\n      var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n      var firstTransformArg0 = argsArray[iFirstTransform][0];\n      var firstTransformArg3 = argsArray[iFirstTransform][3];\n\n      // At this point, i is the index of the first op past the last valid\n      // quartet.\n      var count = Math.min(\n        Math.floor((i - iFirstSave) / 4),\n        MAX_IMAGES_IN_BLOCK\n      );\n      if (count < MIN_IMAGES_IN_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      // Extract the (x,y) positions from all of the matching transforms.\n      var positions = new Float32Array(count * 2);\n      var iTransform = iFirstTransform;\n      for (var q = 0; q < count; q++, iTransform += 4) {\n        var transformArgs = argsArray[iTransform];\n        positions[q << 1] = transformArgs[4];\n        positions[(q << 1) + 1] = transformArgs[5];\n      }\n\n      // Replace queue items.\n      var args = [\n        firstPIXOArg0,\n        firstTransformArg0,\n        firstTransformArg3,\n        positions,\n      ];\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n      argsArray.splice(iFirstSave, count * 4, args);\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n  // sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n  // sequences, if the font for each one is the same.\n  addState(\n    InitialState,\n    [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n    null,\n    function iterateShowTextGroup(context, i) {\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var iFirstSave = context.iCurr - 4;\n      var pos = (i - iFirstSave) % 5;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.beginText;\n        case 1:\n          return fnArray[i] === OPS.setFont;\n        case 2:\n          return fnArray[i] === OPS.setTextMatrix;\n        case 3:\n          if (fnArray[i] !== OPS.showText) {\n            return false;\n          }\n          var iFirstSetFont = context.iCurr - 3;\n          var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n          var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n          if (\n            argsArray[i][0] !== firstSetFontArg0 ||\n            argsArray[i][1] !== firstSetFontArg1\n          ) {\n            return false; // fonts don't match\n          }\n          return true;\n        case 4:\n          return fnArray[i] === OPS.endText;\n      }\n      throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n    },\n    function(context, i) {\n      var MIN_CHARS_IN_BLOCK = 3;\n      var MAX_CHARS_IN_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstBeginText = curr - 4;\n      var iFirstSetFont = curr - 3;\n      var iFirstSetTextMatrix = curr - 2;\n      var iFirstShowText = curr - 1;\n      var iFirstEndText = curr;\n      var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n      var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n      // At this point, i is the index of the first op past the last valid\n      // quintet.\n      var count = Math.min(\n        Math.floor((i - iFirstBeginText) / 5),\n        MAX_CHARS_IN_BLOCK\n      );\n      if (count < MIN_CHARS_IN_BLOCK) {\n        return i - ((i - iFirstBeginText) % 5);\n      }\n\n      // If the preceding quintet is (<something>, setFont, setTextMatrix,\n      // showText, endText), include that as well. (E.g. <something> might be\n      // |dependency|.)\n      var iFirst = iFirstBeginText;\n      if (\n        iFirstBeginText >= 4 &&\n        fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n        fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n        fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n        fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n        argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n        argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n      ) {\n        count++;\n        iFirst -= 5;\n      }\n\n      // Remove (endText, beginText, setFont) trios.\n      var iEndText = iFirst + 4;\n      for (var q = 1; q < count; q++) {\n        fnArray.splice(iEndText, 3);\n        argsArray.splice(iEndText, 3);\n        iEndText += 2;\n      }\n\n      return iEndText + 1;\n    }\n  );\n\n  function QueueOptimizer(queue) {\n    this.queue = queue;\n    this.state = null;\n    this.context = {\n      iCurr: 0,\n      fnArray: queue.fnArray,\n      argsArray: queue.argsArray,\n    };\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n\n  QueueOptimizer.prototype = {\n    _optimize() {\n      // Process new fnArray item(s) chunk.\n      const fnArray = this.queue.fnArray;\n      let i = this.lastProcessed,\n        ii = fnArray.length;\n      let state = this.state;\n      let match = this.match;\n      if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n        // Micro-optimization for the common case: last item is not\n        // optimizable, just skipping it.\n        this.lastProcessed = ii;\n        return;\n      }\n\n      const context = this.context;\n      while (i < ii) {\n        if (match) {\n          // Already find a block of potentially optimizable items, iterating...\n          const iterate = (0, match.iterateFn)(context, i);\n          if (iterate) {\n            i++;\n            continue;\n          }\n          // Found last items for the block, processing...\n          i = (0, match.processFn)(context, i + 1);\n          ii = fnArray.length;\n          match = null;\n          state = null;\n          if (i >= ii) {\n            break;\n          }\n        }\n        // Find the potentially optimizable items.\n        state = (state || InitialState)[fnArray[i]];\n        if (!state || Array.isArray(state)) {\n          i++;\n          continue;\n        }\n        // Found a start of the block based on addState rules.\n        context.iCurr = i;\n        i++;\n        if (state.checkFn && !(0, state.checkFn)(context)) {\n          // Check failed, continue search...\n          state = null;\n          continue;\n        }\n        match = state;\n        state = null;\n      }\n      this.state = state;\n      this.match = match;\n      this.lastProcessed = i;\n    },\n\n    push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n      this._optimize();\n    },\n\n    flush() {\n      while (this.match) {\n        const length = this.queue.fnArray.length;\n        this.lastProcessed = (0, this.match.processFn)(this.context, length);\n        this.match = null;\n        this.state = null;\n        // Repeat optimization until all chunks are exhausted.\n        this._optimize();\n      }\n    },\n\n    reset() {\n      this.state = null;\n      this.match = null;\n      this.lastProcessed = 0;\n    },\n  };\n  return QueueOptimizer;\n})();\n\nvar NullOptimizer = (function NullOptimizerClosure() {\n  function NullOptimizer(queue) {\n    this.queue = queue;\n  }\n\n  NullOptimizer.prototype = {\n    push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n    },\n\n    flush() {},\n\n    reset() {},\n  };\n\n  return NullOptimizer;\n})();\n\nvar OperatorList = (function OperatorListClosure() {\n  var CHUNK_SIZE = 1000;\n  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; // close to chunk size\n\n  function OperatorList(intent, streamSink, pageIndex) {\n    this._streamSink = streamSink;\n    this.fnArray = [];\n    this.argsArray = [];\n    if (streamSink && intent !== \"oplist\") {\n      this.optimizer = new QueueOptimizer(this);\n    } else {\n      this.optimizer = new NullOptimizer(this);\n    }\n    this.dependencies = Object.create(null);\n    this._totalLength = 0;\n    this.pageIndex = pageIndex;\n    this.intent = intent;\n    this.weight = 0;\n    this._resolved = streamSink ? null : Promise.resolve();\n  }\n\n  OperatorList.prototype = {\n    get length() {\n      return this.argsArray.length;\n    },\n\n    get ready() {\n      return this._resolved || this._streamSink.ready;\n    },\n\n    /**\n     * @type {number} The total length of the entire operator list, since\n     *                `this.length === 0` after flushing.\n     */\n    get totalLength() {\n      return this._totalLength + this.length;\n    },\n\n    addOp(fn, args) {\n      this.optimizer.push(fn, args);\n      this.weight++;\n      if (this._streamSink) {\n        if (this.weight >= CHUNK_SIZE) {\n          this.flush();\n        } else if (\n          this.weight >= CHUNK_SIZE_ABOUT &&\n          (fn === OPS.restore || fn === OPS.endText)\n        ) {\n          // heuristic to flush on boundary of restore or endText\n          this.flush();\n        }\n      }\n    },\n\n    addDependency(dependency) {\n      if (dependency in this.dependencies) {\n        return;\n      }\n      this.dependencies[dependency] = true;\n      this.addOp(OPS.dependency, [dependency]);\n    },\n\n    addDependencies(dependencies) {\n      for (var key in dependencies) {\n        this.addDependency(key);\n      }\n    },\n\n    addOpList(opList) {\n      Object.assign(this.dependencies, opList.dependencies);\n      for (var i = 0, ii = opList.length; i < ii; i++) {\n        this.addOp(opList.fnArray[i], opList.argsArray[i]);\n      }\n    },\n\n    getIR() {\n      return {\n        fnArray: this.fnArray,\n        argsArray: this.argsArray,\n        length: this.length,\n      };\n    },\n\n    get _transfers() {\n      const transfers = [];\n      const { fnArray, argsArray, length } = this;\n      for (let i = 0; i < length; i++) {\n        switch (fnArray[i]) {\n          case OPS.paintInlineImageXObject:\n          case OPS.paintInlineImageXObjectGroup:\n          case OPS.paintImageMaskXObject:\n            const arg = argsArray[i][0]; // first param in imgData\n\n            if (\n              typeof PDFJSDev === \"undefined\" ||\n              PDFJSDev.test(\"!PRODUCTION || TESTING\")\n            ) {\n              assert(\n                arg.data instanceof Uint8ClampedArray,\n                'OperatorList._transfers: Unsupported \"arg.data\" type.'\n              );\n            }\n            if (!arg.cached) {\n              transfers.push(arg.data.buffer);\n            }\n            break;\n        }\n      }\n      return transfers;\n    },\n\n    flush(lastChunk = false) {\n      this.optimizer.flush();\n      const length = this.length;\n      this._totalLength += length;\n\n      this._streamSink.enqueue(\n        {\n          fnArray: this.fnArray,\n          argsArray: this.argsArray,\n          lastChunk,\n          length,\n        },\n        1,\n        this._transfers\n      );\n\n      this.dependencies = Object.create(null);\n      this.fnArray.length = 0;\n      this.argsArray.length = 0;\n      this.weight = 0;\n      this.optimizer.reset();\n    },\n  };\n\n  return OperatorList;\n})();\n\nexport { OperatorList };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  assert,\n  CMapCompressionType,\n  createPromiseCapability,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  IDENTITY_MATRIX,\n  info,\n  isArrayEqual,\n  isNum,\n  isString,\n  NativeImageDecoding,\n  OPS,\n  stringToPDFString,\n  TextRenderingMode,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport {\n  Cmd,\n  Dict,\n  EOF,\n  isDict,\n  isName,\n  isRef,\n  isStream,\n  Name,\n  Ref,\n} from \"./primitives.js\";\nimport {\n  ErrorFont,\n  Font,\n  FontFlags,\n  getFontType,\n  IdentityToUnicodeMap,\n  ToUnicodeMap,\n} from \"./fonts.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  WinAnsiEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport { getLookupTableFactory, MissingDataException } from \"./core_utils.js\";\nimport {\n  getNormalizedUnicodes,\n  getUnicodeForGlyph,\n  reverseIfRtl,\n} from \"./unicode.js\";\nimport {\n  getSerifFonts,\n  getStdFontMap,\n  getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { isPDFFunction } from \"./function.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { MurmurHash3_64 } from \"./murmurhash3.js\";\nimport { NativeImageDecoder } from \"./image_utils.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nvar PartialEvaluator = (function PartialEvaluatorClosure() {\n  const DefaultPartialEvaluatorOptions = {\n    forceDataSchema: false,\n    maxImageSize: -1,\n    disableFontFace: false,\n    nativeImageDecoderSupport: NativeImageDecoding.DECODE,\n    ignoreErrors: false,\n    isEvalSupported: true,\n  };\n\n  function PartialEvaluator({\n    xref,\n    handler,\n    pageIndex,\n    idFactory,\n    fontCache,\n    builtInCMapCache,\n    options = null,\n    pdfFunctionFactory,\n  }) {\n    this.xref = xref;\n    this.handler = handler;\n    this.pageIndex = pageIndex;\n    this.idFactory = idFactory;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.options = options || DefaultPartialEvaluatorOptions;\n    this.pdfFunctionFactory = pdfFunctionFactory;\n    this.parsingType3Font = false;\n\n    this.fetchBuiltInCMap = async name => {\n      if (this.builtInCMapCache.has(name)) {\n        return this.builtInCMapCache.get(name);\n      }\n      const readableStream = this.handler.sendWithStream(\"FetchBuiltInCMap\", {\n        name,\n      });\n      const reader = readableStream.getReader();\n\n      const data = await new Promise(function(resolve, reject) {\n        function pump() {\n          reader.read().then(function({ value, done }) {\n            if (done) {\n              return;\n            }\n            resolve(value);\n            pump();\n          }, reject);\n        }\n        pump();\n      });\n\n      if (data.compressionType !== CMapCompressionType.NONE) {\n        // Given the size of uncompressed CMaps, only cache compressed ones.\n        this.builtInCMapCache.set(name, data);\n      }\n      return data;\n    };\n  }\n\n  // Trying to minimize Date.now() usage and check every 100 time\n  var TIME_SLOT_DURATION_MS = 20;\n  var CHECK_TIME_EVERY = 100;\n  function TimeSlotManager() {\n    this.reset();\n  }\n  TimeSlotManager.prototype = {\n    check: function TimeSlotManager_check() {\n      if (++this.checked < CHECK_TIME_EVERY) {\n        return false;\n      }\n      this.checked = 0;\n      return this.endTime <= Date.now();\n    },\n    reset: function TimeSlotManager_reset() {\n      this.endTime = Date.now() + TIME_SLOT_DURATION_MS;\n      this.checked = 0;\n    },\n  };\n\n  // Convert PDF blend mode names to HTML5 blend mode names.\n  function normalizeBlendMode(value, parsingArray = false) {\n    if (Array.isArray(value)) {\n      // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n        if (maybeBM) {\n          return maybeBM;\n        }\n      }\n      warn(`Unsupported blend mode Array: ${value}`);\n      return \"source-over\";\n    }\n\n    if (!isName(value)) {\n      if (parsingArray) {\n        return null;\n      }\n      return \"source-over\";\n    }\n    switch (value.name) {\n      case \"Normal\":\n      case \"Compatible\":\n        return \"source-over\";\n      case \"Multiply\":\n        return \"multiply\";\n      case \"Screen\":\n        return \"screen\";\n      case \"Overlay\":\n        return \"overlay\";\n      case \"Darken\":\n        return \"darken\";\n      case \"Lighten\":\n        return \"lighten\";\n      case \"ColorDodge\":\n        return \"color-dodge\";\n      case \"ColorBurn\":\n        return \"color-burn\";\n      case \"HardLight\":\n        return \"hard-light\";\n      case \"SoftLight\":\n        return \"soft-light\";\n      case \"Difference\":\n        return \"difference\";\n      case \"Exclusion\":\n        return \"exclusion\";\n      case \"Hue\":\n        return \"hue\";\n      case \"Saturation\":\n        return \"saturation\";\n      case \"Color\":\n        return \"color\";\n      case \"Luminosity\":\n        return \"luminosity\";\n    }\n    if (parsingArray) {\n      return null;\n    }\n    warn(`Unsupported blend mode: ${value.name}`);\n    return \"source-over\";\n  }\n\n  var deferred = Promise.resolve();\n\n  var TILING_PATTERN = 1,\n    SHADING_PATTERN = 2;\n\n  PartialEvaluator.prototype = {\n    clone(newOptions = DefaultPartialEvaluatorOptions) {\n      var newEvaluator = Object.create(this);\n      newEvaluator.options = newOptions;\n      return newEvaluator;\n    },\n\n    hasBlendModes: function PartialEvaluator_hasBlendModes(resources) {\n      if (!(resources instanceof Dict)) {\n        return false;\n      }\n\n      var processed = Object.create(null);\n      if (resources.objId) {\n        processed[resources.objId] = true;\n      }\n\n      var nodes = [resources],\n        xref = this.xref;\n      while (nodes.length) {\n        var node = nodes.shift();\n        // First check the current resources for blend modes.\n        var graphicStates = node.get(\"ExtGState\");\n        if (graphicStates instanceof Dict) {\n          var graphicStatesKeys = graphicStates.getKeys();\n          for (let i = 0, ii = graphicStatesKeys.length; i < ii; i++) {\n            const key = graphicStatesKeys[i];\n\n            let graphicState = graphicStates.getRaw(key);\n            if (graphicState instanceof Ref) {\n              if (processed[graphicState.toString()]) {\n                continue; // The ExtGState has already been processed.\n              }\n              try {\n                graphicState = xref.fetch(graphicState);\n              } catch (ex) {\n                if (ex instanceof MissingDataException) {\n                  throw ex;\n                }\n                if (this.options.ignoreErrors) {\n                  if (graphicState instanceof Ref) {\n                    // Avoid parsing a corrupt ExtGState more than once.\n                    processed[graphicState.toString()] = true;\n                  }\n                  // Error(s) in the ExtGState -- sending unsupported feature\n                  // notification and allow parsing/rendering to continue.\n                  this.handler.send(\"UnsupportedFeature\", {\n                    featureId: UNSUPPORTED_FEATURES.unknown,\n                  });\n                  warn(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n                  continue;\n                }\n                throw ex;\n              }\n            }\n            if (!(graphicState instanceof Dict)) {\n              continue;\n            }\n            if (graphicState.objId) {\n              processed[graphicState.objId] = true;\n            }\n\n            const bm = graphicState.get(\"BM\");\n            if (bm instanceof Name) {\n              if (bm.name !== \"Normal\") {\n                return true;\n              }\n              continue;\n            }\n            if (bm !== undefined && Array.isArray(bm)) {\n              for (let j = 0, jj = bm.length; j < jj; j++) {\n                if (bm[j] instanceof Name && bm[j].name !== \"Normal\") {\n                  return true;\n                }\n              }\n            }\n          }\n        }\n        // Descend into the XObjects to look for more resources and blend modes.\n        var xObjects = node.get(\"XObject\");\n        if (!(xObjects instanceof Dict)) {\n          continue;\n        }\n        var xObjectsKeys = xObjects.getKeys();\n        for (let i = 0, ii = xObjectsKeys.length; i < ii; i++) {\n          const key = xObjectsKeys[i];\n\n          var xObject = xObjects.getRaw(key);\n          if (xObject instanceof Ref) {\n            if (processed[xObject.toString()]) {\n              // The XObject has already been processed, and by avoiding a\n              // redundant `xref.fetch` we can *significantly* reduce the load\n              // time for badly generated PDF files (fixes issue6961.pdf).\n              continue;\n            }\n            try {\n              xObject = xref.fetch(xObject);\n            } catch (ex) {\n              if (ex instanceof MissingDataException) {\n                throw ex;\n              }\n              if (this.options.ignoreErrors) {\n                if (xObject instanceof Ref) {\n                  // Avoid parsing a corrupt XObject more than once.\n                  processed[xObject.toString()] = true;\n                }\n                // Error(s) in the XObject -- sending unsupported feature\n                // notification and allow parsing/rendering to continue.\n                this.handler.send(\"UnsupportedFeature\", {\n                  featureId: UNSUPPORTED_FEATURES.unknown,\n                });\n                warn(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n                continue;\n              }\n              throw ex;\n            }\n          }\n          if (!isStream(xObject)) {\n            continue;\n          }\n          if (xObject.dict.objId) {\n            if (processed[xObject.dict.objId]) {\n              continue; // Stream has objId and was processed already.\n            }\n            processed[xObject.dict.objId] = true;\n          }\n          var xResources = xObject.dict.get(\"Resources\");\n          // Checking objId to detect an infinite loop.\n          if (\n            xResources instanceof Dict &&\n            (!xResources.objId || !processed[xResources.objId])\n          ) {\n            nodes.push(xResources);\n            if (xResources.objId) {\n              processed[xResources.objId] = true;\n            }\n          }\n        }\n      }\n      return false;\n    },\n\n    async buildFormXObject(\n      resources,\n      xobj,\n      smask,\n      operatorList,\n      task,\n      initialState\n    ) {\n      var dict = xobj.dict;\n      var matrix = dict.getArray(\"Matrix\");\n      var bbox = dict.getArray(\"BBox\");\n      if (Array.isArray(bbox) && bbox.length === 4) {\n        bbox = Util.normalizeRect(bbox);\n      } else {\n        bbox = null;\n      }\n      var group = dict.get(\"Group\");\n      if (group) {\n        var groupOptions = {\n          matrix,\n          bbox,\n          smask,\n          isolated: false,\n          knockout: false,\n        };\n\n        var groupSubtype = group.get(\"S\");\n        var colorSpace = null;\n        if (isName(groupSubtype, \"Transparency\")) {\n          groupOptions.isolated = group.get(\"I\") || false;\n          groupOptions.knockout = group.get(\"K\") || false;\n          if (group.has(\"CS\")) {\n            colorSpace = await this.parseColorSpace({\n              cs: group.get(\"CS\"),\n              resources,\n            });\n          }\n        }\n\n        if (smask && smask.backdrop) {\n          colorSpace = colorSpace || ColorSpace.singletons.rgb;\n          smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n        }\n\n        operatorList.addOp(OPS.beginGroup, [groupOptions]);\n      }\n\n      operatorList.addOp(OPS.paintFormXObjectBegin, [matrix, bbox]);\n\n      return this.getOperatorList({\n        stream: xobj,\n        task,\n        resources: dict.get(\"Resources\") || resources,\n        operatorList,\n        initialState,\n      }).then(function() {\n        operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n        if (group) {\n          operatorList.addOp(OPS.endGroup, [groupOptions]);\n        }\n      });\n    },\n\n    async buildPaintImageXObject({\n      resources,\n      image,\n      isInline = false,\n      operatorList,\n      cacheKey,\n      imageCache,\n      forceDisableNativeImageDecoder = false,\n    }) {\n      var dict = image.dict;\n      var w = dict.get(\"Width\", \"W\");\n      var h = dict.get(\"Height\", \"H\");\n\n      if (!(w && isNum(w)) || !(h && isNum(h))) {\n        warn(\"Image dimensions are missing, or not numbers.\");\n        return undefined;\n      }\n      var maxImageSize = this.options.maxImageSize;\n      if (maxImageSize !== -1 && w * h > maxImageSize) {\n        warn(\"Image exceeded maximum allowed size and was removed.\");\n        return undefined;\n      }\n\n      var imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n      var imgData, args;\n      if (imageMask) {\n        // This depends on a tmpCanvas being filled with the\n        // current fillStyle, such that processing the pixel\n        // data can't be done here. Instead of creating a\n        // complete PDFImage, only read the information needed\n        // for later.\n\n        var width = dict.get(\"Width\", \"W\");\n        var height = dict.get(\"Height\", \"H\");\n        var bitStrideLength = (width + 7) >> 3;\n        var imgArray = image.getBytes(\n          bitStrideLength * height,\n          /* forceClamped = */ true\n        );\n        var decode = dict.getArray(\"Decode\", \"D\");\n\n        imgData = PDFImage.createMask({\n          imgArray,\n          width,\n          height,\n          imageIsFromDecodeStream: image instanceof DecodeStream,\n          inverseDecode: !!decode && decode[0] > 0,\n        });\n        imgData.cached = !!cacheKey;\n        args = [imgData];\n\n        operatorList.addOp(OPS.paintImageMaskXObject, args);\n        if (cacheKey) {\n          imageCache[cacheKey] = {\n            fn: OPS.paintImageMaskXObject,\n            args,\n          };\n        }\n        return undefined;\n      }\n\n      var softMask = dict.get(\"SMask\", \"SM\") || false;\n      var mask = dict.get(\"Mask\") || false;\n\n      var SMALL_IMAGE_DIMENSIONS = 200;\n      // Inlining small images into the queue as RGB data\n      if (\n        isInline &&\n        !softMask &&\n        !mask &&\n        !(image instanceof JpegStream) &&\n        w + h < SMALL_IMAGE_DIMENSIONS\n      ) {\n        const imageObj = new PDFImage({\n          xref: this.xref,\n          res: resources,\n          image,\n          isInline,\n          pdfFunctionFactory: this.pdfFunctionFactory,\n        });\n        // We force the use of RGBA_32BPP images here, because we can't handle\n        // any other kind.\n        imgData = imageObj.createImageData(/* forceRGBA = */ true);\n        operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n        return undefined;\n      }\n\n      const nativeImageDecoderSupport = forceDisableNativeImageDecoder\n        ? NativeImageDecoding.NONE\n        : this.options.nativeImageDecoderSupport;\n      // If there is no imageMask, create the PDFImage and a lot\n      // of image processing can be done here.\n      let objId = `img_${this.idFactory.createObjId()}`;\n\n      if (this.parsingType3Font) {\n        assert(\n          nativeImageDecoderSupport === NativeImageDecoding.NONE,\n          \"Type3 image resources should be completely decoded in the worker.\"\n        );\n\n        objId = `${this.idFactory.getDocId()}_type3res_${objId}`;\n      }\n\n      if (\n        nativeImageDecoderSupport !== NativeImageDecoding.NONE &&\n        !softMask &&\n        !mask &&\n        image instanceof JpegStream &&\n        NativeImageDecoder.isSupported(\n          image,\n          this.xref,\n          resources,\n          this.pdfFunctionFactory\n        ) &&\n        image.maybeValidDimensions\n      ) {\n        // These JPEGs don't need any more processing so we can just send it.\n        return this.handler\n          .sendWithPromise(\"obj\", [\n            objId,\n            this.pageIndex,\n            \"JpegStream\",\n            image.getIR(this.options.forceDataSchema),\n          ])\n          .then(\n            function() {\n              // Only add the dependency once we know that the native JPEG\n              // decoding succeeded, to ensure that rendering will always\n              // complete.\n              operatorList.addDependency(objId);\n              args = [objId, w, h];\n\n              operatorList.addOp(OPS.paintJpegXObject, args);\n              if (cacheKey) {\n                imageCache[cacheKey] = {\n                  fn: OPS.paintJpegXObject,\n                  args,\n                };\n              }\n            },\n            reason => {\n              warn(\n                \"Native JPEG decoding failed -- trying to recover: \" +\n                  (reason && reason.message)\n              );\n              // Try to decode the JPEG image with the built-in decoder instead.\n              return this.buildPaintImageXObject({\n                resources,\n                image,\n                isInline,\n                operatorList,\n                cacheKey,\n                imageCache,\n                forceDisableNativeImageDecoder: true,\n              });\n            }\n          );\n      }\n\n      // Creates native image decoder only if a JPEG image or mask is present.\n      var nativeImageDecoder = null;\n      if (\n        nativeImageDecoderSupport === NativeImageDecoding.DECODE &&\n        (image instanceof JpegStream ||\n          mask instanceof JpegStream ||\n          softMask instanceof JpegStream)\n      ) {\n        nativeImageDecoder = new NativeImageDecoder({\n          xref: this.xref,\n          resources,\n          handler: this.handler,\n          forceDataSchema: this.options.forceDataSchema,\n          pdfFunctionFactory: this.pdfFunctionFactory,\n        });\n      }\n\n      // Ensure that the dependency is added before the image is decoded.\n      operatorList.addDependency(objId);\n      args = [objId, w, h];\n\n      const imgPromise = PDFImage.buildImage({\n        handler: this.handler,\n        xref: this.xref,\n        res: resources,\n        image,\n        isInline,\n        nativeDecoder: nativeImageDecoder,\n        pdfFunctionFactory: this.pdfFunctionFactory,\n      })\n        .then(imageObj => {\n          var imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n          if (this.parsingType3Font) {\n            return this.handler.sendWithPromise(\n              \"commonobj\",\n              [objId, \"FontType3Res\", imgData],\n              [imgData.data.buffer]\n            );\n          }\n          this.handler.send(\n            \"obj\",\n            [objId, this.pageIndex, \"Image\", imgData],\n            [imgData.data.buffer]\n          );\n          return undefined;\n        })\n        .catch(reason => {\n          warn(\"Unable to decode image: \" + reason);\n\n          if (this.parsingType3Font) {\n            return this.handler.sendWithPromise(\"commonobj\", [\n              objId,\n              \"FontType3Res\",\n              null,\n            ]);\n          }\n          this.handler.send(\"obj\", [objId, this.pageIndex, \"Image\", null]);\n          return undefined;\n        });\n\n      if (this.parsingType3Font) {\n        // In the very rare case where a Type3 image resource is being parsed,\n        // wait for the image to be both decoded *and* sent to simplify the\n        // rendering code on the main-thread (see issue10717.pdf).\n        await imgPromise;\n      }\n\n      operatorList.addOp(OPS.paintImageXObject, args);\n      if (cacheKey) {\n        imageCache[cacheKey] = {\n          fn: OPS.paintImageXObject,\n          args,\n        };\n      }\n      return undefined;\n    },\n\n    handleSMask: function PartialEvaluator_handleSmask(\n      smask,\n      resources,\n      operatorList,\n      task,\n      stateManager\n    ) {\n      var smaskContent = smask.get(\"G\");\n      var smaskOptions = {\n        subtype: smask.get(\"S\").name,\n        backdrop: smask.get(\"BC\"),\n      };\n\n      // The SMask might have a alpha/luminosity value transfer function --\n      // we will build a map of integer values in range 0..255 to be fast.\n      var transferObj = smask.get(\"TR\");\n      if (isPDFFunction(transferObj)) {\n        const transferFn = this.pdfFunctionFactory.create(transferObj);\n        var transferMap = new Uint8Array(256);\n        var tmp = new Float32Array(1);\n        for (var i = 0; i < 256; i++) {\n          tmp[0] = i / 255;\n          transferFn(tmp, 0, tmp, 0);\n          transferMap[i] = (tmp[0] * 255) | 0;\n        }\n        smaskOptions.transferMap = transferMap;\n      }\n\n      return this.buildFormXObject(\n        resources,\n        smaskContent,\n        smaskOptions,\n        operatorList,\n        task,\n        stateManager.state.clone()\n      );\n    },\n\n    handleTilingType(\n      fn,\n      args,\n      resources,\n      pattern,\n      patternDict,\n      operatorList,\n      task\n    ) {\n      // Create an IR of the pattern code.\n      const tilingOpList = new OperatorList();\n      // Merge the available resources, to prevent issues when the patternDict\n      // is missing some /Resources entries (fixes issue6541.pdf).\n      const resourcesArray = [patternDict.get(\"Resources\"), resources];\n      const patternResources = Dict.merge(this.xref, resourcesArray);\n\n      return this.getOperatorList({\n        stream: pattern,\n        task,\n        resources: patternResources,\n        operatorList: tilingOpList,\n      })\n        .then(function() {\n          return getTilingPatternIR(\n            {\n              fnArray: tilingOpList.fnArray,\n              argsArray: tilingOpList.argsArray,\n            },\n            patternDict,\n            args\n          );\n        })\n        .then(\n          function(tilingPatternIR) {\n            // Add the dependencies to the parent operator list so they are\n            // resolved before the sub operator list is executed synchronously.\n            operatorList.addDependencies(tilingOpList.dependencies);\n            operatorList.addOp(fn, tilingPatternIR);\n          },\n          reason => {\n            if (reason instanceof AbortException) {\n              return;\n            }\n            if (this.options.ignoreErrors) {\n              // Error(s) in the TilingPattern -- sending unsupported feature\n              // notification and allow rendering to continue.\n              this.handler.send(\"UnsupportedFeature\", {\n                featureId: UNSUPPORTED_FEATURES.unknown,\n              });\n              warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n              return;\n            }\n            throw reason;\n          }\n        );\n    },\n\n    handleSetFont: function PartialEvaluator_handleSetFont(\n      resources,\n      fontArgs,\n      fontRef,\n      operatorList,\n      task,\n      state\n    ) {\n      // TODO(mack): Not needed?\n      var fontName;\n      if (fontArgs) {\n        fontArgs = fontArgs.slice();\n        fontName = fontArgs[0].name;\n      }\n\n      return this.loadFont(fontName, fontRef, resources)\n        .then(translated => {\n          if (!translated.font.isType3Font) {\n            return translated;\n          }\n          return translated\n            .loadType3Data(this, resources, operatorList, task)\n            .then(function() {\n              return translated;\n            })\n            .catch(reason => {\n              // Error in the font data -- sending unsupported feature\n              // notification.\n              this.handler.send(\"UnsupportedFeature\", {\n                featureId: UNSUPPORTED_FEATURES.font,\n              });\n              return new TranslatedFont(\n                \"g_font_error\",\n                new ErrorFont(\"Type3 font load error: \" + reason),\n                translated.font\n              );\n            });\n        })\n        .then(translated => {\n          state.font = translated.font;\n          translated.send(this.handler);\n          return translated.loadedName;\n        });\n    },\n\n    handleText(chars, state) {\n      const font = state.font;\n      const glyphs = font.charsToGlyphs(chars);\n\n      if (font.data) {\n        const isAddToPathSet = !!(\n          state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n        );\n        if (\n          isAddToPathSet ||\n          state.fillColorSpace.name === \"Pattern\" ||\n          font.disableFontFace ||\n          this.options.disableFontFace\n        ) {\n          PartialEvaluator.buildFontPaths(font, glyphs, this.handler);\n        }\n      }\n      return glyphs;\n    },\n\n    ensureStateFont(state) {\n      if (state.font) {\n        return;\n      }\n      const reason = new FormatError(\n        \"Missing setFont (Tf) operator before text rendering operator.\"\n      );\n\n      if (this.options.ignoreErrors) {\n        // Missing setFont operator before text rendering operator -- sending\n        // unsupported feature notification and allow rendering to continue.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.font,\n        });\n        warn(`ensureStateFont: \"${reason}\".`);\n        return;\n      }\n      throw reason;\n    },\n\n    setGState: function PartialEvaluator_setGState(\n      resources,\n      gState,\n      operatorList,\n      task,\n      stateManager\n    ) {\n      // This array holds the converted/processed state data.\n      var gStateObj = [];\n      var gStateKeys = gState.getKeys();\n      var promise = Promise.resolve();\n      for (var i = 0, ii = gStateKeys.length; i < ii; i++) {\n        const key = gStateKeys[i];\n        const value = gState.get(key);\n        switch (key) {\n          case \"Type\":\n            break;\n          case \"LW\":\n          case \"LC\":\n          case \"LJ\":\n          case \"ML\":\n          case \"D\":\n          case \"RI\":\n          case \"FL\":\n          case \"CA\":\n          case \"ca\":\n            gStateObj.push([key, value]);\n            break;\n          case \"Font\":\n            promise = promise.then(() => {\n              return this.handleSetFont(\n                resources,\n                null,\n                value[0],\n                operatorList,\n                task,\n                stateManager.state\n              ).then(function(loadedName) {\n                operatorList.addDependency(loadedName);\n                gStateObj.push([key, [loadedName, value[1]]]);\n              });\n            });\n            break;\n          case \"BM\":\n            gStateObj.push([key, normalizeBlendMode(value)]);\n            break;\n          case \"SMask\":\n            if (isName(value, \"None\")) {\n              gStateObj.push([key, false]);\n              break;\n            }\n            if (isDict(value)) {\n              promise = promise.then(() => {\n                return this.handleSMask(\n                  value,\n                  resources,\n                  operatorList,\n                  task,\n                  stateManager\n                );\n              });\n              gStateObj.push([key, true]);\n            } else {\n              warn(\"Unsupported SMask type\");\n            }\n\n            break;\n          // Only generate info log messages for the following since\n          // they are unlikely to have a big impact on the rendering.\n          case \"OP\":\n          case \"op\":\n          case \"OPM\":\n          case \"BG\":\n          case \"BG2\":\n          case \"UCR\":\n          case \"UCR2\":\n          case \"TR\":\n          case \"TR2\":\n          case \"HT\":\n          case \"SM\":\n          case \"SA\":\n          case \"AIS\":\n          case \"TK\":\n            // TODO implement these operators.\n            info(\"graphic state operator \" + key);\n            break;\n          default:\n            info(\"Unknown graphic state operator \" + key);\n            break;\n        }\n      }\n      return promise.then(function() {\n        if (gStateObj.length > 0) {\n          operatorList.addOp(OPS.setGState, [gStateObj]);\n        }\n      });\n    },\n\n    loadFont: function PartialEvaluator_loadFont(fontName, font, resources) {\n      function errorFont() {\n        return Promise.resolve(\n          new TranslatedFont(\n            \"g_font_error\",\n            new ErrorFont(\"Font \" + fontName + \" is not available\"),\n            font\n          )\n        );\n      }\n\n      var fontRef,\n        xref = this.xref;\n      if (font) {\n        // Loading by ref.\n        if (!isRef(font)) {\n          throw new FormatError('The \"font\" object should be a reference.');\n        }\n        fontRef = font;\n      } else {\n        // Loading by name.\n        var fontRes = resources.get(\"Font\");\n        if (fontRes) {\n          fontRef = fontRes.getRaw(fontName);\n        }\n      }\n      if (!fontRef) {\n        const partialMsg = `Font \"${fontName ||\n          (font && font.toString())}\" is not available`;\n\n        if (!this.options.ignoreErrors && !this.parsingType3Font) {\n          warn(`${partialMsg}.`);\n          return errorFont();\n        }\n        // Font not found -- sending unsupported feature notification.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.font,\n        });\n        warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n        // Falling back to a default font to avoid completely broken rendering,\n        // but note that there're no guarantees that things will look \"correct\".\n        fontRef = PartialEvaluator.getFallbackFontDict();\n      }\n\n      if (this.fontCache.has(fontRef)) {\n        return this.fontCache.get(fontRef);\n      }\n\n      font = xref.fetchIfRef(fontRef);\n      if (!isDict(font)) {\n        return errorFont();\n      }\n\n      // We are holding `font.translated` references just for `fontRef`s that\n      // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n      if (font.translated) {\n        return font.translated;\n      }\n\n      var fontCapability = createPromiseCapability();\n\n      var preEvaluatedFont = this.preEvaluateFont(font);\n      const { descriptor, hash } = preEvaluatedFont;\n\n      var fontRefIsRef = isRef(fontRef),\n        fontID;\n      if (fontRefIsRef) {\n        fontID = fontRef.toString();\n      }\n\n      if (hash && isDict(descriptor)) {\n        if (!descriptor.fontAliases) {\n          descriptor.fontAliases = Object.create(null);\n        }\n        var fontAliases = descriptor.fontAliases;\n\n        if (fontAliases[hash]) {\n          var aliasFontRef = fontAliases[hash].aliasRef;\n          if (\n            fontRefIsRef &&\n            aliasFontRef &&\n            this.fontCache.has(aliasFontRef)\n          ) {\n            this.fontCache.putAlias(fontRef, aliasFontRef);\n            return this.fontCache.get(fontRef);\n          }\n        } else {\n          fontAliases[hash] = {\n            fontID: Font.getFontID(),\n          };\n        }\n\n        if (fontRefIsRef) {\n          fontAliases[hash].aliasRef = fontRef;\n        }\n        fontID = fontAliases[hash].fontID;\n      }\n\n      // Workaround for bad PDF generators that reference fonts incorrectly,\n      // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n      // In this case we should not put the font into `this.fontCache` (which is\n      // a `RefSetCache`), since it's not meaningful to use a `Dict` as a key.\n      //\n      // However, if we don't cache the font it's not possible to remove it\n      // when `cleanup` is triggered from the API, which causes issues on\n      // subsequent rendering operations (see issue7403.pdf).\n      // A simple workaround would be to just not hold `font.translated`\n      // references in this case, but this would force us to unnecessarily load\n      // the same fonts over and over.\n      //\n      // Instead, we cheat a bit by attempting to use a modified `fontID` as a\n      // key in `this.fontCache`, to allow the font to be cached.\n      // NOTE: This works because `RefSetCache` calls `toString()` on provided\n      //       keys. Also, since `fontRef` is used when getting cached fonts,\n      //       we'll not accidentally match fonts cached with the `fontID`.\n      if (fontRefIsRef) {\n        this.fontCache.put(fontRef, fontCapability.promise);\n      } else {\n        if (!fontID) {\n          fontID = this.idFactory.createObjId();\n        }\n        this.fontCache.put(`id_${fontID}`, fontCapability.promise);\n      }\n      assert(fontID, 'The \"fontID\" must be defined.');\n\n      // Keep track of each font we translated so the caller can\n      // load them asynchronously before calling display on a page.\n      font.loadedName = `${this.idFactory.getDocId()}_f${fontID}`;\n\n      font.translated = fontCapability.promise;\n\n      // TODO move promises into translate font\n      var translatedPromise;\n      try {\n        translatedPromise = this.translateFont(preEvaluatedFont);\n      } catch (e) {\n        translatedPromise = Promise.reject(e);\n      }\n\n      translatedPromise\n        .then(function(translatedFont) {\n          if (translatedFont.fontType !== undefined) {\n            var xrefFontStats = xref.stats.fontTypes;\n            xrefFontStats[translatedFont.fontType] = true;\n          }\n\n          fontCapability.resolve(\n            new TranslatedFont(font.loadedName, translatedFont, font)\n          );\n        })\n        .catch(reason => {\n          // TODO fontCapability.reject?\n          // Error in the font data -- sending unsupported feature notification.\n          this.handler.send(\"UnsupportedFeature\", {\n            featureId: UNSUPPORTED_FEATURES.font,\n          });\n\n          try {\n            // error, but it's still nice to have font type reported\n            var fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n            var subtype = fontFile3 && fontFile3.get(\"Subtype\");\n            var fontType = getFontType(\n              preEvaluatedFont.type,\n              subtype && subtype.name\n            );\n            var xrefFontStats = xref.stats.fontTypes;\n            xrefFontStats[fontType] = true;\n          } catch (ex) {}\n\n          fontCapability.resolve(\n            new TranslatedFont(\n              font.loadedName,\n              new ErrorFont(reason instanceof Error ? reason.message : reason),\n              font\n            )\n          );\n        });\n      return fontCapability.promise;\n    },\n\n    buildPath(operatorList, fn, args, parsingText = false) {\n      var lastIndex = operatorList.length - 1;\n      if (!args) {\n        args = [];\n      }\n      if (\n        lastIndex < 0 ||\n        operatorList.fnArray[lastIndex] !== OPS.constructPath\n      ) {\n        // Handle corrupt PDF documents that contains path operators inside of\n        // text objects, which may shift subsequent text, by enclosing the path\n        // operator in save/restore operators (fixes issue10542_reduced.pdf).\n        //\n        // Note that this will effectively disable the optimization in the\n        // `else` branch below, but given that this type of corruption is\n        // *extremely* rare that shouldn't really matter much in practice.\n        if (parsingText) {\n          warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n          operatorList.addOp(OPS.save, null);\n        }\n\n        operatorList.addOp(OPS.constructPath, [[fn], args]);\n\n        if (parsingText) {\n          operatorList.addOp(OPS.restore, null);\n        }\n      } else {\n        var opArgs = operatorList.argsArray[lastIndex];\n        opArgs[0].push(fn);\n        Array.prototype.push.apply(opArgs[1], args);\n      }\n    },\n\n    parseColorSpace({ cs, resources }) {\n      return new Promise(resolve => {\n        resolve(\n          ColorSpace.parse(cs, this.xref, resources, this.pdfFunctionFactory)\n        );\n      }).catch(reason => {\n        if (reason instanceof AbortException) {\n          return null;\n        }\n        if (this.options.ignoreErrors) {\n          // Error(s) in the ColorSpace -- sending unsupported feature\n          // notification and allow rendering to continue.\n          this.handler.send(\"UnsupportedFeature\", {\n            featureId: UNSUPPORTED_FEATURES.unknown,\n          });\n          warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n          return null;\n        }\n        throw reason;\n      });\n    },\n\n    async handleColorN(operatorList, fn, args, cs, patterns, resources, task) {\n      // compile tiling patterns\n      var patternName = args[args.length - 1];\n      // SCN/scn applies patterns along with normal colors\n      var pattern;\n      if (isName(patternName) && (pattern = patterns.get(patternName.name))) {\n        var dict = isStream(pattern) ? pattern.dict : pattern;\n        var typeNum = dict.get(\"PatternType\");\n\n        if (typeNum === TILING_PATTERN) {\n          var color = cs.base ? cs.base.getRgb(args, 0) : null;\n          return this.handleTilingType(\n            fn,\n            color,\n            resources,\n            pattern,\n            dict,\n            operatorList,\n            task\n          );\n        } else if (typeNum === SHADING_PATTERN) {\n          var shading = dict.get(\"Shading\");\n          var matrix = dict.getArray(\"Matrix\");\n          pattern = Pattern.parseShading(\n            shading,\n            matrix,\n            this.xref,\n            resources,\n            this.handler,\n            this.pdfFunctionFactory\n          );\n          operatorList.addOp(fn, pattern.getIR());\n          return undefined;\n        }\n        throw new FormatError(`Unknown PatternType: ${typeNum}`);\n      }\n      throw new FormatError(`Unknown PatternName: ${patternName}`);\n    },\n\n    getOperatorList({\n      stream,\n      task,\n      resources,\n      operatorList,\n      initialState = null,\n    }) {\n      // Ensure that `resources`/`initialState` is correctly initialized,\n      // even if the provided parameter is e.g. `null`.\n      resources = resources || Dict.empty;\n      initialState = initialState || new EvalState();\n\n      if (!operatorList) {\n        throw new Error('getOperatorList: missing \"operatorList\" parameter');\n      }\n\n      var self = this;\n      var xref = this.xref;\n      let parsingText = false;\n      var imageCache = Object.create(null);\n\n      var xobjs = resources.get(\"XObject\") || Dict.empty;\n      var patterns = resources.get(\"Pattern\") || Dict.empty;\n      var stateManager = new StateManager(initialState);\n      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n      var timeSlotManager = new TimeSlotManager();\n\n      function closePendingRestoreOPS(argument) {\n        for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n          operatorList.addOp(OPS.restore, []);\n        }\n      }\n\n      return new Promise(function promiseBody(resolve, reject) {\n        const next = function(promise) {\n          Promise.all([promise, operatorList.ready]).then(function() {\n            try {\n              promiseBody(resolve, reject);\n            } catch (ex) {\n              reject(ex);\n            }\n          }, reject);\n        };\n        task.ensureNotTerminated();\n        timeSlotManager.reset();\n        var stop,\n          operation = {},\n          i,\n          ii,\n          cs;\n        while (!(stop = timeSlotManager.check())) {\n          // The arguments parsed by read() are used beyond this loop, so we\n          // cannot reuse the same array on each iteration. Therefore we pass\n          // in |null| as the initial value (see the comment on\n          // EvaluatorPreprocessor_read() for why).\n          operation.args = null;\n          if (!preprocessor.read(operation)) {\n            break;\n          }\n          var args = operation.args;\n          var fn = operation.fn;\n\n          switch (fn | 0) {\n            case OPS.paintXObject:\n              // eagerly compile XForm objects\n              var name = args[0].name;\n              if (name && imageCache[name] !== undefined) {\n                operatorList.addOp(imageCache[name].fn, imageCache[name].args);\n                args = null;\n                continue;\n              }\n\n              next(\n                new Promise(function(resolveXObject, rejectXObject) {\n                  if (!name) {\n                    throw new FormatError(\n                      \"XObject must be referred to by name.\"\n                    );\n                  }\n\n                  const xobj = xobjs.get(name);\n                  if (!xobj) {\n                    operatorList.addOp(fn, args);\n                    resolveXObject();\n                    return;\n                  }\n                  if (!isStream(xobj)) {\n                    throw new FormatError(\"XObject should be a stream\");\n                  }\n\n                  const type = xobj.dict.get(\"Subtype\");\n                  if (!isName(type)) {\n                    throw new FormatError(\"XObject should have a Name subtype\");\n                  }\n\n                  if (type.name === \"Form\") {\n                    stateManager.save();\n                    self\n                      .buildFormXObject(\n                        resources,\n                        xobj,\n                        null,\n                        operatorList,\n                        task,\n                        stateManager.state.clone()\n                      )\n                      .then(function() {\n                        stateManager.restore();\n                        resolveXObject();\n                      }, rejectXObject);\n                    return;\n                  } else if (type.name === \"Image\") {\n                    self\n                      .buildPaintImageXObject({\n                        resources,\n                        image: xobj,\n                        operatorList,\n                        cacheKey: name,\n                        imageCache,\n                      })\n                      .then(resolveXObject, rejectXObject);\n                    return;\n                  } else if (type.name === \"PS\") {\n                    // PostScript XObjects are unused when viewing documents.\n                    // See section 4.7.1 of Adobe's PDF reference.\n                    info(\"Ignored XObject subtype PS\");\n                  } else {\n                    throw new FormatError(\n                      `Unhandled XObject subtype ${type.name}`\n                    );\n                  }\n                  resolveXObject();\n                }).catch(function(reason) {\n                  if (reason instanceof AbortException) {\n                    return;\n                  }\n                  if (self.options.ignoreErrors) {\n                    // Error(s) in the XObject -- sending unsupported feature\n                    // notification and allow rendering to continue.\n                    self.handler.send(\"UnsupportedFeature\", {\n                      featureId: UNSUPPORTED_FEATURES.unknown,\n                    });\n                    warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n                    return;\n                  }\n                  throw reason;\n                })\n              );\n              return;\n            case OPS.setFont:\n              var fontSize = args[1];\n              // eagerly collect all fonts\n              next(\n                self\n                  .handleSetFont(\n                    resources,\n                    args,\n                    null,\n                    operatorList,\n                    task,\n                    stateManager.state\n                  )\n                  .then(function(loadedName) {\n                    operatorList.addDependency(loadedName);\n                    operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n                  })\n              );\n              return;\n            case OPS.beginText:\n              parsingText = true;\n              break;\n            case OPS.endText:\n              parsingText = false;\n              break;\n            case OPS.endInlineImage:\n              var cacheKey = args[0].cacheKey;\n              if (cacheKey) {\n                var cacheEntry = imageCache[cacheKey];\n                if (cacheEntry !== undefined) {\n                  operatorList.addOp(cacheEntry.fn, cacheEntry.args);\n                  args = null;\n                  continue;\n                }\n              }\n              next(\n                self.buildPaintImageXObject({\n                  resources,\n                  image: args[0],\n                  isInline: true,\n                  operatorList,\n                  cacheKey,\n                  imageCache,\n                })\n              );\n              return;\n            case OPS.showText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              args[0] = self.handleText(args[0], stateManager.state);\n              break;\n            case OPS.showSpacedText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              var arr = args[0];\n              var combinedGlyphs = [];\n              var arrLength = arr.length;\n              var state = stateManager.state;\n              for (i = 0; i < arrLength; ++i) {\n                var arrItem = arr[i];\n                if (isString(arrItem)) {\n                  Array.prototype.push.apply(\n                    combinedGlyphs,\n                    self.handleText(arrItem, state)\n                  );\n                } else if (isNum(arrItem)) {\n                  combinedGlyphs.push(arrItem);\n                }\n              }\n              args[0] = combinedGlyphs;\n              fn = OPS.showText;\n              break;\n            case OPS.nextLineShowText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              operatorList.addOp(OPS.nextLine);\n              args[0] = self.handleText(args[0], stateManager.state);\n              fn = OPS.showText;\n              break;\n            case OPS.nextLineSetSpacingShowText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              operatorList.addOp(OPS.nextLine);\n              operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n              operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n              args[0] = self.handleText(args[0], stateManager.state);\n              fn = OPS.showText;\n              break;\n            case OPS.setTextRenderingMode:\n              stateManager.state.textRenderingMode = args[0];\n              break;\n\n            case OPS.setFillColorSpace:\n              next(\n                self\n                  .parseColorSpace({\n                    cs: args[0],\n                    resources,\n                  })\n                  .then(function(colorSpace) {\n                    if (colorSpace) {\n                      stateManager.state.fillColorSpace = colorSpace;\n                    }\n                  })\n              );\n              return;\n            case OPS.setStrokeColorSpace:\n              next(\n                self\n                  .parseColorSpace({\n                    cs: args[0],\n                    resources,\n                  })\n                  .then(function(colorSpace) {\n                    if (colorSpace) {\n                      stateManager.state.strokeColorSpace = colorSpace;\n                    }\n                  })\n              );\n              return;\n            case OPS.setFillColor:\n              cs = stateManager.state.fillColorSpace;\n              args = cs.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeColor:\n              cs = stateManager.state.strokeColorSpace;\n              args = cs.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n            case OPS.setFillGray:\n              stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n              args = ColorSpace.singletons.gray.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeGray:\n              stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n              args = ColorSpace.singletons.gray.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n            case OPS.setFillCMYKColor:\n              stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n              args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeCMYKColor:\n              stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n              args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n            case OPS.setFillRGBColor:\n              stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n              args = ColorSpace.singletons.rgb.getRgb(args, 0);\n              break;\n            case OPS.setStrokeRGBColor:\n              stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n              args = ColorSpace.singletons.rgb.getRgb(args, 0);\n              break;\n            case OPS.setFillColorN:\n              cs = stateManager.state.fillColorSpace;\n              if (cs.name === \"Pattern\") {\n                next(\n                  self.handleColorN(\n                    operatorList,\n                    OPS.setFillColorN,\n                    args,\n                    cs,\n                    patterns,\n                    resources,\n                    task\n                  )\n                );\n                return;\n              }\n              args = cs.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeColorN:\n              cs = stateManager.state.strokeColorSpace;\n              if (cs.name === \"Pattern\") {\n                next(\n                  self.handleColorN(\n                    operatorList,\n                    OPS.setStrokeColorN,\n                    args,\n                    cs,\n                    patterns,\n                    resources,\n                    task\n                  )\n                );\n                return;\n              }\n              args = cs.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n\n            case OPS.shadingFill:\n              var shadingRes = resources.get(\"Shading\");\n              if (!shadingRes) {\n                throw new FormatError(\"No shading resource found\");\n              }\n\n              var shading = shadingRes.get(args[0].name);\n              if (!shading) {\n                throw new FormatError(\"No shading object found\");\n              }\n\n              var shadingFill = Pattern.parseShading(\n                shading,\n                null,\n                xref,\n                resources,\n                self.handler,\n                self.pdfFunctionFactory\n              );\n              var patternIR = shadingFill.getIR();\n              args = [patternIR];\n              fn = OPS.shadingFill;\n              break;\n            case OPS.setGState:\n              var dictName = args[0];\n              var extGState = resources.get(\"ExtGState\");\n\n              if (!isDict(extGState) || !extGState.has(dictName.name)) {\n                break;\n              }\n\n              var gState = extGState.get(dictName.name);\n              next(\n                self.setGState(\n                  resources,\n                  gState,\n                  operatorList,\n                  task,\n                  stateManager\n                )\n              );\n              return;\n            case OPS.moveTo:\n            case OPS.lineTo:\n            case OPS.curveTo:\n            case OPS.curveTo2:\n            case OPS.curveTo3:\n            case OPS.closePath:\n            case OPS.rectangle:\n              self.buildPath(operatorList, fn, args, parsingText);\n              continue;\n            case OPS.markPoint:\n            case OPS.markPointProps:\n            case OPS.beginMarkedContent:\n            case OPS.beginMarkedContentProps:\n            case OPS.endMarkedContent:\n            case OPS.beginCompat:\n            case OPS.endCompat:\n              // Ignore operators where the corresponding handlers are known to\n              // be no-op in CanvasGraphics (display/canvas.js). This prevents\n              // serialization errors and is also a bit more efficient.\n              // We could also try to serialize all objects in a general way,\n              // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n              // but doing so is meaningless without knowing the semantics.\n              continue;\n            default:\n              // Note: Ignore the operator if it has `Dict` arguments, since\n              // those are non-serializable, otherwise postMessage will throw\n              // \"An object could not be cloned.\".\n              if (args !== null) {\n                for (i = 0, ii = args.length; i < ii; i++) {\n                  if (args[i] instanceof Dict) {\n                    break;\n                  }\n                }\n                if (i < ii) {\n                  warn(\"getOperatorList - ignoring operator: \" + fn);\n                  continue;\n                }\n              }\n          }\n          operatorList.addOp(fn, args);\n        }\n        if (stop) {\n          next(deferred);\n          return;\n        }\n        // Some PDFs don't close all restores inside object/form.\n        // Closing those for them.\n        closePendingRestoreOPS();\n        resolve();\n      }).catch(reason => {\n        if (reason instanceof AbortException) {\n          return;\n        }\n        if (this.options.ignoreErrors) {\n          // Error(s) in the OperatorList -- sending unsupported feature\n          // notification and allow rendering to continue.\n          this.handler.send(\"UnsupportedFeature\", {\n            featureId: UNSUPPORTED_FEATURES.unknown,\n          });\n          warn(\n            `getOperatorList - ignoring errors during \"${task.name}\" ` +\n              `task: \"${reason}\".`\n          );\n\n          closePendingRestoreOPS();\n          return;\n        }\n        throw reason;\n      });\n    },\n\n    getTextContent({\n      stream,\n      task,\n      resources,\n      stateManager = null,\n      normalizeWhitespace = false,\n      combineTextItems = false,\n      sink,\n      seenStyles = Object.create(null),\n    }) {\n      // Ensure that `resources`/`stateManager` is correctly initialized,\n      // even if the provided parameter is e.g. `null`.\n      resources = resources || Dict.empty;\n      stateManager = stateManager || new StateManager(new TextState());\n\n      var WhitespaceRegexp = /\\s/g;\n\n      var textContent = {\n        items: [],\n        styles: Object.create(null),\n      };\n      var textContentItem = {\n        initialized: false,\n        str: [],\n        width: 0,\n        height: 0,\n        vertical: false,\n        lastAdvanceWidth: 0,\n        lastAdvanceHeight: 0,\n        textAdvanceScale: 0,\n        spaceWidth: 0,\n        fakeSpaceMin: Infinity,\n        fakeMultiSpaceMin: Infinity,\n        fakeMultiSpaceMax: -0,\n        textRunBreakAllowed: false,\n        transform: null,\n        fontName: null,\n      };\n      var SPACE_FACTOR = 0.3;\n      var MULTI_SPACE_FACTOR = 1.5;\n      var MULTI_SPACE_FACTOR_MAX = 4;\n\n      var self = this;\n      var xref = this.xref;\n\n      // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n      var xobjs = null;\n      var skipEmptyXObjs = Object.create(null);\n\n      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n      var textState;\n\n      function ensureTextContentItem() {\n        if (textContentItem.initialized) {\n          return textContentItem;\n        }\n        var font = textState.font;\n        if (!(font.loadedName in seenStyles)) {\n          seenStyles[font.loadedName] = true;\n          textContent.styles[font.loadedName] = {\n            fontFamily: font.fallbackName,\n            ascent: font.ascent,\n            descent: font.descent,\n            vertical: !!font.vertical,\n          };\n        }\n        textContentItem.fontName = font.loadedName;\n\n        // 9.4.4 Text Space Details\n        var tsm = [\n          textState.fontSize * textState.textHScale,\n          0,\n          0,\n          textState.fontSize,\n          0,\n          textState.textRise,\n        ];\n\n        if (\n          font.isType3Font &&\n          textState.fontSize <= 1 &&\n          !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n        ) {\n          const glyphHeight = font.bbox[3] - font.bbox[1];\n          if (glyphHeight > 0) {\n            tsm[3] *= glyphHeight * textState.fontMatrix[3];\n          }\n        }\n\n        var trm = Util.transform(\n          textState.ctm,\n          Util.transform(textState.textMatrix, tsm)\n        );\n        textContentItem.transform = trm;\n        if (!font.vertical) {\n          textContentItem.width = 0;\n          textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);\n          textContentItem.vertical = false;\n        } else {\n          textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);\n          textContentItem.height = 0;\n          textContentItem.vertical = true;\n        }\n\n        var a = textState.textLineMatrix[0];\n        var b = textState.textLineMatrix[1];\n        var scaleLineX = Math.sqrt(a * a + b * b);\n        a = textState.ctm[0];\n        b = textState.ctm[1];\n        var scaleCtmX = Math.sqrt(a * a + b * b);\n        textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n        textContentItem.lastAdvanceWidth = 0;\n        textContentItem.lastAdvanceHeight = 0;\n\n        var spaceWidth = (font.spaceWidth / 1000) * textState.fontSize;\n        if (spaceWidth) {\n          textContentItem.spaceWidth = spaceWidth;\n          textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;\n          textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;\n          textContentItem.fakeMultiSpaceMax =\n            spaceWidth * MULTI_SPACE_FACTOR_MAX;\n          // It's okay for monospace fonts to fake as much space as needed.\n          textContentItem.textRunBreakAllowed = !font.isMonospace;\n        } else {\n          textContentItem.spaceWidth = 0;\n          textContentItem.fakeSpaceMin = Infinity;\n          textContentItem.fakeMultiSpaceMin = Infinity;\n          textContentItem.fakeMultiSpaceMax = 0;\n          textContentItem.textRunBreakAllowed = false;\n        }\n\n        textContentItem.initialized = true;\n        return textContentItem;\n      }\n\n      function replaceWhitespace(str) {\n        // Replaces all whitespaces with standard spaces (0x20), to avoid\n        // alignment issues between the textLayer and the canvas if the text\n        // contains e.g. tabs (fixes issue6612.pdf).\n        var i = 0,\n          ii = str.length,\n          code;\n        while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {\n          i++;\n        }\n        return i < ii ? str.replace(WhitespaceRegexp, \" \") : str;\n      }\n\n      function runBidiTransform(textChunk) {\n        var str = textChunk.str.join(\"\");\n        var bidiResult = bidi(str, -1, textChunk.vertical);\n        return {\n          str: normalizeWhitespace\n            ? replaceWhitespace(bidiResult.str)\n            : bidiResult.str,\n          dir: bidiResult.dir,\n          width: textChunk.width,\n          height: textChunk.height,\n          transform: textChunk.transform,\n          fontName: textChunk.fontName,\n        };\n      }\n\n      function handleSetFont(fontName, fontRef) {\n        return self\n          .loadFont(fontName, fontRef, resources)\n          .then(function(translated) {\n            textState.font = translated.font;\n            textState.fontMatrix =\n              translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n          });\n      }\n\n      function buildTextContentItem(chars) {\n        var font = textState.font;\n        var textChunk = ensureTextContentItem();\n        var width = 0;\n        var height = 0;\n        var glyphs = font.charsToGlyphs(chars);\n        for (var i = 0; i < glyphs.length; i++) {\n          var glyph = glyphs[i];\n          var glyphWidth = null;\n          if (font.vertical && glyph.vmetric) {\n            glyphWidth = glyph.vmetric[0];\n          } else {\n            glyphWidth = glyph.width;\n          }\n\n          var glyphUnicode = glyph.unicode;\n          var NormalizedUnicodes = getNormalizedUnicodes();\n          if (NormalizedUnicodes[glyphUnicode] !== undefined) {\n            glyphUnicode = NormalizedUnicodes[glyphUnicode];\n          }\n          glyphUnicode = reverseIfRtl(glyphUnicode);\n\n          var charSpacing = textState.charSpacing;\n          if (glyph.isSpace) {\n            var wordSpacing = textState.wordSpacing;\n            charSpacing += wordSpacing;\n            if (wordSpacing > 0) {\n              addFakeSpaces(wordSpacing, textChunk.str);\n            }\n          }\n\n          var tx = 0;\n          var ty = 0;\n          if (!font.vertical) {\n            var w0 = glyphWidth * textState.fontMatrix[0];\n            tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;\n            width += tx;\n          } else {\n            var w1 = glyphWidth * textState.fontMatrix[0];\n            ty = w1 * textState.fontSize + charSpacing;\n            height += ty;\n          }\n          textState.translateTextMatrix(tx, ty);\n\n          textChunk.str.push(glyphUnicode);\n        }\n\n        if (!font.vertical) {\n          textChunk.lastAdvanceWidth = width;\n          textChunk.width += width;\n        } else {\n          textChunk.lastAdvanceHeight = height;\n          textChunk.height += Math.abs(height);\n        }\n\n        return textChunk;\n      }\n\n      function addFakeSpaces(width, strBuf) {\n        if (width < textContentItem.fakeSpaceMin) {\n          return;\n        }\n        if (width < textContentItem.fakeMultiSpaceMin) {\n          strBuf.push(\" \");\n          return;\n        }\n        var fakeSpaces = Math.round(width / textContentItem.spaceWidth);\n        while (fakeSpaces-- > 0) {\n          strBuf.push(\" \");\n        }\n      }\n\n      function flushTextContentItem() {\n        if (!textContentItem.initialized) {\n          return;\n        }\n\n        // Do final text scaling.\n        if (!textContentItem.vertical) {\n          textContentItem.width *= textContentItem.textAdvanceScale;\n        } else {\n          textContentItem.height *= textContentItem.textAdvanceScale;\n        }\n        textContent.items.push(runBidiTransform(textContentItem));\n\n        textContentItem.initialized = false;\n        textContentItem.str.length = 0;\n      }\n\n      function enqueueChunk() {\n        const length = textContent.items.length;\n        if (length > 0) {\n          sink.enqueue(textContent, length);\n          textContent.items = [];\n          textContent.styles = Object.create(null);\n        }\n      }\n\n      var timeSlotManager = new TimeSlotManager();\n\n      return new Promise(function promiseBody(resolve, reject) {\n        const next = function(promise) {\n          enqueueChunk();\n          Promise.all([promise, sink.ready]).then(function() {\n            try {\n              promiseBody(resolve, reject);\n            } catch (ex) {\n              reject(ex);\n            }\n          }, reject);\n        };\n        task.ensureNotTerminated();\n        timeSlotManager.reset();\n        var stop,\n          operation = {},\n          args = [];\n        while (!(stop = timeSlotManager.check())) {\n          // The arguments parsed by read() are not used beyond this loop, so\n          // we can reuse the same array on every iteration, thus avoiding\n          // unnecessary allocations.\n          args.length = 0;\n          operation.args = args;\n          if (!preprocessor.read(operation)) {\n            break;\n          }\n          textState = stateManager.state;\n          var fn = operation.fn;\n          args = operation.args;\n          var advance, diff;\n\n          switch (fn | 0) {\n            case OPS.setFont:\n              // Optimization to ignore multiple identical Tf commands.\n              var fontNameArg = args[0].name,\n                fontSizeArg = args[1];\n              if (\n                textState.font &&\n                fontNameArg === textState.fontName &&\n                fontSizeArg === textState.fontSize\n              ) {\n                break;\n              }\n\n              flushTextContentItem();\n              textState.fontName = fontNameArg;\n              textState.fontSize = fontSizeArg;\n              next(handleSetFont(fontNameArg, null));\n              return;\n            case OPS.setTextRise:\n              flushTextContentItem();\n              textState.textRise = args[0];\n              break;\n            case OPS.setHScale:\n              flushTextContentItem();\n              textState.textHScale = args[0] / 100;\n              break;\n            case OPS.setLeading:\n              flushTextContentItem();\n              textState.leading = args[0];\n              break;\n            case OPS.moveText:\n              // Optimization to treat same line movement as advance\n              var isSameTextLine = !textState.font\n                ? false\n                : (textState.font.vertical ? args[0] : args[1]) === 0;\n              advance = args[0] - args[1];\n              if (\n                combineTextItems &&\n                isSameTextLine &&\n                textContentItem.initialized &&\n                advance > 0 &&\n                advance <= textContentItem.fakeMultiSpaceMax\n              ) {\n                textState.translateTextLineMatrix(args[0], args[1]);\n                textContentItem.width +=\n                  args[0] - textContentItem.lastAdvanceWidth;\n                textContentItem.height +=\n                  args[1] - textContentItem.lastAdvanceHeight;\n                diff =\n                  args[0] -\n                  textContentItem.lastAdvanceWidth -\n                  (args[1] - textContentItem.lastAdvanceHeight);\n                addFakeSpaces(diff, textContentItem.str);\n                break;\n              }\n\n              flushTextContentItem();\n              textState.translateTextLineMatrix(args[0], args[1]);\n              textState.textMatrix = textState.textLineMatrix.slice();\n              break;\n            case OPS.setLeadingMoveText:\n              flushTextContentItem();\n              textState.leading = -args[1];\n              textState.translateTextLineMatrix(args[0], args[1]);\n              textState.textMatrix = textState.textLineMatrix.slice();\n              break;\n            case OPS.nextLine:\n              flushTextContentItem();\n              textState.carriageReturn();\n              break;\n            case OPS.setTextMatrix:\n              // Optimization to treat same line movement as advance.\n              advance = textState.calcTextLineMatrixAdvance(\n                args[0],\n                args[1],\n                args[2],\n                args[3],\n                args[4],\n                args[5]\n              );\n              if (\n                combineTextItems &&\n                advance !== null &&\n                textContentItem.initialized &&\n                advance.value > 0 &&\n                advance.value <= textContentItem.fakeMultiSpaceMax\n              ) {\n                textState.translateTextLineMatrix(\n                  advance.width,\n                  advance.height\n                );\n                textContentItem.width +=\n                  advance.width - textContentItem.lastAdvanceWidth;\n                textContentItem.height +=\n                  advance.height - textContentItem.lastAdvanceHeight;\n                diff =\n                  advance.width -\n                  textContentItem.lastAdvanceWidth -\n                  (advance.height - textContentItem.lastAdvanceHeight);\n                addFakeSpaces(diff, textContentItem.str);\n                break;\n              }\n\n              flushTextContentItem();\n              textState.setTextMatrix(\n                args[0],\n                args[1],\n                args[2],\n                args[3],\n                args[4],\n                args[5]\n              );\n              textState.setTextLineMatrix(\n                args[0],\n                args[1],\n                args[2],\n                args[3],\n                args[4],\n                args[5]\n              );\n              break;\n            case OPS.setCharSpacing:\n              textState.charSpacing = args[0];\n              break;\n            case OPS.setWordSpacing:\n              textState.wordSpacing = args[0];\n              break;\n            case OPS.beginText:\n              flushTextContentItem();\n              textState.textMatrix = IDENTITY_MATRIX.slice();\n              textState.textLineMatrix = IDENTITY_MATRIX.slice();\n              break;\n            case OPS.showSpacedText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              var items = args[0];\n              var offset;\n              for (var j = 0, jj = items.length; j < jj; j++) {\n                if (typeof items[j] === \"string\") {\n                  buildTextContentItem(items[j]);\n                } else if (isNum(items[j])) {\n                  ensureTextContentItem();\n\n                  // PDF Specification 5.3.2 states:\n                  // The number is expressed in thousandths of a unit of text\n                  // space.\n                  // This amount is subtracted from the current horizontal or\n                  // vertical coordinate, depending on the writing mode.\n                  // In the default coordinate system, a positive adjustment\n                  // has the effect of moving the next glyph painted either to\n                  // the left or down by the given amount.\n                  advance = (items[j] * textState.fontSize) / 1000;\n                  var breakTextRun = false;\n                  if (textState.font.vertical) {\n                    offset = advance;\n                    textState.translateTextMatrix(0, offset);\n                    breakTextRun =\n                      textContentItem.textRunBreakAllowed &&\n                      advance > textContentItem.fakeMultiSpaceMax;\n                    if (!breakTextRun) {\n                      // Value needs to be added to height to paint down.\n                      textContentItem.height += offset;\n                    }\n                  } else {\n                    advance = -advance;\n                    offset = advance * textState.textHScale;\n                    textState.translateTextMatrix(offset, 0);\n                    breakTextRun =\n                      textContentItem.textRunBreakAllowed &&\n                      advance > textContentItem.fakeMultiSpaceMax;\n                    if (!breakTextRun) {\n                      // Value needs to be subtracted from width to paint left.\n                      textContentItem.width += offset;\n                    }\n                  }\n                  if (breakTextRun) {\n                    flushTextContentItem();\n                  } else if (advance > 0) {\n                    addFakeSpaces(advance, textContentItem.str);\n                  }\n                }\n              }\n              break;\n            case OPS.showText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              buildTextContentItem(args[0]);\n              break;\n            case OPS.nextLineShowText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              flushTextContentItem();\n              textState.carriageReturn();\n              buildTextContentItem(args[0]);\n              break;\n            case OPS.nextLineSetSpacingShowText:\n              if (!stateManager.state.font) {\n                self.ensureStateFont(stateManager.state);\n                continue;\n              }\n              flushTextContentItem();\n              textState.wordSpacing = args[0];\n              textState.charSpacing = args[1];\n              textState.carriageReturn();\n              buildTextContentItem(args[2]);\n              break;\n            case OPS.paintXObject:\n              flushTextContentItem();\n              if (!xobjs) {\n                xobjs = resources.get(\"XObject\") || Dict.empty;\n              }\n\n              var name = args[0].name;\n              if (name && skipEmptyXObjs[name] !== undefined) {\n                break;\n              }\n\n              next(\n                new Promise(function(resolveXObject, rejectXObject) {\n                  if (!name) {\n                    throw new FormatError(\n                      \"XObject must be referred to by name.\"\n                    );\n                  }\n\n                  const xobj = xobjs.get(name);\n                  if (!xobj) {\n                    resolveXObject();\n                    return;\n                  }\n                  if (!isStream(xobj)) {\n                    throw new FormatError(\"XObject should be a stream\");\n                  }\n\n                  const type = xobj.dict.get(\"Subtype\");\n                  if (!isName(type)) {\n                    throw new FormatError(\"XObject should have a Name subtype\");\n                  }\n\n                  if (type.name !== \"Form\") {\n                    skipEmptyXObjs[name] = true;\n                    resolveXObject();\n                    return;\n                  }\n\n                  // Use a new `StateManager` to prevent incorrect positioning\n                  // of textItems *after* the Form XObject, since errors in the\n                  // data can otherwise prevent `restore` operators from\n                  // executing.\n                  // NOTE: Only an issue when `options.ignoreErrors === true`.\n                  const currentState = stateManager.state.clone();\n                  const xObjStateManager = new StateManager(currentState);\n\n                  const matrix = xobj.dict.getArray(\"Matrix\");\n                  if (Array.isArray(matrix) && matrix.length === 6) {\n                    xObjStateManager.transform(matrix);\n                  }\n\n                  // Enqueue the `textContent` chunk before parsing the /Form\n                  // XObject.\n                  enqueueChunk();\n                  const sinkWrapper = {\n                    enqueueInvoked: false,\n\n                    enqueue(chunk, size) {\n                      this.enqueueInvoked = true;\n                      sink.enqueue(chunk, size);\n                    },\n\n                    get desiredSize() {\n                      return sink.desiredSize;\n                    },\n\n                    get ready() {\n                      return sink.ready;\n                    },\n                  };\n\n                  self\n                    .getTextContent({\n                      stream: xobj,\n                      task,\n                      resources: xobj.dict.get(\"Resources\") || resources,\n                      stateManager: xObjStateManager,\n                      normalizeWhitespace,\n                      combineTextItems,\n                      sink: sinkWrapper,\n                      seenStyles,\n                    })\n                    .then(function() {\n                      if (!sinkWrapper.enqueueInvoked) {\n                        skipEmptyXObjs[name] = true;\n                      }\n                      resolveXObject();\n                    }, rejectXObject);\n                }).catch(function(reason) {\n                  if (reason instanceof AbortException) {\n                    return;\n                  }\n                  if (self.options.ignoreErrors) {\n                    // Error(s) in the XObject -- allow text-extraction to\n                    // continue.\n                    warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n                    return;\n                  }\n                  throw reason;\n                })\n              );\n              return;\n            case OPS.setGState:\n              flushTextContentItem();\n              var dictName = args[0];\n              var extGState = resources.get(\"ExtGState\");\n\n              if (!isDict(extGState) || !isName(dictName)) {\n                break;\n              }\n              var gState = extGState.get(dictName.name);\n              if (!isDict(gState)) {\n                break;\n              }\n              var gStateFont = gState.get(\"Font\");\n              if (gStateFont) {\n                textState.fontName = null;\n                textState.fontSize = gStateFont[1];\n                next(handleSetFont(null, gStateFont[0]));\n                return;\n              }\n              break;\n          } // switch\n          if (textContent.items.length >= sink.desiredSize) {\n            // Wait for ready, if we reach highWaterMark.\n            stop = true;\n            break;\n          }\n        } // while\n        if (stop) {\n          next(deferred);\n          return;\n        }\n        flushTextContentItem();\n        enqueueChunk();\n        resolve();\n      }).catch(reason => {\n        if (reason instanceof AbortException) {\n          return;\n        }\n        if (this.options.ignoreErrors) {\n          // Error(s) in the TextContent -- allow text-extraction to continue.\n          warn(\n            `getTextContent - ignoring errors during \"${task.name}\" ` +\n              `task: \"${reason}\".`\n          );\n\n          flushTextContentItem();\n          enqueueChunk();\n          return;\n        }\n        throw reason;\n      });\n    },\n\n    extractDataStructures: function PartialEvaluator_extractDataStructures(\n      dict,\n      baseDict,\n      properties\n    ) {\n      const xref = this.xref;\n      let cidToGidBytes;\n      // 9.10.2\n      var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n      var toUnicodePromise = toUnicode\n        ? this.readToUnicode(toUnicode)\n        : Promise.resolve(undefined);\n\n      if (properties.composite) {\n        // CIDSystemInfo helps to match CID to glyphs\n        var cidSystemInfo = dict.get(\"CIDSystemInfo\");\n        if (isDict(cidSystemInfo)) {\n          properties.cidSystemInfo = {\n            registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n            ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n            supplement: cidSystemInfo.get(\"Supplement\"),\n          };\n        }\n\n        var cidToGidMap = dict.get(\"CIDToGIDMap\");\n        if (isStream(cidToGidMap)) {\n          cidToGidBytes = cidToGidMap.getBytes();\n        }\n      }\n\n      // Based on 9.6.6 of the spec the encoding can come from multiple places\n      // and depends on the font type. The base encoding and differences are\n      // read here, but the encoding that is actually used is chosen during\n      // glyph mapping in the font.\n      // TODO: Loading the built in encoding in the font would allow the\n      // differences to be merged in here not require us to hold on to it.\n      var differences = [];\n      var baseEncodingName = null;\n      var encoding;\n      if (dict.has(\"Encoding\")) {\n        encoding = dict.get(\"Encoding\");\n        if (isDict(encoding)) {\n          baseEncodingName = encoding.get(\"BaseEncoding\");\n          baseEncodingName = isName(baseEncodingName)\n            ? baseEncodingName.name\n            : null;\n          // Load the differences between the base and original\n          if (encoding.has(\"Differences\")) {\n            var diffEncoding = encoding.get(\"Differences\");\n            var index = 0;\n            for (var j = 0, jj = diffEncoding.length; j < jj; j++) {\n              var data = xref.fetchIfRef(diffEncoding[j]);\n              if (isNum(data)) {\n                index = data;\n              } else if (isName(data)) {\n                differences[index++] = data.name;\n              } else {\n                throw new FormatError(\n                  `Invalid entry in 'Differences' array: ${data}`\n                );\n              }\n            }\n          }\n        } else if (isName(encoding)) {\n          baseEncodingName = encoding.name;\n        } else {\n          throw new FormatError(\"Encoding is not a Name nor a Dict\");\n        }\n        // According to table 114 if the encoding is a named encoding it must be\n        // one of these predefined encodings.\n        if (\n          baseEncodingName !== \"MacRomanEncoding\" &&\n          baseEncodingName !== \"MacExpertEncoding\" &&\n          baseEncodingName !== \"WinAnsiEncoding\"\n        ) {\n          baseEncodingName = null;\n        }\n      }\n\n      if (baseEncodingName) {\n        properties.defaultEncoding = getEncoding(baseEncodingName).slice();\n      } else {\n        var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n        var isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n        // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n        // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n        // font should use the `StandardEncoding` if no encoding is specified.\n        encoding = StandardEncoding;\n        if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n          encoding = WinAnsiEncoding;\n        }\n        // The Symbolic attribute can be misused for regular fonts\n        // Heuristic: we have to check if the font is a standard one also\n        if (isSymbolicFont) {\n          encoding = MacRomanEncoding;\n          if (!properties.file) {\n            if (/Symbol/i.test(properties.name)) {\n              encoding = SymbolSetEncoding;\n            } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n              encoding = ZapfDingbatsEncoding;\n            }\n          }\n        }\n        properties.defaultEncoding = encoding;\n      }\n\n      properties.differences = differences;\n      properties.baseEncodingName = baseEncodingName;\n      properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n      properties.dict = dict;\n      return toUnicodePromise\n        .then(toUnicode => {\n          properties.toUnicode = toUnicode;\n          return this.buildToUnicode(properties);\n        })\n        .then(toUnicode => {\n          properties.toUnicode = toUnicode;\n          if (cidToGidBytes) {\n            properties.cidToGidMap = this.readCidToGidMap(\n              cidToGidBytes,\n              toUnicode\n            );\n          }\n          return properties;\n        });\n    },\n\n    /**\n     * @returns {ToUnicodeMap}\n     * @private\n     */\n    _buildSimpleFontToUnicode(properties, forceGlyphs = false) {\n      assert(!properties.composite, \"Must be a simple font.\");\n\n      const toUnicode = [];\n      const encoding = properties.defaultEncoding.slice();\n      const baseEncodingName = properties.baseEncodingName;\n      // Merge in the differences array.\n      const differences = properties.differences;\n      for (const charcode in differences) {\n        const glyphName = differences[charcode];\n        if (glyphName === \".notdef\") {\n          // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n          // where there should be spaces (fixes issue5256.pdf).\n          continue;\n        }\n        encoding[charcode] = glyphName;\n      }\n      const glyphsUnicodeMap = getGlyphsUnicode();\n      for (const charcode in encoding) {\n        // a) Map the character code to a character name.\n        let glyphName = encoding[charcode];\n        // b) Look up the character name in the Adobe Glyph List (see the\n        //    Bibliography) to obtain the corresponding Unicode value.\n        if (glyphName === \"\") {\n          continue;\n        } else if (glyphsUnicodeMap[glyphName] === undefined) {\n          // (undocumented) c) Few heuristics to recognize unknown glyphs\n          // NOTE: Adobe Reader does not do this step, but OSX Preview does\n          let code = 0;\n          switch (glyphName[0]) {\n            case \"G\": // Gxx glyph\n              if (glyphName.length === 3) {\n                code = parseInt(glyphName.substring(1), 16);\n              }\n              break;\n            case \"g\": // g00xx glyph\n              if (glyphName.length === 5) {\n                code = parseInt(glyphName.substring(1), 16);\n              }\n              break;\n            case \"C\": // Cdd{d} glyph\n            case \"c\": // cdd{d} glyph\n              if (glyphName.length >= 3 && glyphName.length <= 4) {\n                const codeStr = glyphName.substring(1);\n\n                if (forceGlyphs) {\n                  code = parseInt(codeStr, 16);\n                  break;\n                }\n                // Normally the Cdd{d}/cdd{d} glyphName format will contain\n                // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n                code = +codeStr;\n\n                // ... however some PDF generators violate that assumption by\n                // containing glyph, i.e. base 16, codes instead.\n                // In that case we need to re-parse the *entire* encoding to\n                // prevent broken text-selection (fixes issue9655_reduced.pdf).\n                if (\n                  Number.isNaN(code) &&\n                  Number.isInteger(parseInt(codeStr, 16))\n                ) {\n                  return this._buildSimpleFontToUnicode(\n                    properties,\n                    /* forceGlyphs */ true\n                  );\n                }\n              }\n              break;\n            default:\n              // 'uniXXXX'/'uXXXX{XX}' glyphs\n              const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n              if (unicode !== -1) {\n                code = unicode;\n              }\n          }\n          if (code > 0 && Number.isInteger(code)) {\n            // If `baseEncodingName` is one the predefined encodings, and `code`\n            // equals `charcode`, using the glyph defined in the baseEncoding\n            // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n            if (baseEncodingName && code === +charcode) {\n              const baseEncoding = getEncoding(baseEncodingName);\n              if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n                toUnicode[charcode] = String.fromCharCode(\n                  glyphsUnicodeMap[glyphName]\n                );\n                continue;\n              }\n            }\n            toUnicode[charcode] = String.fromCodePoint(code);\n          }\n          continue;\n        }\n        toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n      }\n      return new ToUnicodeMap(toUnicode);\n    },\n\n    /**\n     * Builds a char code to unicode map based on section 9.10 of the spec.\n     * @param {Object} properties Font properties object.\n     * @returns {Promise} A Promise that is resolved with a\n     *   {ToUnicodeMap|IdentityToUnicodeMap} object.\n     */\n    buildToUnicode(properties) {\n      properties.hasIncludedToUnicodeMap =\n        !!properties.toUnicode && properties.toUnicode.length > 0;\n\n      // Section 9.10.2 Mapping Character Codes to Unicode Values\n      if (properties.hasIncludedToUnicodeMap) {\n        // Some fonts contain incomplete ToUnicode data, causing issues with\n        // text-extraction. For simple fonts, containing encoding information,\n        // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n        if (!properties.composite && properties.hasEncoding) {\n          properties.fallbackToUnicode = this._buildSimpleFontToUnicode(\n            properties\n          );\n        }\n\n        return Promise.resolve(properties.toUnicode);\n      }\n\n      // According to the spec if the font is a simple font we should only map\n      // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n      // the differences array only contains adobe standard or symbol set names,\n      // in pratice it seems better to always try to create a toUnicode map\n      // based of the default encoding.\n      if (!properties.composite /* is simple font */) {\n        return Promise.resolve(this._buildSimpleFontToUnicode(properties));\n      }\n\n      // If the font is a composite font that uses one of the predefined CMaps\n      // listed in Table 118 (except Identity–H and Identity–V) or whose\n      // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n      // Adobe-Korea1 character collection:\n      if (\n        properties.composite &&\n        ((properties.cMap.builtInCMap &&\n          !(properties.cMap instanceof IdentityCMap)) ||\n          (properties.cidSystemInfo.registry === \"Adobe\" &&\n            (properties.cidSystemInfo.ordering === \"GB1\" ||\n              properties.cidSystemInfo.ordering === \"CNS1\" ||\n              properties.cidSystemInfo.ordering === \"Japan1\" ||\n              properties.cidSystemInfo.ordering === \"Korea1\")))\n      ) {\n        // Then:\n        // a) Map the character code to a character identifier (CID) according\n        // to the font’s CMap.\n        // b) Obtain the registry and ordering of the character collection used\n        // by the font’s CMap (for example, Adobe and Japan1) from its\n        // CIDSystemInfo dictionary.\n        const registry = properties.cidSystemInfo.registry;\n        const ordering = properties.cidSystemInfo.ordering;\n        // c) Construct a second CMap name by concatenating the registry and\n        // ordering obtained in step (b) in the format registry–ordering–UCS2\n        // (for example, Adobe–Japan1–UCS2).\n        const ucs2CMapName = Name.get(registry + \"-\" + ordering + \"-UCS2\");\n        // d) Obtain the CMap with the name constructed in step (c) (available\n        // from the ASN Web site; see the Bibliography).\n        return CMapFactory.create({\n          encoding: ucs2CMapName,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(function(ucs2CMap) {\n          const cMap = properties.cMap;\n          const toUnicode = [];\n          cMap.forEach(function(charcode, cid) {\n            if (cid > 0xffff) {\n              throw new FormatError(\"Max size of CID is 65,535\");\n            }\n            // e) Map the CID obtained in step (a) according to the CMap\n            // obtained in step (d), producing a Unicode value.\n            const ucs2 = ucs2CMap.lookup(cid);\n            if (ucs2) {\n              toUnicode[charcode] = String.fromCharCode(\n                (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n              );\n            }\n          });\n          return new ToUnicodeMap(toUnicode);\n        });\n      }\n\n      // The viewer's choice, just use an identity map.\n      return Promise.resolve(\n        new IdentityToUnicodeMap(properties.firstChar, properties.lastChar)\n      );\n    },\n\n    readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) {\n      var cmapObj = toUnicode;\n      if (isName(cmapObj)) {\n        return CMapFactory.create({\n          encoding: cmapObj,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(function(cmap) {\n          if (cmap instanceof IdentityCMap) {\n            return new IdentityToUnicodeMap(0, 0xffff);\n          }\n          return new ToUnicodeMap(cmap.getMap());\n        });\n      } else if (isStream(cmapObj)) {\n        return CMapFactory.create({\n          encoding: cmapObj,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(\n          function(cmap) {\n            if (cmap instanceof IdentityCMap) {\n              return new IdentityToUnicodeMap(0, 0xffff);\n            }\n            var map = new Array(cmap.length);\n            // Convert UTF-16BE\n            // NOTE: cmap can be a sparse array, so use forEach instead of\n            // `for(;;)` to iterate over all keys.\n            cmap.forEach(function(charCode, token) {\n              var str = [];\n              for (var k = 0; k < token.length; k += 2) {\n                var w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n                if ((w1 & 0xf800) !== 0xd800) {\n                  // w1 < 0xD800 || w1 > 0xDFFF\n                  str.push(w1);\n                  continue;\n                }\n                k += 2;\n                var w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n                str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n              }\n              map[charCode] = String.fromCodePoint.apply(String, str);\n            });\n            return new ToUnicodeMap(map);\n          },\n          reason => {\n            if (reason instanceof AbortException) {\n              return null;\n            }\n            if (this.options.ignoreErrors) {\n              // Error in the ToUnicode data -- sending unsupported feature\n              // notification and allow font parsing to continue.\n              this.handler.send(\"UnsupportedFeature\", {\n                featureId: UNSUPPORTED_FEATURES.font,\n              });\n              warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n              return null;\n            }\n            throw reason;\n          }\n        );\n      }\n      return Promise.resolve(null);\n    },\n\n    readCidToGidMap(glyphsData, toUnicode) {\n      // Extract the encoding from the CIDToGIDMap\n\n      // Set encoding 0 to later verify the font has an encoding\n      var result = [];\n      for (var j = 0, jj = glyphsData.length; j < jj; j++) {\n        var glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n        const code = j >> 1;\n        if (glyphID === 0 && !toUnicode.has(code)) {\n          continue;\n        }\n        result[code] = glyphID;\n      }\n      return result;\n    },\n\n    extractWidths: function PartialEvaluator_extractWidths(\n      dict,\n      descriptor,\n      properties\n    ) {\n      var xref = this.xref;\n      var glyphsWidths = [];\n      var defaultWidth = 0;\n      var glyphsVMetrics = [];\n      var defaultVMetrics;\n      var i, ii, j, jj, start, code, widths;\n      if (properties.composite) {\n        defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n        widths = dict.get(\"W\");\n        if (widths) {\n          for (i = 0, ii = widths.length; i < ii; i++) {\n            start = xref.fetchIfRef(widths[i++]);\n            code = xref.fetchIfRef(widths[i]);\n            if (Array.isArray(code)) {\n              for (j = 0, jj = code.length; j < jj; j++) {\n                glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n              }\n            } else {\n              var width = xref.fetchIfRef(widths[++i]);\n              for (j = start; j <= code; j++) {\n                glyphsWidths[j] = width;\n              }\n            }\n          }\n        }\n\n        if (properties.vertical) {\n          var vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n          defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n          vmetrics = dict.get(\"W2\");\n          if (vmetrics) {\n            for (i = 0, ii = vmetrics.length; i < ii; i++) {\n              start = xref.fetchIfRef(vmetrics[i++]);\n              code = xref.fetchIfRef(vmetrics[i]);\n              if (Array.isArray(code)) {\n                for (j = 0, jj = code.length; j < jj; j++) {\n                  glyphsVMetrics[start++] = [\n                    xref.fetchIfRef(code[j++]),\n                    xref.fetchIfRef(code[j++]),\n                    xref.fetchIfRef(code[j]),\n                  ];\n                }\n              } else {\n                var vmetric = [\n                  xref.fetchIfRef(vmetrics[++i]),\n                  xref.fetchIfRef(vmetrics[++i]),\n                  xref.fetchIfRef(vmetrics[++i]),\n                ];\n                for (j = start; j <= code; j++) {\n                  glyphsVMetrics[j] = vmetric;\n                }\n              }\n            }\n          }\n        }\n      } else {\n        var firstChar = properties.firstChar;\n        widths = dict.get(\"Widths\");\n        if (widths) {\n          j = firstChar;\n          for (i = 0, ii = widths.length; i < ii; i++) {\n            glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n          }\n          defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n        } else {\n          // Trying get the BaseFont metrics (see comment above).\n          var baseFontName = dict.get(\"BaseFont\");\n          if (isName(baseFontName)) {\n            var metrics = this.getBaseFontMetrics(baseFontName.name);\n\n            glyphsWidths = this.buildCharCodeToWidth(\n              metrics.widths,\n              properties\n            );\n            defaultWidth = metrics.defaultWidth;\n          }\n        }\n      }\n\n      // Heuristic: detection of monospace font by checking all non-zero widths\n      var isMonospace = true;\n      var firstWidth = defaultWidth;\n      for (var glyph in glyphsWidths) {\n        var glyphWidth = glyphsWidths[glyph];\n        if (!glyphWidth) {\n          continue;\n        }\n        if (!firstWidth) {\n          firstWidth = glyphWidth;\n          continue;\n        }\n        if (firstWidth !== glyphWidth) {\n          isMonospace = false;\n          break;\n        }\n      }\n      if (isMonospace) {\n        properties.flags |= FontFlags.FixedPitch;\n      }\n\n      properties.defaultWidth = defaultWidth;\n      properties.widths = glyphsWidths;\n      properties.defaultVMetrics = defaultVMetrics;\n      properties.vmetrics = glyphsVMetrics;\n    },\n\n    isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) {\n      // Simulating descriptor flags attribute\n      var fontNameWoStyle = baseFontName.split(\"-\")[0];\n      return (\n        fontNameWoStyle in getSerifFonts() ||\n        fontNameWoStyle.search(/serif/gi) !== -1\n      );\n    },\n\n    getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {\n      var defaultWidth = 0;\n      var widths = [];\n      var monospace = false;\n      var stdFontMap = getStdFontMap();\n      var lookupName = stdFontMap[name] || name;\n      var Metrics = getMetrics();\n\n      if (!(lookupName in Metrics)) {\n        // Use default fonts for looking up font metrics if the passed\n        // font is not a base font\n        if (this.isSerifFont(name)) {\n          lookupName = \"Times-Roman\";\n        } else {\n          lookupName = \"Helvetica\";\n        }\n      }\n      var glyphWidths = Metrics[lookupName];\n\n      if (isNum(glyphWidths)) {\n        defaultWidth = glyphWidths;\n        monospace = true;\n      } else {\n        widths = glyphWidths(); // expand lazy widths array\n      }\n\n      return {\n        defaultWidth,\n        monospace,\n        widths,\n      };\n    },\n\n    buildCharCodeToWidth: function PartialEvaluator_bulildCharCodeToWidth(\n      widthsByGlyphName,\n      properties\n    ) {\n      var widths = Object.create(null);\n      var differences = properties.differences;\n      var encoding = properties.defaultEncoding;\n      for (var charCode = 0; charCode < 256; charCode++) {\n        if (\n          charCode in differences &&\n          widthsByGlyphName[differences[charCode]]\n        ) {\n          widths[charCode] = widthsByGlyphName[differences[charCode]];\n          continue;\n        }\n        if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n          widths[charCode] = widthsByGlyphName[encoding[charCode]];\n          continue;\n        }\n      }\n      return widths;\n    },\n\n    preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict) {\n      var baseDict = dict;\n      var type = dict.get(\"Subtype\");\n      if (!isName(type)) {\n        throw new FormatError(\"invalid font Subtype\");\n      }\n\n      var composite = false;\n      var uint8array;\n      if (type.name === \"Type0\") {\n        // If font is a composite\n        //  - get the descendant font\n        //  - set the type according to the descendant font\n        //  - get the FontDescriptor from the descendant font\n        var df = dict.get(\"DescendantFonts\");\n        if (!df) {\n          throw new FormatError(\"Descendant fonts are not specified\");\n        }\n        dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n        type = dict.get(\"Subtype\");\n        if (!isName(type)) {\n          throw new FormatError(\"invalid font Subtype\");\n        }\n        composite = true;\n      }\n\n      var descriptor = dict.get(\"FontDescriptor\");\n      if (descriptor) {\n        var hash = new MurmurHash3_64();\n        var encoding = baseDict.getRaw(\"Encoding\");\n        if (isName(encoding)) {\n          hash.update(encoding.name);\n        } else if (isRef(encoding)) {\n          hash.update(encoding.toString());\n        } else if (isDict(encoding)) {\n          var keys = encoding.getKeys();\n          for (var i = 0, ii = keys.length; i < ii; i++) {\n            var entry = encoding.getRaw(keys[i]);\n            if (isName(entry)) {\n              hash.update(entry.name);\n            } else if (isRef(entry)) {\n              hash.update(entry.toString());\n            } else if (Array.isArray(entry)) {\n              // 'Differences' array (fixes bug1157493.pdf).\n              var diffLength = entry.length,\n                diffBuf = new Array(diffLength);\n\n              for (var j = 0; j < diffLength; j++) {\n                var diffEntry = entry[j];\n                if (isName(diffEntry)) {\n                  diffBuf[j] = diffEntry.name;\n                } else if (isNum(diffEntry) || isRef(diffEntry)) {\n                  diffBuf[j] = diffEntry.toString();\n                }\n              }\n              hash.update(diffBuf.join());\n            }\n          }\n        }\n\n        const firstChar = dict.get(\"FirstChar\") || 0;\n        const lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n        hash.update(`${firstChar}-${lastChar}`);\n\n        var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n        if (isStream(toUnicode)) {\n          var stream = toUnicode.str || toUnicode;\n          uint8array = stream.buffer\n            ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n            : new Uint8Array(\n                stream.bytes.buffer,\n                stream.start,\n                stream.end - stream.start\n              );\n          hash.update(uint8array);\n        } else if (isName(toUnicode)) {\n          hash.update(toUnicode.name);\n        }\n\n        var widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n        if (widths) {\n          uint8array = new Uint8Array(new Uint32Array(widths).buffer);\n          hash.update(uint8array);\n        }\n      }\n\n      return {\n        descriptor,\n        dict,\n        baseDict,\n        composite,\n        type: type.name,\n        hash: hash ? hash.hexdigest() : \"\",\n      };\n    },\n\n    translateFont: function PartialEvaluator_translateFont(preEvaluatedFont) {\n      var baseDict = preEvaluatedFont.baseDict;\n      var dict = preEvaluatedFont.dict;\n      var composite = preEvaluatedFont.composite;\n      var descriptor = preEvaluatedFont.descriptor;\n      var type = preEvaluatedFont.type;\n      var maxCharIndex = composite ? 0xffff : 0xff;\n      var properties;\n      const firstChar = dict.get(\"FirstChar\") || 0;\n      const lastChar = dict.get(\"LastChar\") || maxCharIndex;\n\n      if (!descriptor) {\n        if (type === \"Type3\") {\n          // FontDescriptor is only required for Type3 fonts when the document\n          // is a tagged pdf. Create a barbebones one to get by.\n          descriptor = new Dict(null);\n          descriptor.set(\"FontName\", Name.get(type));\n          descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n        } else {\n          // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n          // FontDescriptor was not required.\n          // This case is here for compatibility.\n          var baseFontName = dict.get(\"BaseFont\");\n          if (!isName(baseFontName)) {\n            throw new FormatError(\"Base font is not specified\");\n          }\n\n          // Using base font name as a font name.\n          baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n          var metrics = this.getBaseFontMetrics(baseFontName);\n\n          // Simulating descriptor flags attribute\n          var fontNameWoStyle = baseFontName.split(\"-\")[0];\n          var flags =\n            (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n            (metrics.monospace ? FontFlags.FixedPitch : 0) |\n            (getSymbolsFonts()[fontNameWoStyle]\n              ? FontFlags.Symbolic\n              : FontFlags.Nonsymbolic);\n\n          properties = {\n            type,\n            name: baseFontName,\n            widths: metrics.widths,\n            defaultWidth: metrics.defaultWidth,\n            flags,\n            firstChar,\n            lastChar,\n          };\n          const widths = dict.get(\"Widths\");\n          return this.extractDataStructures(dict, dict, properties).then(\n            properties => {\n              if (widths) {\n                const glyphWidths = [];\n                let j = firstChar;\n                for (let i = 0, ii = widths.length; i < ii; i++) {\n                  glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n                }\n                properties.widths = glyphWidths;\n              } else {\n                properties.widths = this.buildCharCodeToWidth(\n                  metrics.widths,\n                  properties\n                );\n              }\n              return new Font(baseFontName, null, properties);\n            }\n          );\n        }\n      }\n\n      // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n      // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n      // to ignore this rule when a variant of a standard font is used.\n      // TODO Fill the width array depending on which of the base font this is\n      // a variant.\n\n      var fontName = descriptor.get(\"FontName\");\n      var baseFont = dict.get(\"BaseFont\");\n      // Some bad PDFs have a string as the font name.\n      if (isString(fontName)) {\n        fontName = Name.get(fontName);\n      }\n      if (isString(baseFont)) {\n        baseFont = Name.get(baseFont);\n      }\n\n      if (type !== \"Type3\") {\n        var fontNameStr = fontName && fontName.name;\n        var baseFontStr = baseFont && baseFont.name;\n        if (fontNameStr !== baseFontStr) {\n          info(\n            `The FontDescriptor\\'s FontName is \"${fontNameStr}\" but ` +\n              `should be the same as the Font\\'s BaseFont \"${baseFontStr}\".`\n          );\n          // Workaround for cases where e.g. fontNameStr = 'Arial' and\n          // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n          if (\n            fontNameStr &&\n            baseFontStr &&\n            baseFontStr.startsWith(fontNameStr)\n          ) {\n            fontName = baseFont;\n          }\n        }\n      }\n      fontName = fontName || baseFont;\n\n      if (!isName(fontName)) {\n        throw new FormatError(\"invalid font name\");\n      }\n\n      var fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n      if (fontFile) {\n        if (fontFile.dict) {\n          var subtype = fontFile.dict.get(\"Subtype\");\n          if (subtype) {\n            subtype = subtype.name;\n          }\n          var length1 = fontFile.dict.get(\"Length1\");\n          var length2 = fontFile.dict.get(\"Length2\");\n          var length3 = fontFile.dict.get(\"Length3\");\n        }\n      }\n\n      properties = {\n        type,\n        name: fontName.name,\n        subtype,\n        file: fontFile,\n        length1,\n        length2,\n        length3,\n        loadedName: baseDict.loadedName,\n        composite,\n        wideChars: composite,\n        fixedPitch: false,\n        fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n        firstChar: firstChar || 0,\n        lastChar: lastChar || maxCharIndex,\n        bbox: descriptor.getArray(\"FontBBox\"),\n        ascent: descriptor.get(\"Ascent\"),\n        descent: descriptor.get(\"Descent\"),\n        xHeight: descriptor.get(\"XHeight\"),\n        capHeight: descriptor.get(\"CapHeight\"),\n        flags: descriptor.get(\"Flags\"),\n        italicAngle: descriptor.get(\"ItalicAngle\"),\n        isType3Font: false,\n      };\n\n      var cMapPromise;\n      if (composite) {\n        var cidEncoding = baseDict.get(\"Encoding\");\n        if (isName(cidEncoding)) {\n          properties.cidEncoding = cidEncoding.name;\n        }\n        cMapPromise = CMapFactory.create({\n          encoding: cidEncoding,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(function(cMap) {\n          properties.cMap = cMap;\n          properties.vertical = properties.cMap.vertical;\n        });\n      } else {\n        cMapPromise = Promise.resolve(undefined);\n      }\n\n      return cMapPromise\n        .then(() => {\n          return this.extractDataStructures(dict, baseDict, properties);\n        })\n        .then(properties => {\n          this.extractWidths(dict, descriptor, properties);\n\n          if (type === \"Type3\") {\n            properties.isType3Font = true;\n          }\n          return new Font(fontName.name, fontFile, properties);\n        });\n    },\n  };\n\n  PartialEvaluator.buildFontPaths = function(font, glyphs, handler) {\n    function buildPath(fontChar) {\n      if (font.renderer.hasBuiltPath(fontChar)) {\n        return;\n      }\n      handler.send(\"commonobj\", [\n        `${font.loadedName}_path_${fontChar}`,\n        \"FontPath\",\n        font.renderer.getPathJs(fontChar),\n      ]);\n    }\n\n    for (const glyph of glyphs) {\n      buildPath(glyph.fontChar);\n\n      // If the glyph has an accent we need to build a path for its\n      // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n      const accent = glyph.accent;\n      if (accent && accent.fontChar) {\n        buildPath(accent.fontChar);\n      }\n    }\n  };\n\n  // TODO: Change this to a `static` getter, using shadowing, once\n  //       `PartialEvaluator` is converted to a proper class.\n  PartialEvaluator.getFallbackFontDict = function() {\n    if (this._fallbackFontDict) {\n      return this._fallbackFontDict;\n    }\n    const dict = new Dict();\n    dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n    dict.set(\"Type\", Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n    return (this._fallbackFontDict = dict);\n  };\n\n  return PartialEvaluator;\n})();\n\nvar TranslatedFont = (function TranslatedFontClosure() {\n  function TranslatedFont(loadedName, font, dict) {\n    this.loadedName = loadedName;\n    this.font = font;\n    this.dict = dict;\n    this.type3Loaded = null;\n    this.sent = false;\n  }\n  TranslatedFont.prototype = {\n    send(handler) {\n      if (this.sent) {\n        return;\n      }\n      this.sent = true;\n\n      handler.send(\"commonobj\", [\n        this.loadedName,\n        \"Font\",\n        this.font.exportData(),\n      ]);\n    },\n\n    fallback(handler) {\n      if (!this.font.data) {\n        return;\n      }\n      // When font loading failed, fall back to the built-in font renderer.\n      this.font.disableFontFace = true;\n      // An arbitrary number of text rendering operators could have been\n      // encountered between the point in time when the 'Font' message was sent\n      // to the main-thread, and the point in time when the 'FontFallback'\n      // message was received on the worker-thread.\n      // To ensure that all 'FontPath's are available on the main-thread, when\n      // font loading failed, attempt to resend *all* previously parsed glyphs.\n      const glyphs = this.font.glyphCacheValues;\n      PartialEvaluator.buildFontPaths(this.font, glyphs, handler);\n    },\n\n    loadType3Data(evaluator, resources, parentOperatorList, task) {\n      if (!this.font.isType3Font) {\n        throw new Error(\"Must be a Type3 font.\");\n      }\n\n      if (this.type3Loaded) {\n        return this.type3Loaded;\n      }\n      // When parsing Type3 glyphs, always ignore them if there are errors.\n      // Compared to the parsing of e.g. an entire page, it doesn't really\n      // make sense to only be able to render a Type3 glyph partially.\n      //\n      // Also, ensure that any Type3 image resources (which should be very rare\n      // in practice) are completely decoded on the worker-thread, to simplify\n      // the rendering code on the main-thread (see issue10717.pdf).\n      var type3Options = Object.create(evaluator.options);\n      type3Options.ignoreErrors = false;\n      type3Options.nativeImageDecoderSupport = NativeImageDecoding.NONE;\n      var type3Evaluator = evaluator.clone(type3Options);\n      type3Evaluator.parsingType3Font = true;\n\n      var translatedFont = this.font;\n      var loadCharProcsPromise = Promise.resolve();\n      var charProcs = this.dict.get(\"CharProcs\");\n      var fontResources = this.dict.get(\"Resources\") || resources;\n      var charProcKeys = charProcs.getKeys();\n      var charProcOperatorList = Object.create(null);\n\n      for (var i = 0, n = charProcKeys.length; i < n; ++i) {\n        const key = charProcKeys[i];\n        loadCharProcsPromise = loadCharProcsPromise.then(function() {\n          var glyphStream = charProcs.get(key);\n          var operatorList = new OperatorList();\n          return type3Evaluator\n            .getOperatorList({\n              stream: glyphStream,\n              task,\n              resources: fontResources,\n              operatorList,\n            })\n            .then(function() {\n              charProcOperatorList[key] = operatorList.getIR();\n\n              // Add the dependencies to the parent operator list so they are\n              // resolved before sub operator list is executed synchronously.\n              parentOperatorList.addDependencies(operatorList.dependencies);\n            })\n            .catch(function(reason) {\n              warn(`Type3 font resource \"${key}\" is not available.`);\n              var operatorList = new OperatorList();\n              charProcOperatorList[key] = operatorList.getIR();\n            });\n        });\n      }\n      this.type3Loaded = loadCharProcsPromise.then(function() {\n        translatedFont.charProcOperatorList = charProcOperatorList;\n      });\n      return this.type3Loaded;\n    },\n  };\n  return TranslatedFont;\n})();\n\nvar StateManager = (function StateManagerClosure() {\n  function StateManager(initialState) {\n    this.state = initialState;\n    this.stateStack = [];\n  }\n  StateManager.prototype = {\n    save() {\n      var old = this.state;\n      this.stateStack.push(this.state);\n      this.state = old.clone();\n    },\n    restore() {\n      var prev = this.stateStack.pop();\n      if (prev) {\n        this.state = prev;\n      }\n    },\n    transform(args) {\n      this.state.ctm = Util.transform(this.state.ctm, args);\n    },\n  };\n  return StateManager;\n})();\n\nvar TextState = (function TextStateClosure() {\n  function TextState() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.fontName = null;\n    this.fontSize = 0;\n    this.font = null;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.textMatrix = IDENTITY_MATRIX.slice();\n    this.textLineMatrix = IDENTITY_MATRIX.slice();\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.leading = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n  }\n\n  TextState.prototype = {\n    setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {\n      var m = this.textMatrix;\n      m[0] = a;\n      m[1] = b;\n      m[2] = c;\n      m[3] = d;\n      m[4] = e;\n      m[5] = f;\n    },\n    setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {\n      var m = this.textLineMatrix;\n      m[0] = a;\n      m[1] = b;\n      m[2] = c;\n      m[3] = d;\n      m[4] = e;\n      m[5] = f;\n    },\n    translateTextMatrix: function TextState_translateTextMatrix(x, y) {\n      var m = this.textMatrix;\n      m[4] = m[0] * x + m[2] * y + m[4];\n      m[5] = m[1] * x + m[3] * y + m[5];\n    },\n    translateTextLineMatrix: function TextState_translateTextMatrix(x, y) {\n      var m = this.textLineMatrix;\n      m[4] = m[0] * x + m[2] * y + m[4];\n      m[5] = m[1] * x + m[3] * y + m[5];\n    },\n    calcTextLineMatrixAdvance: function TextState_calcTextLineMatrixAdvance(\n      a,\n      b,\n      c,\n      d,\n      e,\n      f\n    ) {\n      var font = this.font;\n      if (!font) {\n        return null;\n      }\n      var m = this.textLineMatrix;\n      if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {\n        return null;\n      }\n      var txDiff = e - m[4],\n        tyDiff = f - m[5];\n      if ((font.vertical && txDiff !== 0) || (!font.vertical && tyDiff !== 0)) {\n        return null;\n      }\n      var tx,\n        ty,\n        denominator = a * d - b * c;\n      if (font.vertical) {\n        tx = (-tyDiff * c) / denominator;\n        ty = (tyDiff * a) / denominator;\n      } else {\n        tx = (txDiff * d) / denominator;\n        ty = (-txDiff * b) / denominator;\n      }\n      return { width: tx, height: ty, value: font.vertical ? ty : tx };\n    },\n    calcRenderMatrix: function TextState_calcRendeMatrix(ctm) {\n      // 9.4.4 Text Space Details\n      var tsm = [\n        this.fontSize * this.textHScale,\n        0,\n        0,\n        this.fontSize,\n        0,\n        this.textRise,\n      ];\n      return Util.transform(ctm, Util.transform(this.textMatrix, tsm));\n    },\n    carriageReturn: function TextState_carriageReturn() {\n      this.translateTextLineMatrix(0, -this.leading);\n      this.textMatrix = this.textLineMatrix.slice();\n    },\n    clone: function TextState_clone() {\n      var clone = Object.create(this);\n      clone.textMatrix = this.textMatrix.slice();\n      clone.textLineMatrix = this.textLineMatrix.slice();\n      clone.fontMatrix = this.fontMatrix.slice();\n      return clone;\n    },\n  };\n  return TextState;\n})();\n\nvar EvalState = (function EvalStateClosure() {\n  function EvalState() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.font = null;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.fillColorSpace = ColorSpace.singletons.gray;\n    this.strokeColorSpace = ColorSpace.singletons.gray;\n  }\n  EvalState.prototype = {\n    clone: function CanvasExtraState_clone() {\n      return Object.create(this);\n    },\n  };\n  return EvalState;\n})();\n\nvar EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() {\n  // Specifies properties for each command\n  //\n  // If variableArgs === true: [0, `numArgs`] expected\n  // If variableArgs === false: exactly `numArgs` expected\n  var getOPMap = getLookupTableFactory(function(t) {\n    // Graphic state\n    t[\"w\"] = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n    t[\"J\"] = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n    t[\"j\"] = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n    t[\"M\"] = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n    t[\"d\"] = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n    t[\"ri\"] = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n    t[\"i\"] = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n    t[\"gs\"] = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n    t[\"q\"] = { id: OPS.save, numArgs: 0, variableArgs: false };\n    t[\"Q\"] = { id: OPS.restore, numArgs: 0, variableArgs: false };\n    t[\"cm\"] = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n    // Path\n    t[\"m\"] = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n    t[\"l\"] = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n    t[\"c\"] = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n    t[\"v\"] = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n    t[\"y\"] = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n    t[\"h\"] = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n    t[\"re\"] = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n    t[\"S\"] = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n    t[\"s\"] = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n    t[\"f\"] = { id: OPS.fill, numArgs: 0, variableArgs: false };\n    t[\"F\"] = { id: OPS.fill, numArgs: 0, variableArgs: false };\n    t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n    t[\"B\"] = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n    t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n    t[\"b\"] = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n    t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n    t[\"n\"] = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n    // Clipping\n    t[\"W\"] = { id: OPS.clip, numArgs: 0, variableArgs: false };\n    t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n    // Text\n    t[\"BT\"] = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n    t[\"ET\"] = { id: OPS.endText, numArgs: 0, variableArgs: false };\n    t[\"Tc\"] = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n    t[\"Tw\"] = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n    t[\"Tz\"] = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n    t[\"TL\"] = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n    t[\"Tf\"] = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n    t[\"Tr\"] = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n    t[\"Ts\"] = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n    t[\"Td\"] = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n    t[\"TD\"] = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n    t[\"Tm\"] = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n    t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n    t[\"Tj\"] = { id: OPS.showText, numArgs: 1, variableArgs: false };\n    t[\"TJ\"] = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n    t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n    t['\"'] = {\n      id: OPS.nextLineSetSpacingShowText,\n      numArgs: 3,\n      variableArgs: false,\n    };\n\n    // Type3 fonts\n    t[\"d0\"] = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n    t[\"d1\"] = {\n      id: OPS.setCharWidthAndBounds,\n      numArgs: 6,\n      variableArgs: false,\n    };\n\n    // Color\n    t[\"CS\"] = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n    t[\"cs\"] = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n    t[\"SC\"] = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n    t[\"SCN\"] = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n    t[\"sc\"] = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n    t[\"scn\"] = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n    t[\"G\"] = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n    t[\"g\"] = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n    t[\"RG\"] = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n    t[\"rg\"] = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n    t[\"K\"] = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n    t[\"k\"] = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n    // Shading\n    t[\"sh\"] = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n    // Images\n    t[\"BI\"] = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n    t[\"ID\"] = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n    t[\"EI\"] = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n    // XObjects\n    t[\"Do\"] = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n    t[\"MP\"] = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n    t[\"DP\"] = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n    t[\"BMC\"] = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n    t[\"BDC\"] = {\n      id: OPS.beginMarkedContentProps,\n      numArgs: 2,\n      variableArgs: false,\n    };\n    t[\"EMC\"] = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n    // Compatibility\n    t[\"BX\"] = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n    t[\"EX\"] = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n    // (reserved partial commands for the lexer)\n    t[\"BM\"] = null;\n    t[\"BD\"] = null;\n    t[\"true\"] = null;\n    t[\"fa\"] = null;\n    t[\"fal\"] = null;\n    t[\"fals\"] = null;\n    t[\"false\"] = null;\n    t[\"nu\"] = null;\n    t[\"nul\"] = null;\n    t[\"null\"] = null;\n  });\n\n  const MAX_INVALID_PATH_OPS = 20;\n\n  function EvaluatorPreprocessor(stream, xref, stateManager) {\n    this.opMap = getOPMap();\n    // TODO(mduan): pass array of knownCommands rather than this.opMap\n    // dictionary\n    this.parser = new Parser({\n      lexer: new Lexer(stream, this.opMap),\n      xref,\n    });\n    this.stateManager = stateManager;\n    this.nonProcessedArgs = [];\n    this._numInvalidPathOPS = 0;\n  }\n\n  EvaluatorPreprocessor.prototype = {\n    get savedStatesDepth() {\n      return this.stateManager.stateStack.length;\n    },\n\n    // |operation| is an object with two fields:\n    //\n    // - |fn| is an out param.\n    //\n    // - |args| is an inout param. On entry, it should have one of two values.\n    //\n    //   - An empty array. This indicates that the caller is providing the\n    //     array in which the args will be stored in. The caller should use\n    //     this value if it can reuse a single array for each call to read().\n    //\n    //   - |null|. This indicates that the caller needs this function to create\n    //     the array in which any args are stored in. If there are zero args,\n    //     this function will leave |operation.args| as |null| (thus avoiding\n    //     allocations that would occur if we used an empty array to represent\n    //     zero arguments). Otherwise, it will replace |null| with a new array\n    //     containing the arguments. The caller should use this value if it\n    //     cannot reuse an array for each call to read().\n    //\n    // These two modes are present because this function is very hot and so\n    // avoiding allocations where possible is worthwhile.\n    //\n    read: function EvaluatorPreprocessor_read(operation) {\n      var args = operation.args;\n      while (true) {\n        var obj = this.parser.getObj();\n        if (obj instanceof Cmd) {\n          var cmd = obj.cmd;\n          // Check that the command is valid\n          var opSpec = this.opMap[cmd];\n          if (!opSpec) {\n            warn(`Unknown command \"${cmd}\".`);\n            continue;\n          }\n\n          var fn = opSpec.id;\n          var numArgs = opSpec.numArgs;\n          var argsLength = args !== null ? args.length : 0;\n\n          if (!opSpec.variableArgs) {\n            // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n            if (argsLength !== numArgs) {\n              var nonProcessedArgs = this.nonProcessedArgs;\n              while (argsLength > numArgs) {\n                nonProcessedArgs.push(args.shift());\n                argsLength--;\n              }\n              while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n                if (args === null) {\n                  args = [];\n                }\n                args.unshift(nonProcessedArgs.pop());\n                argsLength++;\n              }\n            }\n\n            if (argsLength < numArgs) {\n              const partialMsg =\n                `command ${cmd}: expected ${numArgs} args, ` +\n                `but received ${argsLength} args.`;\n\n              // Incomplete path operators, in particular, can result in fairly\n              // chaotic rendering artifacts. Hence the following heuristics is\n              // used to error, rather than just warn, once a number of invalid\n              // path operators have been encountered (fixes bug1443140.pdf).\n              if (\n                fn >= OPS.moveTo &&\n                fn <= OPS.endPath && // Path operator\n                ++this._numInvalidPathOPS > MAX_INVALID_PATH_OPS\n              ) {\n                throw new FormatError(`Invalid ${partialMsg}`);\n              }\n              // If we receive too few arguments, it's not possible to execute\n              // the command, hence we skip the command.\n              warn(`Skipping ${partialMsg}`);\n              if (args !== null) {\n                args.length = 0;\n              }\n              continue;\n            }\n          } else if (argsLength > numArgs) {\n            info(\n              `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n                `but received ${argsLength} args.`\n            );\n          }\n\n          // TODO figure out how to type-check vararg functions\n          this.preprocessCommand(fn, args);\n\n          operation.fn = fn;\n          operation.args = args;\n          return true;\n        }\n        if (obj === EOF) {\n          return false; // no more commands\n        }\n        // argument\n        if (obj !== null) {\n          if (args === null) {\n            args = [];\n          }\n          args.push(obj);\n          if (args.length > 33) {\n            throw new FormatError(\"Too many arguments\");\n          }\n        }\n      }\n    },\n\n    preprocessCommand: function EvaluatorPreprocessor_preprocessCommand(\n      fn,\n      args\n    ) {\n      switch (fn | 0) {\n        case OPS.save:\n          this.stateManager.save();\n          break;\n        case OPS.restore:\n          this.stateManager.restore();\n          break;\n        case OPS.transform:\n          this.stateManager.transform(args);\n          break;\n      }\n    },\n  };\n  return EvaluatorPreprocessor;\n})();\n\nexport { PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CMapCompressionType,\n  FormatError,\n  isString,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { isCmd, isEOF, isName, isStream } from \"./primitives.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nvar BUILT_IN_CMAPS = [\n  // << Start unicode maps.\n  \"Adobe-GB1-UCS2\",\n  \"Adobe-CNS1-UCS2\",\n  \"Adobe-Japan1-UCS2\",\n  \"Adobe-Korea1-UCS2\",\n  // >> End unicode maps.\n  \"78-EUC-H\",\n  \"78-EUC-V\",\n  \"78-H\",\n  \"78-RKSJ-H\",\n  \"78-RKSJ-V\",\n  \"78-V\",\n  \"78ms-RKSJ-H\",\n  \"78ms-RKSJ-V\",\n  \"83pv-RKSJ-H\",\n  \"90ms-RKSJ-H\",\n  \"90ms-RKSJ-V\",\n  \"90msp-RKSJ-H\",\n  \"90msp-RKSJ-V\",\n  \"90pv-RKSJ-H\",\n  \"90pv-RKSJ-V\",\n  \"Add-H\",\n  \"Add-RKSJ-H\",\n  \"Add-RKSJ-V\",\n  \"Add-V\",\n  \"Adobe-CNS1-0\",\n  \"Adobe-CNS1-1\",\n  \"Adobe-CNS1-2\",\n  \"Adobe-CNS1-3\",\n  \"Adobe-CNS1-4\",\n  \"Adobe-CNS1-5\",\n  \"Adobe-CNS1-6\",\n  \"Adobe-GB1-0\",\n  \"Adobe-GB1-1\",\n  \"Adobe-GB1-2\",\n  \"Adobe-GB1-3\",\n  \"Adobe-GB1-4\",\n  \"Adobe-GB1-5\",\n  \"Adobe-Japan1-0\",\n  \"Adobe-Japan1-1\",\n  \"Adobe-Japan1-2\",\n  \"Adobe-Japan1-3\",\n  \"Adobe-Japan1-4\",\n  \"Adobe-Japan1-5\",\n  \"Adobe-Japan1-6\",\n  \"Adobe-Korea1-0\",\n  \"Adobe-Korea1-1\",\n  \"Adobe-Korea1-2\",\n  \"B5-H\",\n  \"B5-V\",\n  \"B5pc-H\",\n  \"B5pc-V\",\n  \"CNS-EUC-H\",\n  \"CNS-EUC-V\",\n  \"CNS1-H\",\n  \"CNS1-V\",\n  \"CNS2-H\",\n  \"CNS2-V\",\n  \"ETHK-B5-H\",\n  \"ETHK-B5-V\",\n  \"ETen-B5-H\",\n  \"ETen-B5-V\",\n  \"ETenms-B5-H\",\n  \"ETenms-B5-V\",\n  \"EUC-H\",\n  \"EUC-V\",\n  \"Ext-H\",\n  \"Ext-RKSJ-H\",\n  \"Ext-RKSJ-V\",\n  \"Ext-V\",\n  \"GB-EUC-H\",\n  \"GB-EUC-V\",\n  \"GB-H\",\n  \"GB-V\",\n  \"GBK-EUC-H\",\n  \"GBK-EUC-V\",\n  \"GBK2K-H\",\n  \"GBK2K-V\",\n  \"GBKp-EUC-H\",\n  \"GBKp-EUC-V\",\n  \"GBT-EUC-H\",\n  \"GBT-EUC-V\",\n  \"GBT-H\",\n  \"GBT-V\",\n  \"GBTpc-EUC-H\",\n  \"GBTpc-EUC-V\",\n  \"GBpc-EUC-H\",\n  \"GBpc-EUC-V\",\n  \"H\",\n  \"HKdla-B5-H\",\n  \"HKdla-B5-V\",\n  \"HKdlb-B5-H\",\n  \"HKdlb-B5-V\",\n  \"HKgccs-B5-H\",\n  \"HKgccs-B5-V\",\n  \"HKm314-B5-H\",\n  \"HKm314-B5-V\",\n  \"HKm471-B5-H\",\n  \"HKm471-B5-V\",\n  \"HKscs-B5-H\",\n  \"HKscs-B5-V\",\n  \"Hankaku\",\n  \"Hiragana\",\n  \"KSC-EUC-H\",\n  \"KSC-EUC-V\",\n  \"KSC-H\",\n  \"KSC-Johab-H\",\n  \"KSC-Johab-V\",\n  \"KSC-V\",\n  \"KSCms-UHC-H\",\n  \"KSCms-UHC-HW-H\",\n  \"KSCms-UHC-HW-V\",\n  \"KSCms-UHC-V\",\n  \"KSCpc-EUC-H\",\n  \"KSCpc-EUC-V\",\n  \"Katakana\",\n  \"NWP-H\",\n  \"NWP-V\",\n  \"RKSJ-H\",\n  \"RKSJ-V\",\n  \"Roman\",\n  \"UniCNS-UCS2-H\",\n  \"UniCNS-UCS2-V\",\n  \"UniCNS-UTF16-H\",\n  \"UniCNS-UTF16-V\",\n  \"UniCNS-UTF32-H\",\n  \"UniCNS-UTF32-V\",\n  \"UniCNS-UTF8-H\",\n  \"UniCNS-UTF8-V\",\n  \"UniGB-UCS2-H\",\n  \"UniGB-UCS2-V\",\n  \"UniGB-UTF16-H\",\n  \"UniGB-UTF16-V\",\n  \"UniGB-UTF32-H\",\n  \"UniGB-UTF32-V\",\n  \"UniGB-UTF8-H\",\n  \"UniGB-UTF8-V\",\n  \"UniJIS-UCS2-H\",\n  \"UniJIS-UCS2-HW-H\",\n  \"UniJIS-UCS2-HW-V\",\n  \"UniJIS-UCS2-V\",\n  \"UniJIS-UTF16-H\",\n  \"UniJIS-UTF16-V\",\n  \"UniJIS-UTF32-H\",\n  \"UniJIS-UTF32-V\",\n  \"UniJIS-UTF8-H\",\n  \"UniJIS-UTF8-V\",\n  \"UniJIS2004-UTF16-H\",\n  \"UniJIS2004-UTF16-V\",\n  \"UniJIS2004-UTF32-H\",\n  \"UniJIS2004-UTF32-V\",\n  \"UniJIS2004-UTF8-H\",\n  \"UniJIS2004-UTF8-V\",\n  \"UniJISPro-UCS2-HW-V\",\n  \"UniJISPro-UCS2-V\",\n  \"UniJISPro-UTF8-V\",\n  \"UniJISX0213-UTF32-H\",\n  \"UniJISX0213-UTF32-V\",\n  \"UniJISX02132004-UTF32-H\",\n  \"UniJISX02132004-UTF32-V\",\n  \"UniKS-UCS2-H\",\n  \"UniKS-UCS2-V\",\n  \"UniKS-UTF16-H\",\n  \"UniKS-UTF16-V\",\n  \"UniKS-UTF32-H\",\n  \"UniKS-UTF32-V\",\n  \"UniKS-UTF8-H\",\n  \"UniKS-UTF8-V\",\n  \"V\",\n  \"WP-Symbol\",\n];\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n  constructor(builtInCMap = false) {\n    // Codespace ranges are stored as follows:\n    // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n    // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n    this.codespaceRanges = [[], [], [], []];\n    this.numCodespaceRanges = 0;\n    // Map entries have one of two forms.\n    // - cid chars are 16-bit unsigned integers, stored as integers.\n    // - bf chars are variable-length byte sequences, stored as strings, with\n    //   one byte per character.\n    this._map = [];\n    this.name = \"\";\n    this.vertical = false;\n    this.useCMap = null;\n    this.builtInCMap = builtInCMap;\n  }\n\n  addCodespaceRange(n, low, high) {\n    this.codespaceRanges[n - 1].push(low, high);\n    this.numCodespaceRanges++;\n  }\n\n  mapCidRange(low, high, dstLow) {\n    while (low <= high) {\n      this._map[low++] = dstLow++;\n    }\n  }\n\n  mapBfRange(low, high, dstLow) {\n    var lastByte = dstLow.length - 1;\n    while (low <= high) {\n      this._map[low++] = dstLow;\n      // Only the last byte has to be incremented.\n      dstLow =\n        dstLow.substring(0, lastByte) +\n        String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);\n    }\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    const ii = array.length;\n    let i = 0;\n    while (low <= high && i < ii) {\n      this._map[low] = array[i++];\n      ++low;\n    }\n  }\n\n  // This is used for both bf and cid chars.\n  mapOne(src, dst) {\n    this._map[src] = dst;\n  }\n\n  lookup(code) {\n    return this._map[code];\n  }\n\n  contains(code) {\n    return this._map[code] !== undefined;\n  }\n\n  forEach(callback) {\n    // Most maps have fewer than 65536 entries, and for those we use normal\n    // array iteration. But really sparse tables are possible -- e.g. with\n    // indices in the *billions*. For such tables we use for..in, which isn't\n    // ideal because it stringifies the indices for all present elements, but\n    // it does avoid iterating over every undefined entry.\n    const map = this._map;\n    const length = map.length;\n    if (length <= 0x10000) {\n      for (let i = 0; i < length; i++) {\n        if (map[i] !== undefined) {\n          callback(i, map[i]);\n        }\n      }\n    } else {\n      for (const i in map) {\n        callback(i, map[i]);\n      }\n    }\n  }\n\n  charCodeOf(value) {\n    // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n    // are both very sparse and very large (see issue8372.pdf).\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n    return -1;\n  }\n\n  getMap() {\n    return this._map;\n  }\n\n  readCharCode(str, offset, out) {\n    let c = 0;\n    const codespaceRanges = this.codespaceRanges;\n    // 9.7.6.2 CMap Mapping\n    // The code length is at most 4.\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n      // Check each codespace range to see if it falls within.\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (c >= low && c <= high) {\n          out.charcode = c;\n          out.length = n + 1;\n          return;\n        }\n      }\n    }\n    out.charcode = 0;\n    out.length = 1;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  get isIdentityCMap() {\n    if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n      return false;\n    }\n    if (this._map.length !== 0x10000) {\n      return false;\n    }\n    for (let i = 0; i < 0x10000; i++) {\n      if (this._map[i] !== i) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n  constructor(vertical, n) {\n    super();\n\n    this.vertical = vertical;\n    this.addCodespaceRange(n, 0, 0xffff);\n  }\n\n  mapCidRange(low, high, dstLow) {\n    unreachable(\"should not call mapCidRange\");\n  }\n\n  mapBfRange(low, high, dstLow) {\n    unreachable(\"should not call mapBfRange\");\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    unreachable(\"should not call mapBfRangeToArray\");\n  }\n\n  mapOne(src, dst) {\n    unreachable(\"should not call mapCidOne\");\n  }\n\n  lookup(code) {\n    return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n  }\n\n  contains(code) {\n    return Number.isInteger(code) && code <= 0xffff;\n  }\n\n  forEach(callback) {\n    for (let i = 0; i <= 0xffff; i++) {\n      callback(i, i);\n    }\n  }\n\n  charCodeOf(value) {\n    return Number.isInteger(value) && value <= 0xffff ? value : -1;\n  }\n\n  getMap() {\n    // Sometimes identity maps must be instantiated, but it's rare.\n    const map = new Array(0x10000);\n    for (let i = 0; i <= 0xffff; i++) {\n      map[i] = i;\n    }\n    return map;\n  }\n\n  get length() {\n    return 0x10000;\n  }\n\n  // eslint-disable-next-line getter-return\n  get isIdentityCMap() {\n    unreachable(\"should not access .isIdentityCMap\");\n  }\n}\n\nvar BinaryCMapReader = (function BinaryCMapReaderClosure() {\n  function hexToInt(a, size) {\n    var n = 0;\n    for (var i = 0; i <= size; i++) {\n      n = (n << 8) | a[i];\n    }\n    return n >>> 0;\n  }\n\n  function hexToStr(a, size) {\n    // This code is hot. Special-case some common values to avoid creating an\n    // object with subarray().\n    if (size === 1) {\n      return String.fromCharCode(a[0], a[1]);\n    }\n    if (size === 3) {\n      return String.fromCharCode(a[0], a[1], a[2], a[3]);\n    }\n    return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n  }\n\n  function addHex(a, b, size) {\n    var c = 0;\n    for (var i = size; i >= 0; i--) {\n      c += a[i] + b[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  function incHex(a, size) {\n    var c = 1;\n    for (var i = size; i >= 0 && c > 0; i--) {\n      c += a[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  var MAX_NUM_SIZE = 16;\n  var MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n  function BinaryCMapStream(data) {\n    this.buffer = data;\n    this.pos = 0;\n    this.end = data.length;\n    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n  }\n\n  BinaryCMapStream.prototype = {\n    readByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.buffer[this.pos++];\n    },\n    readNumber() {\n      var n = 0;\n      var last;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        n = (n << 7) | (b & 0x7f);\n      } while (!last);\n      return n;\n    },\n    readSigned() {\n      var n = this.readNumber();\n      return n & 1 ? ~(n >>> 1) : n >>> 1;\n    },\n    readHex(num, size) {\n      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n      this.pos += size + 1;\n    },\n    readHexNumber(num, size) {\n      var last;\n      var stack = this.tmpBuf,\n        sp = 0;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        stack[sp++] = b & 0x7f;\n      } while (!last);\n      var i = size,\n        buffer = 0,\n        bufferSize = 0;\n      while (i >= 0) {\n        while (bufferSize < 8 && stack.length > 0) {\n          buffer = (stack[--sp] << bufferSize) | buffer;\n          bufferSize += 7;\n        }\n        num[i] = buffer & 255;\n        i--;\n        buffer >>= 8;\n        bufferSize -= 8;\n      }\n    },\n    readHexSigned(num, size) {\n      this.readHexNumber(num, size);\n      var sign = num[size] & 1 ? 255 : 0;\n      var c = 0;\n      for (var i = 0; i <= size; i++) {\n        c = ((c & 1) << 8) | num[i];\n        num[i] = (c >> 1) ^ sign;\n      }\n    },\n    readString() {\n      var len = this.readNumber();\n      var s = \"\";\n      for (var i = 0; i < len; i++) {\n        s += String.fromCharCode(this.readNumber());\n      }\n      return s;\n    },\n  };\n\n  function processBinaryCMap(data, cMap, extend) {\n    return new Promise(function(resolve, reject) {\n      var stream = new BinaryCMapStream(data);\n      var header = stream.readByte();\n      cMap.vertical = !!(header & 1);\n\n      var useCMap = null;\n      var start = new Uint8Array(MAX_NUM_SIZE);\n      var end = new Uint8Array(MAX_NUM_SIZE);\n      var char = new Uint8Array(MAX_NUM_SIZE);\n      var charCode = new Uint8Array(MAX_NUM_SIZE);\n      var tmp = new Uint8Array(MAX_NUM_SIZE);\n      var code;\n\n      var b;\n      while ((b = stream.readByte()) >= 0) {\n        var type = b >> 5;\n        if (type === 7) {\n          // metadata, e.g. comment or usecmap\n          switch (b & 0x1f) {\n            case 0:\n              stream.readString(); // skipping comment\n              break;\n            case 1:\n              useCMap = stream.readString();\n              break;\n          }\n          continue;\n        }\n        var sequence = !!(b & 0x10);\n        var dataSize = b & 15;\n\n        if (dataSize + 1 > MAX_NUM_SIZE) {\n          throw new Error(\"processBinaryCMap: Invalid dataSize.\");\n        }\n\n        var ucs2DataSize = 1;\n        var subitemsCount = stream.readNumber();\n        var i;\n        switch (type) {\n          case 0: // codespacerange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            cMap.addCodespaceRange(\n              dataSize + 1,\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              cMap.addCodespaceRange(\n                dataSize + 1,\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize)\n              );\n            }\n            break;\n          case 1: // notdefrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            stream.readNumber(); // code\n            // undefined range, skipping\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              stream.readNumber(); // code\n              // nop\n            }\n            break;\n          case 2: // cidchar\n            stream.readHex(char, dataSize);\n            code = stream.readNumber();\n            cMap.mapOne(hexToInt(char, dataSize), code);\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, dataSize);\n                addHex(char, tmp, dataSize);\n              }\n              code = stream.readSigned() + (code + 1);\n              cMap.mapOne(hexToInt(char, dataSize), code);\n            }\n            break;\n          case 3: // cidrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            code = stream.readNumber();\n            cMap.mapCidRange(\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize),\n              code\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, dataSize);\n                addHex(start, end, dataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              code = stream.readNumber();\n              cMap.mapCidRange(\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize),\n                code\n              );\n            }\n            break;\n          case 4: // bfchar\n            stream.readHex(char, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapOne(\n              hexToInt(char, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, ucs2DataSize);\n                addHex(char, tmp, ucs2DataSize);\n              }\n              incHex(charCode, dataSize);\n              stream.readHexSigned(tmp, dataSize);\n              addHex(charCode, tmp, dataSize);\n              cMap.mapOne(\n                hexToInt(char, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          case 5: // bfrange\n            stream.readHex(start, ucs2DataSize);\n            stream.readHexNumber(end, ucs2DataSize);\n            addHex(end, start, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapBfRange(\n              hexToInt(start, ucs2DataSize),\n              hexToInt(end, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, ucs2DataSize);\n                addHex(start, end, ucs2DataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, ucs2DataSize);\n              addHex(end, start, ucs2DataSize);\n              stream.readHex(charCode, dataSize);\n              cMap.mapBfRange(\n                hexToInt(start, ucs2DataSize),\n                hexToInt(end, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          default:\n            reject(new Error(\"processBinaryCMap: Unknown type: \" + type));\n            return;\n        }\n      }\n\n      if (useCMap) {\n        resolve(extend(useCMap));\n        return;\n      }\n      resolve(cMap);\n    });\n  }\n\n  function BinaryCMapReader() {}\n\n  BinaryCMapReader.prototype = {\n    process: processBinaryCMap,\n  };\n\n  return BinaryCMapReader;\n})();\n\nvar CMapFactory = (function CMapFactoryClosure() {\n  function strToInt(str) {\n    var a = 0;\n    for (var i = 0; i < str.length; i++) {\n      a = (a << 8) | str.charCodeAt(i);\n    }\n    return a >>> 0;\n  }\n\n  function expectString(obj) {\n    if (!isString(obj)) {\n      throw new FormatError(\"Malformed CMap: expected string.\");\n    }\n  }\n\n  function expectInt(obj) {\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\"Malformed CMap: expected int.\");\n    }\n  }\n\n  function parseBfChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endbfchar\")) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      // TODO are /dstName used?\n      expectString(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseBfRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endbfrange\")) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      if (Number.isInteger(obj) || isString(obj)) {\n        var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n        cMap.mapBfRange(low, high, dstLow);\n      } else if (isCmd(obj, \"[\")) {\n        obj = lexer.getObj();\n        var array = [];\n        while (!isCmd(obj, \"]\") && !isEOF(obj)) {\n          array.push(obj);\n          obj = lexer.getObj();\n        }\n        cMap.mapBfRangeToArray(low, high, array);\n      } else {\n        break;\n      }\n    }\n    throw new FormatError(\"Invalid bf range.\");\n  }\n\n  function parseCidChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcidchar\")) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseCidRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcidrange\")) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dstLow = obj;\n      cMap.mapCidRange(low, high, dstLow);\n    }\n  }\n\n  function parseCodespaceRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcodespacerange\")) {\n        return;\n      }\n      if (!isString(obj)) {\n        break;\n      }\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      if (!isString(obj)) {\n        break;\n      }\n      var high = strToInt(obj);\n      cMap.addCodespaceRange(obj.length, low, high);\n    }\n    throw new FormatError(\"Invalid codespace range.\");\n  }\n\n  function parseWMode(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (Number.isInteger(obj)) {\n      cMap.vertical = !!obj;\n    }\n  }\n\n  function parseCMapName(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (isName(obj) && isString(obj.name)) {\n      cMap.name = obj.name;\n    }\n  }\n\n  function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n    var previous;\n    var embeddedUseCMap;\n    objLoop: while (true) {\n      try {\n        var obj = lexer.getObj();\n        if (isEOF(obj)) {\n          break;\n        } else if (isName(obj)) {\n          if (obj.name === \"WMode\") {\n            parseWMode(cMap, lexer);\n          } else if (obj.name === \"CMapName\") {\n            parseCMapName(cMap, lexer);\n          }\n          previous = obj;\n        } else if (isCmd(obj)) {\n          switch (obj.cmd) {\n            case \"endcmap\":\n              break objLoop;\n            case \"usecmap\":\n              if (isName(previous)) {\n                embeddedUseCMap = previous.name;\n              }\n              break;\n            case \"begincodespacerange\":\n              parseCodespaceRange(cMap, lexer);\n              break;\n            case \"beginbfchar\":\n              parseBfChar(cMap, lexer);\n              break;\n            case \"begincidchar\":\n              parseCidChar(cMap, lexer);\n              break;\n            case \"beginbfrange\":\n              parseBfRange(cMap, lexer);\n              break;\n            case \"begincidrange\":\n              parseCidRange(cMap, lexer);\n              break;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(\"Invalid cMap data: \" + ex);\n        continue;\n      }\n    }\n\n    if (!useCMap && embeddedUseCMap) {\n      // Load the useCMap definition from the file only if there wasn't one\n      // specified.\n      useCMap = embeddedUseCMap;\n    }\n    if (useCMap) {\n      return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n    }\n    return Promise.resolve(cMap);\n  }\n\n  function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n    return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function(newCMap) {\n      cMap.useCMap = newCMap;\n      // If there aren't any code space ranges defined clone all the parent ones\n      // into this cMap.\n      if (cMap.numCodespaceRanges === 0) {\n        var useCodespaceRanges = cMap.useCMap.codespaceRanges;\n        for (var i = 0; i < useCodespaceRanges.length; i++) {\n          cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n        }\n        cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n      }\n      // Merge the map into the current one, making sure not to override\n      // any previously defined entries.\n      cMap.useCMap.forEach(function(key, value) {\n        if (!cMap.contains(key)) {\n          cMap.mapOne(key, cMap.useCMap.lookup(key));\n        }\n      });\n\n      return cMap;\n    });\n  }\n\n  function createBuiltInCMap(name, fetchBuiltInCMap) {\n    if (name === \"Identity-H\") {\n      return Promise.resolve(new IdentityCMap(false, 2));\n    } else if (name === \"Identity-V\") {\n      return Promise.resolve(new IdentityCMap(true, 2));\n    }\n    if (!BUILT_IN_CMAPS.includes(name)) {\n      return Promise.reject(new Error(\"Unknown CMap name: \" + name));\n    }\n    if (!fetchBuiltInCMap) {\n      return Promise.reject(\n        new Error(\"Built-in CMap parameters are not provided.\")\n      );\n    }\n\n    return fetchBuiltInCMap(name).then(function(data) {\n      var cMapData = data.cMapData,\n        compressionType = data.compressionType;\n      var cMap = new CMap(true);\n\n      if (compressionType === CMapCompressionType.BINARY) {\n        return new BinaryCMapReader().process(cMapData, cMap, function(\n          useCMap\n        ) {\n          return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n        });\n      }\n      if (compressionType === CMapCompressionType.NONE) {\n        var lexer = new Lexer(new Stream(cMapData));\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n      }\n      return Promise.reject(\n        new Error(\n          \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n        )\n      );\n    });\n  }\n\n  return {\n    async create(params) {\n      var encoding = params.encoding;\n      var fetchBuiltInCMap = params.fetchBuiltInCMap;\n      var useCMap = params.useCMap;\n\n      if (isName(encoding)) {\n        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n      } else if (isStream(encoding)) {\n        var cMap = new CMap();\n        var lexer = new Lexer(encoding);\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function(\n          parsedCMap\n        ) {\n          if (parsedCMap.isIdentityCMap) {\n            return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n          }\n          return parsedCMap;\n        });\n      }\n      throw new Error(\"Encoding required.\");\n    },\n  };\n})();\n\nexport { CMap, IdentityCMap, CMapFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FontType,\n  FormatError,\n  info,\n  isNum,\n  shadow,\n  string32,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  CFF,\n  CFFCharset,\n  CFFCompiler,\n  CFFHeader,\n  CFFIndex,\n  CFFParser,\n  CFFPrivateDict,\n  CFFStandardStrings,\n  CFFStrings,\n  CFFTopDict,\n} from \"./cff_parser.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n  getGlyphMapForStandardFonts,\n  getNonStdFontMap,\n  getStdFontMap,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport {\n  getUnicodeForGlyph,\n  getUnicodeRangeFor,\n  mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport {\n  isWhiteSpace,\n  MissingDataException,\n  readUint32,\n} from \"./core_utils.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n  [0xe000, 0xf8ff], // BMP (0)\n  [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nvar PDF_GLYPH_SPACE_UNITS = 1000;\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nvar SEAC_ANALYSIS_ENABLED = true;\n\nvar FontFlags = {\n  FixedPitch: 1,\n  Serif: 2,\n  Symbolic: 4,\n  Script: 8,\n  Nonsymbolic: 32,\n  Italic: 64,\n  AllCap: 65536,\n  SmallCap: 131072,\n  ForceBold: 262144,\n};\n\n// prettier-ignore\nvar MacStandardGlyphOrdering = [\n  \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n  \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n  \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n  \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n  \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n  \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n  \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n  \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n  \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n  \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n  \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n  \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n  \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n  \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n  \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n  \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n  \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n  \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n  \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n  \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n  \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n  \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n  \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n  \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n  \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n  \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n  \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n  \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n  \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n  \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n  \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n  \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n  \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction adjustWidths(properties) {\n  if (!properties.fontMatrix) {\n    return;\n  }\n  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n    return;\n  }\n  // adjusting width to fontMatrix scale\n  var scale = 0.001 / properties.fontMatrix[0];\n  var glyphsWidths = properties.widths;\n  for (var glyph in glyphsWidths) {\n    glyphsWidths[glyph] *= scale;\n  }\n  properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n  if (properties.hasIncludedToUnicodeMap) {\n    return; // The font dictionary has a `ToUnicode` entry.\n  }\n  if (properties.hasEncoding) {\n    return; // The font dictionary has an `Encoding` entry.\n  }\n  if (builtInEncoding === properties.defaultEncoding) {\n    return; // No point in trying to adjust `toUnicode` if the encodings match.\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  var toUnicode = [],\n    glyphsUnicodeMap = getGlyphsUnicode();\n  for (var charCode in builtInEncoding) {\n    var glyphName = builtInEncoding[charCode];\n    var unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toUnicode[charCode] = String.fromCharCode(unicode);\n    }\n  }\n  properties.toUnicode.amend(toUnicode);\n}\n\nfunction getFontType(type, subtype) {\n  switch (type) {\n    case \"Type1\":\n      return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n    case \"CIDFontType0\":\n      return subtype === \"CIDFontType0C\"\n        ? FontType.CIDFONTTYPE0C\n        : FontType.CIDFONTTYPE0;\n    case \"OpenType\":\n      return FontType.OPENTYPE;\n    case \"TrueType\":\n      return FontType.TRUETYPE;\n    case \"CIDFontType2\":\n      return FontType.CIDFONTTYPE2;\n    case \"MMType1\":\n      return FontType.MMTYPE1;\n    case \"Type0\":\n      return FontType.TYPE0;\n    default:\n      return FontType.UNKNOWN;\n  }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n  if (glyphsUnicodeMap[name] !== undefined) {\n    return name;\n  }\n  // The glyph name is non-standard, trying to recover.\n  var unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n  if (unicode !== -1) {\n    for (var key in glyphsUnicodeMap) {\n      if (glyphsUnicodeMap[key] === unicode) {\n        return key;\n      }\n    }\n  }\n  info(\"Unable to recover a standard glyph name for: \" + name);\n  return name;\n}\n\nvar Glyph = (function GlyphClosure() {\n  function Glyph(\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    this.fontChar = fontChar;\n    this.unicode = unicode;\n    this.accent = accent;\n    this.width = width;\n    this.vmetric = vmetric;\n    this.operatorListId = operatorListId;\n    this.isSpace = isSpace;\n    this.isInFont = isInFont;\n  }\n\n  Glyph.prototype.matchesForCache = function(\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    return (\n      this.fontChar === fontChar &&\n      this.unicode === unicode &&\n      this.accent === accent &&\n      this.width === width &&\n      this.vmetric === vmetric &&\n      this.operatorListId === operatorListId &&\n      this.isSpace === isSpace &&\n      this.isInFont === isInFont\n    );\n  };\n\n  return Glyph;\n})();\n\nvar ToUnicodeMap = (function ToUnicodeMapClosure() {\n  function ToUnicodeMap(cmap = []) {\n    // The elements of this._map can be integers or strings, depending on how\n    // `cmap` was created.\n    this._map = cmap;\n  }\n\n  ToUnicodeMap.prototype = {\n    get length() {\n      return this._map.length;\n    },\n\n    forEach(callback) {\n      for (var charCode in this._map) {\n        callback(charCode, this._map[charCode].charCodeAt(0));\n      }\n    },\n\n    has(i) {\n      return this._map[i] !== undefined;\n    },\n\n    get(i) {\n      return this._map[i];\n    },\n\n    charCodeOf(value) {\n      // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n      // are both very sparse and very large (see issue8372.pdf).\n      const map = this._map;\n      if (map.length <= 0x10000) {\n        return map.indexOf(value);\n      }\n      for (const charCode in map) {\n        if (map[charCode] === value) {\n          return charCode | 0;\n        }\n      }\n      return -1;\n    },\n\n    amend(map) {\n      for (var charCode in map) {\n        this._map[charCode] = map[charCode];\n      }\n    },\n  };\n\n  return ToUnicodeMap;\n})();\n\nvar IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() {\n  function IdentityToUnicodeMap(firstChar, lastChar) {\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n  }\n\n  IdentityToUnicodeMap.prototype = {\n    get length() {\n      return this.lastChar + 1 - this.firstChar;\n    },\n\n    forEach(callback) {\n      for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n        callback(i, i);\n      }\n    },\n\n    has(i) {\n      return this.firstChar <= i && i <= this.lastChar;\n    },\n\n    get(i) {\n      if (this.firstChar <= i && i <= this.lastChar) {\n        return String.fromCharCode(i);\n      }\n      return undefined;\n    },\n\n    charCodeOf(v) {\n      return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n        ? v\n        : -1;\n    },\n\n    amend(map) {\n      unreachable(\"Should not call amend()\");\n    },\n  };\n\n  return IdentityToUnicodeMap;\n})();\n\nvar OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() {\n  function writeInt16(dest, offset, num) {\n    dest[offset] = (num >> 8) & 0xff;\n    dest[offset + 1] = num & 0xff;\n  }\n\n  function writeInt32(dest, offset, num) {\n    dest[offset] = (num >> 24) & 0xff;\n    dest[offset + 1] = (num >> 16) & 0xff;\n    dest[offset + 2] = (num >> 8) & 0xff;\n    dest[offset + 3] = num & 0xff;\n  }\n\n  function writeData(dest, offset, data) {\n    var i, ii;\n    if (data instanceof Uint8Array) {\n      dest.set(data, offset);\n    } else if (typeof data === \"string\") {\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data.charCodeAt(i) & 0xff;\n      }\n    } else {\n      // treating everything else as array\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data[i] & 0xff;\n      }\n    }\n  }\n\n  function OpenTypeFileBuilder(sfnt) {\n    this.sfnt = sfnt;\n    this.tables = Object.create(null);\n  }\n\n  OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(\n    entriesCount,\n    entrySize\n  ) {\n    var maxPower2 = 1,\n      log2 = 0;\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\n      maxPower2 <<= 1;\n      log2++;\n    }\n    var searchRange = maxPower2 * entrySize;\n    return {\n      range: searchRange,\n      entry: log2,\n      rangeShift: entrySize * entriesCount - searchRange,\n    };\n  };\n\n  var OTF_HEADER_SIZE = 12;\n  var OTF_TABLE_ENTRY_SIZE = 16;\n\n  OpenTypeFileBuilder.prototype = {\n    toArray: function OpenTypeFileBuilder_toArray() {\n      var sfnt = this.sfnt;\n\n      // Tables needs to be written by ascendant alphabetic order\n      var tables = this.tables;\n      var tablesNames = Object.keys(tables);\n      tablesNames.sort();\n      var numTables = tablesNames.length;\n\n      var i, j, jj, table, tableName;\n      // layout the tables data\n      var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n      var tableOffsets = [offset];\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        var paddedLength = ((table.length + 3) & ~3) >>> 0;\n        offset += paddedLength;\n        tableOffsets.push(offset);\n      }\n\n      var file = new Uint8Array(offset);\n      // write the table data first (mostly for checksum)\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        writeData(file, tableOffsets[i], table);\n      }\n\n      // sfnt version (4 bytes)\n      if (sfnt === \"true\") {\n        // Windows hates the Mac TrueType sfnt version number\n        sfnt = string32(0x00010000);\n      }\n      file[0] = sfnt.charCodeAt(0) & 0xff;\n      file[1] = sfnt.charCodeAt(1) & 0xff;\n      file[2] = sfnt.charCodeAt(2) & 0xff;\n      file[3] = sfnt.charCodeAt(3) & 0xff;\n\n      // numTables (2 bytes)\n      writeInt16(file, 4, numTables);\n\n      var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n      // searchRange (2 bytes)\n      writeInt16(file, 6, searchParams.range);\n      // entrySelector (2 bytes)\n      writeInt16(file, 8, searchParams.entry);\n      // rangeShift (2 bytes)\n      writeInt16(file, 10, searchParams.rangeShift);\n\n      offset = OTF_HEADER_SIZE;\n      // writing table entries\n      for (i = 0; i < numTables; i++) {\n        tableName = tablesNames[i];\n        file[offset] = tableName.charCodeAt(0) & 0xff;\n        file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n        file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n        file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n        // checksum\n        var checksum = 0;\n        for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n          var quad = readUint32(file, j);\n          checksum = (checksum + quad) >>> 0;\n        }\n        writeInt32(file, offset + 4, checksum);\n\n        // offset\n        writeInt32(file, offset + 8, tableOffsets[i]);\n        // length\n        writeInt32(file, offset + 12, tables[tableName].length);\n\n        offset += OTF_TABLE_ENTRY_SIZE;\n      }\n      return file;\n    },\n\n    addTable: function OpenTypeFileBuilder_addTable(tag, data) {\n      if (tag in this.tables) {\n        throw new Error(\"Table \" + tag + \" already exists\");\n      }\n      this.tables[tag] = data;\n    },\n  };\n\n  return OpenTypeFileBuilder;\n})();\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n *\n * For example to read a Type1 font and to attach it to the document:\n *   var type1Font = new Font(\"MyFontName\", binaryFile, propertiesObject);\n *   type1Font.bind();\n */\nvar Font = (function FontClosure() {\n  function Font(name, file, properties) {\n    var charCode;\n\n    this.name = name;\n    this.loadedName = properties.loadedName;\n    this.isType3Font = properties.isType3Font;\n    this.sizes = [];\n    this.missingFile = false;\n\n    this.glyphCache = Object.create(null);\n\n    this.isSerifFont = !!(properties.flags & FontFlags.Serif);\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n    var type = properties.type;\n    var subtype = properties.subtype;\n    this.type = type;\n    this.subtype = subtype;\n\n    let fallbackName = \"sans-serif\";\n    if (this.isMonospace) {\n      fallbackName = \"monospace\";\n    } else if (this.isSerifFont) {\n      fallbackName = \"serif\";\n    }\n    this.fallbackName = fallbackName;\n\n    this.differences = properties.differences;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.composite = properties.composite;\n    this.wideChars = properties.wideChars;\n    this.cMap = properties.cMap;\n    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n    this.fontMatrix = properties.fontMatrix;\n    this.bbox = properties.bbox;\n    this.defaultEncoding = properties.defaultEncoding;\n\n    this.toUnicode = properties.toUnicode;\n    this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap();\n\n    this.toFontChar = [];\n\n    if (properties.type === \"Type3\") {\n      for (charCode = 0; charCode < 256; charCode++) {\n        this.toFontChar[charCode] =\n          this.differences[charCode] || properties.defaultEncoding[charCode];\n      }\n      this.fontType = FontType.TYPE3;\n      return;\n    }\n\n    this.cidEncoding = properties.cidEncoding;\n    this.vertical = properties.vertical;\n    if (this.vertical) {\n      this.vmetrics = properties.vmetrics;\n      this.defaultVMetrics = properties.defaultVMetrics;\n    }\n\n    if (!file || file.isEmpty) {\n      if (file) {\n        // Some bad PDF generators will include empty font files,\n        // attempting to recover by assuming that no file exists.\n        warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n      }\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    // Parse the font file to determine the correct type/subtype, rather than\n    // relying on the (often incorrect) data in the font dictionary; (see e.g.\n    //  issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n    [type, subtype] = getFontFileType(file, properties);\n\n    if (type !== this.type || subtype !== this.subtype) {\n      info(\n        \"Inconsistent font file Type/SubType, expected: \" +\n          `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n      );\n    }\n\n    try {\n      var data;\n      switch (type) {\n        case \"MMType1\":\n          info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n        /* falls through */\n        case \"Type1\":\n        case \"CIDFontType0\":\n          this.mimetype = \"font/opentype\";\n\n          var cff =\n            subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n              ? new CFFFont(file, properties)\n              : new Type1Font(name, file, properties);\n\n          adjustWidths(properties);\n\n          // Wrap the CFF data inside an OTF font file\n          data = this.convert(name, cff, properties);\n          break;\n\n        case \"OpenType\":\n        case \"TrueType\":\n        case \"CIDFontType2\":\n          this.mimetype = \"font/opentype\";\n\n          // Repair the TrueType file. It is can be damaged in the point of\n          // view of the sanitizer\n          data = this.checkAndRepair(name, file, properties);\n          if (this.isOpenType) {\n            adjustWidths(properties);\n\n            type = \"OpenType\";\n          }\n          break;\n\n        default:\n          throw new FormatError(`Font ${type} is not supported`);\n      }\n    } catch (e) {\n      warn(e);\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    this.data = data;\n    this.fontType = getFontType(type, subtype);\n\n    // Transfer some properties again that could change during font conversion\n    this.fontMatrix = properties.fontMatrix;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.toUnicode = properties.toUnicode;\n    this.encoding = properties.baseEncoding;\n    this.seacMap = properties.seacMap;\n  }\n\n  Font.getFontID = (function() {\n    var ID = 1;\n    return function Font_getFontID() {\n      return String(ID++);\n    };\n  })();\n\n  function int16(b0, b1) {\n    return (b0 << 8) + b1;\n  }\n\n  function writeSignedInt16(bytes, index, value) {\n    bytes[index + 1] = value;\n    bytes[index] = value >>> 8;\n  }\n\n  function signedInt16(b0, b1) {\n    var value = (b0 << 8) + b1;\n    return value & (1 << 15) ? value - 0x10000 : value;\n  }\n\n  function int32(b0, b1, b2, b3) {\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  function string16(value) {\n    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n  }\n\n  function safeString16(value) {\n    // clamp value to the 16-bit int range\n    if (value > 0x7fff) {\n      value = 0x7fff;\n    } else if (value < -0x8000) {\n      value = -0x8000;\n    }\n    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n  }\n\n  function isTrueTypeFile(file) {\n    var header = file.peekBytes(4);\n    return (\n      readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n    );\n  }\n\n  function isTrueTypeCollectionFile(file) {\n    const header = file.peekBytes(4);\n    return bytesToString(header) === \"ttcf\";\n  }\n\n  function isOpenTypeFile(file) {\n    var header = file.peekBytes(4);\n    return bytesToString(header) === \"OTTO\";\n  }\n\n  function isType1File(file) {\n    var header = file.peekBytes(2);\n    // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n    if (header[0] === 0x25 && header[1] === 0x21) {\n      return true;\n    }\n    // ... obviously some fonts violate that part of the specification,\n    // please refer to the comment in |Type1Font| below (pfb file header).\n    if (header[0] === 0x80 && header[1] === 0x01) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Compared to other font formats, the header in CFF files is not constant\n   * but contains version numbers. To reduce the possibility of misclassifying\n   * font files as CFF, it's recommended to check for other font formats first.\n   */\n  function isCFFFile(file) {\n    const header = file.peekBytes(4);\n    if (\n      /* major version, [1, 255] */ header[0] >= 1 &&\n      /* minor version, [0, 255]; header[1] */\n      /* header size, [0, 255]; header[2] */\n      /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n      header[3] <= 4\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  function getFontFileType(file, { type, subtype, composite }) {\n    let fileType, fileSubtype;\n\n    if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType2\";\n      } else {\n        fileType = \"TrueType\";\n      }\n    } else if (isOpenTypeFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType2\";\n      } else {\n        fileType = \"OpenType\";\n      }\n    } else if (isType1File(file)) {\n      if (composite) {\n        fileType = \"CIDFontType0\";\n      } else {\n        fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n      }\n    } else if (isCFFFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType0\";\n        fileSubtype = \"CIDFontType0C\";\n      } else {\n        fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n        fileSubtype = \"Type1C\";\n      }\n    } else {\n      warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n      fileType = type;\n      fileSubtype = subtype;\n    }\n\n    return [fileType, fileSubtype];\n  }\n\n  function buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n    var toFontChar = [],\n      unicode;\n    for (var i = 0, ii = encoding.length; i < ii; i++) {\n      unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[i] = unicode;\n      }\n    }\n    for (var charCode in differences) {\n      unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[+charCode] = unicode;\n      }\n    }\n    return toFontChar;\n  }\n\n  /**\n   * Rebuilds the char code to glyph ID map by moving all char codes to the\n   * private use area. This is done to avoid issues with various problematic\n   * unicode areas where either a glyph won't be drawn or is deformed by a\n   * shaper.\n   * @returns {Object} Two properties:\n   * 'toFontChar' - maps original char codes(the value that will be read\n   * from commands such as show text) to the char codes that will be used in the\n   * font that we build\n   * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n   */\n  function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n    var newMap = Object.create(null);\n    var toFontChar = [];\n    var privateUseAreaIndex = 0;\n    var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n    var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n    for (var originalCharCode in charCodeToGlyphId) {\n      originalCharCode |= 0;\n      var glyphId = charCodeToGlyphId[originalCharCode];\n      // For missing glyphs don't create the mappings so the glyph isn't\n      // drawn.\n      if (!hasGlyph(glyphId)) {\n        continue;\n      }\n      if (nextAvailableFontCharCode > privateUseOffetEnd) {\n        privateUseAreaIndex++;\n        if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n          warn(\"Ran out of space in font private use area.\");\n          break;\n        }\n        nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n        privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n      }\n      var fontCharCode = nextAvailableFontCharCode++;\n      if (glyphId === 0) {\n        glyphId = newGlyphZeroId;\n      }\n\n      newMap[fontCharCode] = glyphId;\n      toFontChar[originalCharCode] = fontCharCode;\n    }\n    return {\n      toFontChar,\n      charCodeToGlyphId: newMap,\n      nextAvailableFontCharCode,\n    };\n  }\n\n  function getRanges(glyphs, numGlyphs) {\n    // Array.sort() sorts by characters, not numerically, so convert to an\n    // array of characters.\n    var codes = [];\n    for (var charCode in glyphs) {\n      // Remove an invalid glyph ID mappings to make OTS happy.\n      if (glyphs[charCode] >= numGlyphs) {\n        continue;\n      }\n      codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n    }\n    // Some fonts have zero glyphs and are used only for text selection, but\n    // there needs to be at least one to build a valid cmap table.\n    if (codes.length === 0) {\n      codes.push({ fontCharCode: 0, glyphId: 0 });\n    }\n    codes.sort(function fontGetRangesSort(a, b) {\n      return a.fontCharCode - b.fontCharCode;\n    });\n\n    // Split the sorted codes into ranges.\n    var ranges = [];\n    var length = codes.length;\n    for (var n = 0; n < length; ) {\n      var start = codes[n].fontCharCode;\n      var codeIndices = [codes[n].glyphId];\n      ++n;\n      var end = start;\n      while (n < length && end + 1 === codes[n].fontCharCode) {\n        codeIndices.push(codes[n].glyphId);\n        ++end;\n        ++n;\n        if (end === 0xffff) {\n          break;\n        }\n      }\n      ranges.push([start, end, codeIndices]);\n    }\n\n    return ranges;\n  }\n\n  function createCmapTable(glyphs, numGlyphs) {\n    var ranges = getRanges(glyphs, numGlyphs);\n    var numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n    var cmap =\n      \"\\x00\\x00\" + // version\n      string16(numTables) + // numTables\n      \"\\x00\\x03\" + // platformID\n      \"\\x00\\x01\" + // encodingID\n      string32(4 + numTables * 8); // start of the table record\n\n    var i, ii, j, jj;\n    for (i = ranges.length - 1; i >= 0; --i) {\n      if (ranges[i][0] <= 0xffff) {\n        break;\n      }\n    }\n    var bmpLength = i + 1;\n\n    if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n      ranges[i][1] = 0xfffe;\n    }\n    var trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n    var segCount = bmpLength + trailingRangesCount;\n    var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n    // Fill up the 4 parallel arrays describing the segments.\n    var startCount = \"\";\n    var endCount = \"\";\n    var idDeltas = \"\";\n    var idRangeOffsets = \"\";\n    var glyphsIds = \"\";\n    var bias = 0;\n\n    var range, start, end, codes;\n    for (i = 0, ii = bmpLength; i < ii; i++) {\n      range = ranges[i];\n      start = range[0];\n      end = range[1];\n      startCount += string16(start);\n      endCount += string16(end);\n      codes = range[2];\n      var contiguous = true;\n      for (j = 1, jj = codes.length; j < jj; ++j) {\n        if (codes[j] !== codes[j - 1] + 1) {\n          contiguous = false;\n          break;\n        }\n      }\n      if (!contiguous) {\n        var offset = (segCount - i) * 2 + bias * 2;\n        bias += end - start + 1;\n\n        idDeltas += string16(0);\n        idRangeOffsets += string16(offset);\n\n        for (j = 0, jj = codes.length; j < jj; ++j) {\n          glyphsIds += string16(codes[j]);\n        }\n      } else {\n        var startCode = codes[0];\n\n        idDeltas += string16((startCode - start) & 0xffff);\n        idRangeOffsets += string16(0);\n      }\n    }\n\n    if (trailingRangesCount > 0) {\n      endCount += \"\\xFF\\xFF\";\n      startCount += \"\\xFF\\xFF\";\n      idDeltas += \"\\x00\\x01\";\n      idRangeOffsets += \"\\x00\\x00\";\n    }\n\n    var format314 =\n      \"\\x00\\x00\" + // language\n      string16(2 * segCount) +\n      string16(searchParams.range) +\n      string16(searchParams.entry) +\n      string16(searchParams.rangeShift) +\n      endCount +\n      \"\\x00\\x00\" +\n      startCount +\n      idDeltas +\n      idRangeOffsets +\n      glyphsIds;\n\n    var format31012 = \"\";\n    var header31012 = \"\";\n    if (numTables > 1) {\n      cmap +=\n        \"\\x00\\x03\" + // platformID\n        \"\\x00\\x0A\" + // encodingID\n        string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n      format31012 = \"\";\n      for (i = 0, ii = ranges.length; i < ii; i++) {\n        range = ranges[i];\n        start = range[0];\n        codes = range[2];\n        var code = codes[0];\n        for (j = 1, jj = codes.length; j < jj; ++j) {\n          if (codes[j] !== codes[j - 1] + 1) {\n            end = range[0] + j - 1;\n            format31012 +=\n              string32(start) + // startCharCode\n              string32(end) + // endCharCode\n              string32(code); // startGlyphID\n            start = end + 1;\n            code = codes[j];\n          }\n        }\n        format31012 +=\n          string32(start) + // startCharCode\n          string32(range[1]) + // endCharCode\n          string32(code); // startGlyphID\n      }\n      header31012 =\n        \"\\x00\\x0C\" + // format\n        \"\\x00\\x00\" + // reserved\n        string32(format31012.length + 16) + // length\n        \"\\x00\\x00\\x00\\x00\" + // language\n        string32(format31012.length / 12); // nGroups\n    }\n\n    return (\n      cmap +\n      \"\\x00\\x04\" + // format\n      string16(format314.length + 4) + // length\n      format314 +\n      header31012 +\n      format31012\n    );\n  }\n\n  function validateOS2Table(os2) {\n    var stream = new Stream(os2.data);\n    var version = stream.getUint16();\n    // TODO verify all OS/2 tables fields, but currently we validate only those\n    // that give us issues\n    stream.getBytes(60); // skipping type, misc sizes, panose, unicode ranges\n    var selection = stream.getUint16();\n    if (version < 4 && selection & 0x0300) {\n      return false;\n    }\n    var firstChar = stream.getUint16();\n    var lastChar = stream.getUint16();\n    if (firstChar > lastChar) {\n      return false;\n    }\n    stream.getBytes(6); // skipping sTypoAscender/Descender/LineGap\n    var usWinAscent = stream.getUint16();\n    if (usWinAscent === 0) {\n      // makes font unreadable by windows\n      return false;\n    }\n\n    // OS/2 appears to be valid, resetting some fields\n    os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n    return true;\n  }\n\n  function createOS2Table(properties, charstrings, override) {\n    override = override || {\n      unitsPerEm: 0,\n      yMax: 0,\n      yMin: 0,\n      ascent: 0,\n      descent: 0,\n    };\n\n    var ulUnicodeRange1 = 0;\n    var ulUnicodeRange2 = 0;\n    var ulUnicodeRange3 = 0;\n    var ulUnicodeRange4 = 0;\n\n    var firstCharIndex = null;\n    var lastCharIndex = 0;\n\n    if (charstrings) {\n      for (var code in charstrings) {\n        code |= 0;\n        if (firstCharIndex > code || !firstCharIndex) {\n          firstCharIndex = code;\n        }\n        if (lastCharIndex < code) {\n          lastCharIndex = code;\n        }\n\n        var position = getUnicodeRangeFor(code);\n        if (position < 32) {\n          ulUnicodeRange1 |= 1 << position;\n        } else if (position < 64) {\n          ulUnicodeRange2 |= 1 << (position - 32);\n        } else if (position < 96) {\n          ulUnicodeRange3 |= 1 << (position - 64);\n        } else if (position < 123) {\n          ulUnicodeRange4 |= 1 << (position - 96);\n        } else {\n          throw new FormatError(\n            \"Unicode ranges Bits > 123 are reserved for internal usage\"\n          );\n        }\n      }\n      if (lastCharIndex > 0xffff) {\n        // OS2 only supports a 16 bit int. The spec says if supplementary\n        // characters are used the field should just be set to 0xFFFF.\n        lastCharIndex = 0xffff;\n      }\n    } else {\n      // TODO\n      firstCharIndex = 0;\n      lastCharIndex = 255;\n    }\n\n    var bbox = properties.bbox || [0, 0, 0, 0];\n    var unitsPerEm =\n      override.unitsPerEm ||\n      1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n    // if the font units differ to the PDF glyph space units\n    // then scale up the values\n    var scale = properties.ascentScaled\n      ? 1.0\n      : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n    var typoAscent =\n      override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n    var typoDescent =\n      override.descent || Math.round(scale * (properties.descent || bbox[1]));\n    if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n      typoDescent = -typoDescent; // fixing incorrect descent\n    }\n    var winAscent = override.yMax || typoAscent;\n    var winDescent = -override.yMin || -typoDescent;\n\n    return (\n      \"\\x00\\x03\" + // version\n      \"\\x02\\x24\" + // xAvgCharWidth\n      \"\\x01\\xF4\" + // usWeightClass\n      \"\\x00\\x05\" + // usWidthClass\n      \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n      \"\\x02\\x8A\" + // ySubscriptXSize\n      \"\\x02\\xBB\" + // ySubscriptYSize\n      \"\\x00\\x00\" + // ySubscriptXOffset\n      \"\\x00\\x8C\" + // ySubscriptYOffset\n      \"\\x02\\x8A\" + // ySuperScriptXSize\n      \"\\x02\\xBB\" + // ySuperScriptYSize\n      \"\\x00\\x00\" + // ySuperScriptXOffset\n      \"\\x01\\xDF\" + // ySuperScriptYOffset\n      \"\\x00\\x31\" + // yStrikeOutSize\n      \"\\x01\\x02\" + // yStrikeOutPosition\n      \"\\x00\\x00\" + // sFamilyClass\n      \"\\x00\\x00\\x06\" +\n      String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n      \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n      string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n      string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n      string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n      string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n      \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n      string16(properties.italicAngle ? 1 : 0) + // fsSelection\n      string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n      string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n      string16(typoAscent) + // sTypoAscender\n      string16(typoDescent) + // sTypoDescender\n      \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n      string16(winAscent) + // usWinAscent\n      string16(winDescent) + // usWinDescent\n      \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n      \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n      string16(properties.xHeight) + // sxHeight\n      string16(properties.capHeight) + // sCapHeight\n      string16(0) + // usDefaultChar\n      string16(firstCharIndex || properties.firstChar) + // usBreakChar\n      \"\\x00\\x03\"\n    ); // usMaxContext\n  }\n\n  function createPostTable(properties) {\n    var angle = Math.floor(properties.italicAngle * 2 ** 16);\n    return (\n      \"\\x00\\x03\\x00\\x00\" + // Version number\n      string32(angle) + // italicAngle\n      \"\\x00\\x00\" + // underlinePosition\n      \"\\x00\\x00\" + // underlineThickness\n      string32(properties.fixedPitch) + // isFixedPitch\n      \"\\x00\\x00\\x00\\x00\" + // minMemType42\n      \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n      \"\\x00\\x00\\x00\\x00\" + // minMemType1\n      \"\\x00\\x00\\x00\\x00\"\n    ); // maxMemType1\n  }\n\n  function createNameTable(name, proto) {\n    if (!proto) {\n      proto = [[], []]; // no strings and unicode strings\n    }\n\n    var strings = [\n      proto[0][0] || \"Original licence\", // 0.Copyright\n      proto[0][1] || name, // 1.Font family\n      proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n      proto[0][3] || \"uniqueID\", // 3.Unique ID\n      proto[0][4] || name, // 4.Full font name\n      proto[0][5] || \"Version 0.11\", // 5.Version\n      proto[0][6] || \"\", // 6.Postscript name\n      proto[0][7] || \"Unknown\", // 7.Trademark\n      proto[0][8] || \"Unknown\", // 8.Manufacturer\n      proto[0][9] || \"Unknown\", // 9.Designer\n    ];\n\n    // Mac want 1-byte per character strings while Windows want\n    // 2-bytes per character, so duplicate the names table\n    var stringsUnicode = [];\n    var i, ii, j, jj, str;\n    for (i = 0, ii = strings.length; i < ii; i++) {\n      str = proto[1][i] || strings[i];\n\n      var strBufUnicode = [];\n      for (j = 0, jj = str.length; j < jj; j++) {\n        strBufUnicode.push(string16(str.charCodeAt(j)));\n      }\n      stringsUnicode.push(strBufUnicode.join(\"\"));\n    }\n\n    var names = [strings, stringsUnicode];\n    var platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n    var encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n    var languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n    var namesRecordCount = strings.length * platforms.length;\n    var nameTable =\n      \"\\x00\\x00\" + // format\n      string16(namesRecordCount) + // Number of names Record\n      string16(namesRecordCount * 12 + 6); // Storage\n\n    // Build the name records field\n    var strOffset = 0;\n    for (i = 0, ii = platforms.length; i < ii; i++) {\n      var strs = names[i];\n      for (j = 0, jj = strs.length; j < jj; j++) {\n        str = strs[j];\n        var nameRecord =\n          platforms[i] + // platform ID\n          encodings[i] + // encoding ID\n          languages[i] + // language ID\n          string16(j) + // name ID\n          string16(str.length) +\n          string16(strOffset);\n        nameTable += nameRecord;\n        strOffset += str.length;\n      }\n    }\n\n    nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n    return nameTable;\n  }\n\n  Font.prototype = {\n    name: null,\n    font: null,\n    mimetype: null,\n    encoding: null,\n    disableFontFace: false,\n\n    get renderer() {\n      var renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n      return shadow(this, \"renderer\", renderer);\n    },\n\n    exportData: function Font_exportData() {\n      // TODO remove enumerating of the properties, e.g. hardcode exact names.\n      var data = {};\n      for (var i in this) {\n        if (this.hasOwnProperty(i)) {\n          data[i] = this[i];\n        }\n      }\n      return data;\n    },\n\n    fallbackToSystemFont: function Font_fallbackToSystemFont() {\n      this.missingFile = true;\n      var charCode, unicode;\n      // The file data is not specified. Trying to fix the font name\n      // to be used with the canvas.font.\n      var name = this.name;\n      var type = this.type;\n      var subtype = this.subtype;\n      let fontName = name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n      var stdFontMap = getStdFontMap(),\n        nonStdFontMap = getNonStdFontMap();\n      var isStandardFont =\n        !!stdFontMap[fontName] ||\n        !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n      fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n      this.bold = fontName.search(/bold/gi) !== -1;\n      this.italic =\n        fontName.search(/oblique/gi) !== -1 ||\n        fontName.search(/italic/gi) !== -1;\n\n      // Use 'name' instead of 'fontName' here because the original\n      // name ArialBlack for example will be replaced by Helvetica.\n      this.black = name.search(/Black/g) !== -1;\n\n      // if at least one width is present, remeasure all chars when exists\n      this.remeasure = Object.keys(this.widths).length > 0;\n      if (\n        isStandardFont &&\n        type === \"CIDFontType2\" &&\n        this.cidEncoding.startsWith(\"Identity-\")\n      ) {\n        const GlyphMapForStandardFonts = getGlyphMapForStandardFonts();\n        // Standard fonts might be embedded as CID font without glyph mapping.\n        // Building one based on GlyphMapForStandardFonts.\n        const map = [];\n        for (charCode in GlyphMapForStandardFonts) {\n          map[+charCode] = GlyphMapForStandardFonts[charCode];\n        }\n        if (/Arial-?Black/i.test(name)) {\n          var SupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack();\n          for (charCode in SupplementalGlyphMapForArialBlack) {\n            map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];\n          }\n        } else if (/Calibri/i.test(name)) {\n          const SupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri();\n          for (charCode in SupplementalGlyphMapForCalibri) {\n            map[+charCode] = SupplementalGlyphMapForCalibri[charCode];\n          }\n        }\n\n        var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;\n        if (!isIdentityUnicode) {\n          this.toUnicode.forEach(function(charCode, unicodeCharCode) {\n            map[+charCode] = unicodeCharCode;\n          });\n        }\n        this.toFontChar = map;\n        this.toUnicode = new ToUnicodeMap(map);\n      } else if (/Symbol/i.test(fontName)) {\n        this.toFontChar = buildToFontChar(\n          SymbolSetEncoding,\n          getGlyphsUnicode(),\n          this.differences\n        );\n      } else if (/Dingbats/i.test(fontName)) {\n        if (/Wingdings/i.test(name)) {\n          warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n        }\n        this.toFontChar = buildToFontChar(\n          ZapfDingbatsEncoding,\n          getDingbatsGlyphsUnicode(),\n          this.differences\n        );\n      } else if (isStandardFont) {\n        this.toFontChar = buildToFontChar(\n          this.defaultEncoding,\n          getGlyphsUnicode(),\n          this.differences\n        );\n      } else {\n        const glyphsUnicodeMap = getGlyphsUnicode();\n        const map = [];\n        this.toUnicode.forEach((charCode, unicodeCharCode) => {\n          if (!this.composite) {\n            var glyphName =\n              this.differences[charCode] || this.defaultEncoding[charCode];\n            unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n            if (unicode !== -1) {\n              unicodeCharCode = unicode;\n            }\n          }\n          map[+charCode] = unicodeCharCode;\n        });\n\n        // Attempt to improve the glyph mapping for (some) composite fonts that\n        // appear to lack meaningful ToUnicode data.\n        if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n          if (/Verdana/i.test(name)) {\n            // Fixes issue11242_reduced.pdf\n            const GlyphMapForStandardFonts = getGlyphMapForStandardFonts();\n            for (charCode in GlyphMapForStandardFonts) {\n              map[+charCode] = GlyphMapForStandardFonts[charCode];\n            }\n          }\n        }\n        this.toFontChar = map;\n      }\n      this.loadedName = fontName.split(\"-\")[0];\n      this.fontType = getFontType(type, subtype);\n    },\n\n    checkAndRepair: function Font_checkAndRepair(name, font, properties) {\n      const VALID_TABLES = [\n        \"OS/2\",\n        \"cmap\",\n        \"head\",\n        \"hhea\",\n        \"hmtx\",\n        \"maxp\",\n        \"name\",\n        \"post\",\n        \"loca\",\n        \"glyf\",\n        \"fpgm\",\n        \"prep\",\n        \"cvt \",\n        \"CFF \",\n      ];\n\n      function readTables(file, numTables) {\n        const tables = Object.create(null);\n        tables[\"OS/2\"] = null;\n        tables[\"cmap\"] = null;\n        tables[\"head\"] = null;\n        tables[\"hhea\"] = null;\n        tables[\"hmtx\"] = null;\n        tables[\"maxp\"] = null;\n        tables[\"name\"] = null;\n        tables[\"post\"] = null;\n\n        for (let i = 0; i < numTables; i++) {\n          const table = readTableEntry(font);\n          if (!VALID_TABLES.includes(table.tag)) {\n            continue; // skipping table if it's not a required or optional table\n          }\n          if (table.length === 0) {\n            continue; // skipping empty tables\n          }\n          tables[table.tag] = table;\n        }\n        return tables;\n      }\n\n      function readTableEntry(file) {\n        var tag = bytesToString(file.getBytes(4));\n\n        var checksum = file.getInt32() >>> 0;\n        var offset = file.getInt32() >>> 0;\n        var length = file.getInt32() >>> 0;\n\n        // Read the table associated data\n        var previousPosition = file.pos;\n        file.pos = file.start ? file.start : 0;\n        file.skip(offset);\n        var data = file.getBytes(length);\n        file.pos = previousPosition;\n\n        if (tag === \"head\") {\n          // clearing checksum adjustment\n          data[8] = data[9] = data[10] = data[11] = 0;\n          data[17] |= 0x20; // Set font optimized for cleartype flag.\n        }\n\n        return {\n          tag,\n          checksum,\n          length,\n          offset,\n          data,\n        };\n      }\n\n      function readOpenTypeHeader(ttf) {\n        return {\n          version: bytesToString(ttf.getBytes(4)),\n          numTables: ttf.getUint16(),\n          searchRange: ttf.getUint16(),\n          entrySelector: ttf.getUint16(),\n          rangeShift: ttf.getUint16(),\n        };\n      }\n\n      function readTrueTypeCollectionHeader(ttc) {\n        const ttcTag = bytesToString(ttc.getBytes(4));\n        assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n        const majorVersion = ttc.getUint16();\n        const minorVersion = ttc.getUint16();\n        const numFonts = ttc.getInt32() >>> 0;\n        const offsetTable = [];\n        for (let i = 0; i < numFonts; i++) {\n          offsetTable.push(ttc.getInt32() >>> 0);\n        }\n\n        const header = {\n          ttcTag,\n          majorVersion,\n          minorVersion,\n          numFonts,\n          offsetTable,\n        };\n        switch (majorVersion) {\n          case 1:\n            return header;\n          case 2:\n            header.dsigTag = ttc.getInt32() >>> 0;\n            header.dsigLength = ttc.getInt32() >>> 0;\n            header.dsigOffset = ttc.getInt32() >>> 0;\n            return header;\n        }\n        throw new FormatError(\n          `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n        );\n      }\n\n      function readTrueTypeCollectionData(ttc, fontName) {\n        const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n\n        for (let i = 0; i < numFonts; i++) {\n          ttc.pos = (ttc.start || 0) + offsetTable[i];\n          const potentialHeader = readOpenTypeHeader(ttc);\n          const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n          if (!potentialTables[\"name\"]) {\n            throw new FormatError(\n              'TrueType Collection font must contain a \"name\" table.'\n            );\n          }\n          const nameTable = readNameTable(potentialTables[\"name\"]);\n\n          for (let j = 0, jj = nameTable.length; j < jj; j++) {\n            for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n              const nameEntry = nameTable[j][k];\n              if (nameEntry && nameEntry.replace(/\\s/g, \"\") === fontName) {\n                return {\n                  header: potentialHeader,\n                  tables: potentialTables,\n                };\n              }\n            }\n          }\n        }\n        throw new FormatError(\n          `TrueType Collection does not contain \"${fontName}\" font.`\n        );\n      }\n\n      /**\n       * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n       * PDF spec\n       */\n      function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) {\n        if (!cmap) {\n          warn(\"No cmap table available.\");\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n        var segment;\n        var start = (font.start ? font.start : 0) + cmap.offset;\n        font.pos = start;\n\n        font.getUint16(); // version\n        var numTables = font.getUint16();\n\n        var potentialTable;\n        var canBreak = false;\n        // There's an order of preference in terms of which cmap subtable to\n        // use:\n        // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n        // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n        // The following takes advantage of the fact that the tables are sorted\n        // to work.\n        for (var i = 0; i < numTables; i++) {\n          var platformId = font.getUint16();\n          var encodingId = font.getUint16();\n          var offset = font.getInt32() >>> 0;\n          var useTable = false;\n\n          // Sometimes there are multiple of the same type of table. Default\n          // to choosing the first table and skip the rest.\n          if (\n            potentialTable &&\n            potentialTable.platformId === platformId &&\n            potentialTable.encodingId === encodingId\n          ) {\n            continue;\n          }\n\n          if (platformId === 0 && encodingId === 0) {\n            useTable = true;\n            // Continue the loop since there still may be a higher priority\n            // table.\n          } else if (platformId === 1 && encodingId === 0) {\n            useTable = true;\n            // Continue the loop since there still may be a higher priority\n            // table.\n          } else if (\n            platformId === 3 &&\n            encodingId === 1 &&\n            (hasEncoding || !potentialTable)\n          ) {\n            useTable = true;\n            if (!isSymbolicFont) {\n              canBreak = true;\n            }\n          } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n            useTable = true;\n            canBreak = true;\n          }\n\n          if (useTable) {\n            potentialTable = {\n              platformId,\n              encodingId,\n              offset,\n            };\n          }\n          if (canBreak) {\n            break;\n          }\n        }\n\n        if (potentialTable) {\n          font.pos = start + potentialTable.offset;\n        }\n        if (!potentialTable || font.peekByte() === -1) {\n          warn(\"Could not find a preferred cmap table.\");\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n\n        var format = font.getUint16();\n        font.getUint16(); // length\n        font.getUint16(); // language\n\n        var hasShortCmap = false;\n        var mappings = [];\n        var j, glyphId;\n\n        // TODO(mack): refactor this cmap subtable reading logic out\n        if (format === 0) {\n          for (j = 0; j < 256; j++) {\n            var index = font.getByte();\n            if (!index) {\n              continue;\n            }\n            mappings.push({\n              charCode: j,\n              glyphId: index,\n            });\n          }\n          hasShortCmap = true;\n        } else if (format === 4) {\n          // re-creating the table in format 4 since the encoding\n          // might be changed\n          var segCount = font.getUint16() >> 1;\n          font.getBytes(6); // skipping range fields\n          var segIndex,\n            segments = [];\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments.push({ end: font.getUint16() });\n          }\n          font.getUint16();\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].start = font.getUint16();\n          }\n\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].delta = font.getUint16();\n          }\n\n          var offsetsCount = 0;\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            var rangeOffset = font.getUint16();\n            if (!rangeOffset) {\n              segment.offsetIndex = -1;\n              continue;\n            }\n\n            var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n            segment.offsetIndex = offsetIndex;\n            offsetsCount = Math.max(\n              offsetsCount,\n              offsetIndex + segment.end - segment.start + 1\n            );\n          }\n\n          var offsets = [];\n          for (j = 0; j < offsetsCount; j++) {\n            offsets.push(font.getUint16());\n          }\n\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            start = segment.start;\n            var end = segment.end;\n            var delta = segment.delta;\n            offsetIndex = segment.offsetIndex;\n\n            for (j = start; j <= end; j++) {\n              if (j === 0xffff) {\n                continue;\n              }\n\n              glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n              glyphId = (glyphId + delta) & 0xffff;\n              mappings.push({\n                charCode: j,\n                glyphId,\n              });\n            }\n          }\n        } else if (format === 6) {\n          // Format 6 is a 2-bytes dense mapping, which means the font data\n          // lives glue together even if they are pretty far in the unicode\n          // table. (This looks weird, so I can have missed something), this\n          // works on Linux but seems to fails on Mac so let's rewrite the\n          // cmap table to a 3-1-4 style\n          var firstCode = font.getUint16();\n          var entryCount = font.getUint16();\n\n          for (j = 0; j < entryCount; j++) {\n            glyphId = font.getUint16();\n            var charCode = firstCode + j;\n\n            mappings.push({\n              charCode,\n              glyphId,\n            });\n          }\n        } else {\n          warn(\"cmap table has unsupported format: \" + format);\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n\n        // removing duplicate entries\n        mappings.sort(function(a, b) {\n          return a.charCode - b.charCode;\n        });\n        for (i = 1; i < mappings.length; i++) {\n          if (mappings[i - 1].charCode === mappings[i].charCode) {\n            mappings.splice(i, 1);\n            i--;\n          }\n        }\n\n        return {\n          platformId: potentialTable.platformId,\n          encodingId: potentialTable.encodingId,\n          mappings,\n          hasShortCmap,\n        };\n      }\n\n      function sanitizeMetrics(\n        font,\n        header,\n        metrics,\n        numGlyphs,\n        dupFirstEntry\n      ) {\n        if (!header) {\n          if (metrics) {\n            metrics.data = null;\n          }\n          return;\n        }\n\n        font.pos = (font.start ? font.start : 0) + header.offset;\n        font.pos += 4; // version\n        font.pos += 2; // ascent\n        font.pos += 2; // descent\n        font.pos += 2; // linegap\n        font.pos += 2; // adv_width_max\n        font.pos += 2; // min_sb1\n        font.pos += 2; // min_sb2\n        font.pos += 2; // max_extent\n        font.pos += 2; // caret_slope_rise\n        font.pos += 2; // caret_slope_run\n        font.pos += 2; // caret_offset\n        font.pos += 8; // reserved\n        font.pos += 2; // format\n        var numOfMetrics = font.getUint16();\n\n        if (numOfMetrics > numGlyphs) {\n          info(\n            \"The numOfMetrics (\" +\n              numOfMetrics +\n              \") should not be \" +\n              \"greater than the numGlyphs (\" +\n              numGlyphs +\n              \")\"\n          );\n          // Reduce numOfMetrics if it is greater than numGlyphs\n          numOfMetrics = numGlyphs;\n          header.data[34] = (numOfMetrics & 0xff00) >> 8;\n          header.data[35] = numOfMetrics & 0x00ff;\n        }\n\n        var numOfSidebearings = numGlyphs - numOfMetrics;\n        var numMissing =\n          numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n        if (numMissing > 0) {\n          // For each missing glyph, we set both the width and lsb to 0 (zero).\n          // Since we need to add two properties for each glyph, this explains\n          // the use of |numMissing * 2| when initializing the typed array.\n          var entries = new Uint8Array(metrics.length + numMissing * 2);\n          entries.set(metrics.data);\n          if (dupFirstEntry) {\n            // Set the sidebearing value of the duplicated glyph.\n            entries[metrics.length] = metrics.data[2];\n            entries[metrics.length + 1] = metrics.data[3];\n          }\n          metrics.data = entries;\n        }\n      }\n\n      function sanitizeGlyph(\n        source,\n        sourceStart,\n        sourceEnd,\n        dest,\n        destStart,\n        hintsValid\n      ) {\n        var glyphProfile = {\n          length: 0,\n          sizeOfInstructions: 0,\n        };\n        if (sourceEnd - sourceStart <= 12) {\n          // glyph with data less than 12 is invalid one\n          return glyphProfile;\n        }\n        var glyf = source.subarray(sourceStart, sourceEnd);\n        var contoursCount = signedInt16(glyf[0], glyf[1]);\n        if (contoursCount < 0) {\n          // OTS doesn't like contour count to be less than -1.\n          contoursCount = -1;\n          writeSignedInt16(glyf, 0, contoursCount);\n          // complex glyph, writing as is\n          dest.set(glyf, destStart);\n          glyphProfile.length = glyf.length;\n          return glyphProfile;\n        }\n\n        var i,\n          j = 10,\n          flagsCount = 0;\n        for (i = 0; i < contoursCount; i++) {\n          var endPoint = (glyf[j] << 8) | glyf[j + 1];\n          flagsCount = endPoint + 1;\n          j += 2;\n        }\n        // skipping instructions\n        var instructionsStart = j;\n        var instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n        glyphProfile.sizeOfInstructions = instructionsLength;\n        j += 2 + instructionsLength;\n        var instructionsEnd = j;\n        // validating flags\n        var coordinatesLength = 0;\n        for (i = 0; i < flagsCount; i++) {\n          var flag = glyf[j++];\n          if (flag & 0xc0) {\n            // reserved flags must be zero, cleaning up\n            glyf[j - 1] = flag & 0x3f;\n          }\n          let xLength = 2;\n          if (flag & 2) {\n            xLength = 1;\n          } else if (flag & 16) {\n            xLength = 0;\n          }\n          let yLength = 2;\n          if (flag & 4) {\n            yLength = 1;\n          } else if (flag & 32) {\n            yLength = 0;\n          }\n          const xyLength = xLength + yLength;\n          coordinatesLength += xyLength;\n          if (flag & 8) {\n            var repeat = glyf[j++];\n            i += repeat;\n            coordinatesLength += repeat * xyLength;\n          }\n        }\n        // glyph without coordinates will be rejected\n        if (coordinatesLength === 0) {\n          return glyphProfile;\n        }\n        var glyphDataLength = j + coordinatesLength;\n        if (glyphDataLength > glyf.length) {\n          // not enough data for coordinates\n          return glyphProfile;\n        }\n        if (!hintsValid && instructionsLength > 0) {\n          dest.set(glyf.subarray(0, instructionsStart), destStart);\n          dest.set([0, 0], destStart + instructionsStart);\n          dest.set(\n            glyf.subarray(instructionsEnd, glyphDataLength),\n            destStart + instructionsStart + 2\n          );\n          glyphDataLength -= instructionsLength;\n          if (glyf.length - glyphDataLength > 3) {\n            glyphDataLength = (glyphDataLength + 3) & ~3;\n          }\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        if (glyf.length - glyphDataLength > 3) {\n          // truncating and aligning to 4 bytes the long glyph data\n          glyphDataLength = (glyphDataLength + 3) & ~3;\n          dest.set(glyf.subarray(0, glyphDataLength), destStart);\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        // glyph data is fine\n        dest.set(glyf, destStart);\n        glyphProfile.length = glyf.length;\n        return glyphProfile;\n      }\n\n      function sanitizeHead(head, numGlyphs, locaLength) {\n        var data = head.data;\n\n        // Validate version:\n        // Should always be 0x00010000\n        var version = int32(data[0], data[1], data[2], data[3]);\n        if (version >> 16 !== 1) {\n          info(\"Attempting to fix invalid version in head table: \" + version);\n          data[0] = 0;\n          data[1] = 1;\n          data[2] = 0;\n          data[3] = 0;\n        }\n\n        var indexToLocFormat = int16(data[50], data[51]);\n        if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n          info(\n            \"Attempting to fix invalid indexToLocFormat in head table: \" +\n              indexToLocFormat\n          );\n\n          // The value of indexToLocFormat should be 0 if the loca table\n          // consists of short offsets, and should be 1 if the loca table\n          // consists of long offsets.\n          //\n          // The number of entries in the loca table should be numGlyphs + 1.\n          //\n          // Using this information, we can work backwards to deduce if the\n          // size of each offset in the loca table, and thus figure out the\n          // appropriate value for indexToLocFormat.\n\n          var numGlyphsPlusOne = numGlyphs + 1;\n          if (locaLength === numGlyphsPlusOne << 1) {\n            // 0x0000 indicates the loca table consists of short offsets\n            data[50] = 0;\n            data[51] = 0;\n          } else if (locaLength === numGlyphsPlusOne << 2) {\n            // 0x0001 indicates the loca table consists of long offsets\n            data[50] = 0;\n            data[51] = 1;\n          } else {\n            throw new FormatError(\n              \"Could not fix indexToLocFormat: \" + indexToLocFormat\n            );\n          }\n        }\n      }\n\n      function sanitizeGlyphLocations(\n        loca,\n        glyf,\n        numGlyphs,\n        isGlyphLocationsLong,\n        hintsValid,\n        dupFirstEntry,\n        maxSizeOfInstructions\n      ) {\n        var itemSize, itemDecode, itemEncode;\n        if (isGlyphLocationsLong) {\n          itemSize = 4;\n          itemDecode = function fontItemDecodeLong(data, offset) {\n            return (\n              (data[offset] << 24) |\n              (data[offset + 1] << 16) |\n              (data[offset + 2] << 8) |\n              data[offset + 3]\n            );\n          };\n          itemEncode = function fontItemEncodeLong(data, offset, value) {\n            data[offset] = (value >>> 24) & 0xff;\n            data[offset + 1] = (value >> 16) & 0xff;\n            data[offset + 2] = (value >> 8) & 0xff;\n            data[offset + 3] = value & 0xff;\n          };\n        } else {\n          itemSize = 2;\n          itemDecode = function fontItemDecode(data, offset) {\n            return (data[offset] << 9) | (data[offset + 1] << 1);\n          };\n          itemEncode = function fontItemEncode(data, offset, value) {\n            data[offset] = (value >> 9) & 0xff;\n            data[offset + 1] = (value >> 1) & 0xff;\n          };\n        }\n        // The first glyph is duplicated.\n        var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n        var locaDataSize = itemSize * (1 + numGlyphsOut);\n        // Resize loca table to account for duplicated glyph.\n        var locaData = new Uint8Array(locaDataSize);\n        locaData.set(loca.data.subarray(0, locaDataSize));\n        loca.data = locaData;\n        // removing the invalid glyphs\n        var oldGlyfData = glyf.data;\n        var oldGlyfDataLength = oldGlyfData.length;\n        var newGlyfData = new Uint8Array(oldGlyfDataLength);\n        var startOffset = itemDecode(locaData, 0);\n        var writeOffset = 0;\n        var missingGlyphs = Object.create(null);\n        itemEncode(locaData, 0, writeOffset);\n        var i, j;\n        for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n          var endOffset = itemDecode(locaData, j);\n          // The spec says the offsets should be in ascending order, however\n          // some fonts use the offset of 0 to mark a glyph as missing.\n          if (endOffset === 0) {\n            endOffset = startOffset;\n          }\n          if (\n            endOffset > oldGlyfDataLength &&\n            ((oldGlyfDataLength + 3) & ~3) === endOffset\n          ) {\n            // Aspose breaks fonts by aligning the glyphs to the qword, but not\n            // the glyf table size, which makes last glyph out of range.\n            endOffset = oldGlyfDataLength;\n          }\n          if (endOffset > oldGlyfDataLength) {\n            // glyph end offset points outside glyf data, rejecting the glyph\n            startOffset = endOffset;\n          }\n\n          var glyphProfile = sanitizeGlyph(\n            oldGlyfData,\n            startOffset,\n            endOffset,\n            newGlyfData,\n            writeOffset,\n            hintsValid\n          );\n          var newLength = glyphProfile.length;\n          if (newLength === 0) {\n            missingGlyphs[i] = true;\n          }\n          if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n            maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n          }\n          writeOffset += newLength;\n          itemEncode(locaData, j, writeOffset);\n          startOffset = endOffset;\n        }\n\n        if (writeOffset === 0) {\n          // glyf table cannot be empty -- redoing the glyf and loca tables\n          // to have single glyph with one point\n          var simpleGlyph = new Uint8Array([\n            0,\n            1,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            49,\n            0,\n          ]);\n          for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n            itemEncode(locaData, j, simpleGlyph.length);\n          }\n          glyf.data = simpleGlyph;\n        } else if (dupFirstEntry) {\n          // Browsers will not display a glyph at position 0. Typically glyph 0\n          // is notdef, but a number of fonts put a valid glyph there so it must\n          // be duplicated and appended.\n          var firstEntryLength = itemDecode(locaData, itemSize);\n          if (newGlyfData.length > firstEntryLength + writeOffset) {\n            glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n          } else {\n            glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n            glyf.data.set(newGlyfData.subarray(0, writeOffset));\n          }\n          glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n          itemEncode(\n            loca.data,\n            locaData.length - itemSize,\n            writeOffset + firstEntryLength\n          );\n        } else {\n          glyf.data = newGlyfData.subarray(0, writeOffset);\n        }\n        return {\n          missingGlyphs,\n          maxSizeOfInstructions,\n        };\n      }\n\n      function readPostScriptTable(post, properties, maxpNumGlyphs) {\n        var start = (font.start ? font.start : 0) + post.offset;\n        font.pos = start;\n\n        var length = post.length,\n          end = start + length;\n        var version = font.getInt32();\n        // skip rest to the tables\n        font.getBytes(28);\n\n        var glyphNames;\n        var valid = true;\n        var i;\n\n        switch (version) {\n          case 0x00010000:\n            glyphNames = MacStandardGlyphOrdering;\n            break;\n          case 0x00020000:\n            var numGlyphs = font.getUint16();\n            if (numGlyphs !== maxpNumGlyphs) {\n              valid = false;\n              break;\n            }\n            var glyphNameIndexes = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var index = font.getUint16();\n              if (index >= 32768) {\n                valid = false;\n                break;\n              }\n              glyphNameIndexes.push(index);\n            }\n            if (!valid) {\n              break;\n            }\n            var customNames = [];\n            var strBuf = [];\n            while (font.pos < end) {\n              var stringLength = font.getByte();\n              strBuf.length = stringLength;\n              for (i = 0; i < stringLength; ++i) {\n                strBuf[i] = String.fromCharCode(font.getByte());\n              }\n              customNames.push(strBuf.join(\"\"));\n            }\n            glyphNames = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var j = glyphNameIndexes[i];\n              if (j < 258) {\n                glyphNames.push(MacStandardGlyphOrdering[j]);\n                continue;\n              }\n              glyphNames.push(customNames[j - 258]);\n            }\n            break;\n          case 0x00030000:\n            break;\n          default:\n            warn(\"Unknown/unsupported post table version \" + version);\n            valid = false;\n            if (properties.defaultEncoding) {\n              glyphNames = properties.defaultEncoding;\n            }\n            break;\n        }\n        properties.glyphNames = glyphNames;\n        return valid;\n      }\n\n      function readNameTable(nameTable) {\n        var start = (font.start ? font.start : 0) + nameTable.offset;\n        font.pos = start;\n\n        var names = [[], []];\n        var length = nameTable.length,\n          end = start + length;\n        var format = font.getUint16();\n        var FORMAT_0_HEADER_LENGTH = 6;\n        if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n          // unsupported name table format or table \"too\" small\n          return names;\n        }\n        var numRecords = font.getUint16();\n        var stringsStart = font.getUint16();\n        var records = [];\n        var NAME_RECORD_LENGTH = 12;\n        var i, ii;\n\n        for (\n          i = 0;\n          i < numRecords && font.pos + NAME_RECORD_LENGTH <= end;\n          i++\n        ) {\n          var r = {\n            platform: font.getUint16(),\n            encoding: font.getUint16(),\n            language: font.getUint16(),\n            name: font.getUint16(),\n            length: font.getUint16(),\n            offset: font.getUint16(),\n          };\n          // using only Macintosh and Windows platform/encoding names\n          if (\n            (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n            (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n          ) {\n            records.push(r);\n          }\n        }\n        for (i = 0, ii = records.length; i < ii; i++) {\n          var record = records[i];\n          if (record.length <= 0) {\n            continue; // Nothing to process, ignoring.\n          }\n          var pos = start + stringsStart + record.offset;\n          if (pos + record.length > end) {\n            continue; // outside of name table, ignoring\n          }\n          font.pos = pos;\n          var nameIndex = record.name;\n          if (record.encoding) {\n            // unicode\n            var str = \"\";\n            for (var j = 0, jj = record.length; j < jj; j += 2) {\n              str += String.fromCharCode(font.getUint16());\n            }\n            names[1][nameIndex] = str;\n          } else {\n            names[0][nameIndex] = bytesToString(font.getBytes(record.length));\n          }\n        }\n        return names;\n      }\n\n      // prettier-ignore\n      var TTOpsStackDeltas = [\n        0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n        -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n        1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n        0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n        0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n        -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n        -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n        -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n        -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n      // 0xC0-DF == -1 and 0xE0-FF == -2\n\n      function sanitizeTTProgram(table, ttContext) {\n        var data = table.data;\n        var i = 0,\n          j,\n          n,\n          b,\n          funcId,\n          pc,\n          lastEndf = 0,\n          lastDeff = 0;\n        var stack = [];\n        var callstack = [];\n        var functionsCalled = [];\n        var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n        var inFDEF = false,\n          ifLevel = 0,\n          inELSE = 0;\n        for (var ii = data.length; i < ii; ) {\n          var op = data[i++];\n          // The TrueType instruction set docs can be found at\n          // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n          if (op === 0x40) {\n            // NPUSHB - pushes n bytes\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if (op === 0x41) {\n            // NPUSHW - pushes n words\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push((b << 8) | data[i++]);\n              }\n            }\n          } else if ((op & 0xf8) === 0xb0) {\n            // PUSHB - pushes bytes\n            n = op - 0xb0 + 1;\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if ((op & 0xf8) === 0xb8) {\n            // PUSHW - pushes words\n            n = op - 0xb8 + 1;\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push((b << 8) | data[i++]);\n              }\n            }\n          } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n            // CALL\n            if (!inFDEF && !inELSE) {\n              // collecting information about which functions are used\n              funcId = stack[stack.length - 1];\n              if (isNaN(funcId)) {\n                info(\"TT: CALL empty stack (or invalid entry).\");\n              } else {\n                ttContext.functionsUsed[funcId] = true;\n                if (funcId in ttContext.functionsStackDeltas) {\n                  const newStackLength =\n                    stack.length + ttContext.functionsStackDeltas[funcId];\n                  if (newStackLength < 0) {\n                    warn(\"TT: CALL invalid functions stack delta.\");\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  stack.length = newStackLength;\n                } else if (\n                  funcId in ttContext.functionsDefined &&\n                  !functionsCalled.includes(funcId)\n                ) {\n                  callstack.push({ data, i, stackTop: stack.length - 1 });\n                  functionsCalled.push(funcId);\n                  pc = ttContext.functionsDefined[funcId];\n                  if (!pc) {\n                    warn(\"TT: CALL non-existent function\");\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  data = pc.data;\n                  i = pc.i;\n                }\n              }\n            }\n          } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n            // FDEF\n            if (inFDEF || inELSE) {\n              warn(\"TT: nested FDEFs not allowed\");\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            // collecting information about which functions are defined\n            lastDeff = i;\n            funcId = stack.pop();\n            ttContext.functionsDefined[funcId] = { data, i };\n          } else if (op === 0x2d) {\n            // ENDF - end of function\n            if (inFDEF) {\n              inFDEF = false;\n              lastEndf = i;\n            } else {\n              pc = callstack.pop();\n              if (!pc) {\n                warn(\"TT: ENDF bad stack\");\n                ttContext.hintsValid = false;\n                return;\n              }\n              funcId = functionsCalled.pop();\n              data = pc.data;\n              i = pc.i;\n              ttContext.functionsStackDeltas[funcId] =\n                stack.length - pc.stackTop;\n            }\n          } else if (op === 0x89) {\n            // IDEF - instruction definition\n            if (inFDEF || inELSE) {\n              warn(\"TT: nested IDEFs not allowed\");\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            // recording it as a function to track ENDF\n            lastDeff = i;\n          } else if (op === 0x58) {\n            // IF\n            ++ifLevel;\n          } else if (op === 0x1b) {\n            // ELSE\n            inELSE = ifLevel;\n          } else if (op === 0x59) {\n            // EIF\n            if (inELSE === ifLevel) {\n              inELSE = 0;\n            }\n            --ifLevel;\n          } else if (op === 0x1c) {\n            // JMPR\n            if (!inFDEF && !inELSE) {\n              var offset = stack[stack.length - 1];\n              // only jumping forward to prevent infinite loop\n              if (offset > 0) {\n                i += offset - 1;\n              }\n            }\n          }\n          // Adjusting stack not extactly, but just enough to get function id\n          if (!inFDEF && !inELSE) {\n            let stackDelta = 0;\n            if (op <= 0x8e) {\n              stackDelta = TTOpsStackDeltas[op];\n            } else if (op >= 0xc0 && op <= 0xdf) {\n              stackDelta = -1;\n            } else if (op >= 0xe0) {\n              stackDelta = -2;\n            }\n            if (op >= 0x71 && op <= 0x75) {\n              n = stack.pop();\n              if (!isNaN(n)) {\n                stackDelta = -n * 2;\n              }\n            }\n            while (stackDelta < 0 && stack.length > 0) {\n              stack.pop();\n              stackDelta++;\n            }\n            while (stackDelta > 0) {\n              stack.push(NaN); // pushing any number into stack\n              stackDelta--;\n            }\n          }\n        }\n        ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n        var content = [data];\n        if (i > data.length) {\n          content.push(new Uint8Array(i - data.length));\n        }\n        if (lastDeff > lastEndf) {\n          warn(\"TT: complementing a missing function tail\");\n          // new function definition started, but not finished\n          // complete function by [CLEAR, ENDF]\n          content.push(new Uint8Array([0x22, 0x2d]));\n        }\n        foldTTTable(table, content);\n      }\n\n      function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n        if (ttContext.tooComplexToFollowFunctions) {\n          return;\n        }\n        if (ttContext.functionsDefined.length > maxFunctionDefs) {\n          warn(\"TT: more functions defined than expected\");\n          ttContext.hintsValid = false;\n          return;\n        }\n        for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n          if (j > maxFunctionDefs) {\n            warn(\"TT: invalid function id: \" + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n          if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n            warn(\"TT: undefined function: \" + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n        }\n      }\n\n      function foldTTTable(table, content) {\n        if (content.length > 1) {\n          // concatenating the content items\n          var newLength = 0;\n          var j, jj;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            newLength += content[j].length;\n          }\n          newLength = (newLength + 3) & ~3;\n          var result = new Uint8Array(newLength);\n          var pos = 0;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            result.set(content[j], pos);\n            pos += content[j].length;\n          }\n          table.data = result;\n          table.length = newLength;\n        }\n      }\n\n      function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n        var ttContext = {\n          functionsDefined: [],\n          functionsUsed: [],\n          functionsStackDeltas: [],\n          tooComplexToFollowFunctions: false,\n          hintsValid: true,\n        };\n        if (fpgm) {\n          sanitizeTTProgram(fpgm, ttContext);\n        }\n        if (prep) {\n          sanitizeTTProgram(prep, ttContext);\n        }\n        if (fpgm) {\n          checkInvalidFunctions(ttContext, maxFunctionDefs);\n        }\n        if (cvt && cvt.length & 1) {\n          var cvtData = new Uint8Array(cvt.length + 1);\n          cvtData.set(cvt.data);\n          cvt.data = cvtData;\n        }\n        return ttContext.hintsValid;\n      }\n\n      // The following steps modify the original font data, making copy\n      font = new Stream(new Uint8Array(font.getBytes()));\n\n      let header, tables;\n      if (isTrueTypeCollectionFile(font)) {\n        const ttcData = readTrueTypeCollectionData(font, this.name);\n        header = ttcData.header;\n        tables = ttcData.tables;\n      } else {\n        header = readOpenTypeHeader(font);\n        tables = readTables(font, header.numTables);\n      }\n      let cff, cffFile;\n\n      var isTrueType = !tables[\"CFF \"];\n      if (!isTrueType) {\n        const isComposite =\n          properties.composite &&\n          ((properties.cidToGidMap || []).length > 0 ||\n            !(properties.cMap instanceof IdentityCMap));\n        // OpenType font (skip composite fonts with non-default glyph mapping).\n        if (\n          (header.version === \"OTTO\" && !isComposite) ||\n          !tables[\"head\"] ||\n          !tables[\"hhea\"] ||\n          !tables[\"maxp\"] ||\n          !tables[\"post\"]\n        ) {\n          // No major tables: throwing everything at `CFFFont`.\n          cffFile = new Stream(tables[\"CFF \"].data);\n          cff = new CFFFont(cffFile, properties);\n\n          adjustWidths(properties);\n\n          return this.convert(name, cff, properties);\n        }\n\n        delete tables[\"glyf\"];\n        delete tables[\"loca\"];\n        delete tables[\"fpgm\"];\n        delete tables[\"prep\"];\n        delete tables[\"cvt \"];\n        this.isOpenType = true;\n      } else {\n        if (!tables[\"loca\"]) {\n          throw new FormatError('Required \"loca\" table is not found');\n        }\n        if (!tables[\"glyf\"]) {\n          warn('Required \"glyf\" table is not found -- trying to recover.');\n          // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n          tables[\"glyf\"] = {\n            tag: \"glyf\",\n            data: new Uint8Array(0),\n          };\n        }\n        this.isOpenType = false;\n      }\n\n      if (!tables[\"maxp\"]) {\n        throw new FormatError('Required \"maxp\" table is not found');\n      }\n\n      font.pos = (font.start || 0) + tables[\"maxp\"].offset;\n      var version = font.getInt32();\n      const numGlyphs = font.getUint16();\n      // Glyph 0 is duplicated and appended.\n      let numGlyphsOut = numGlyphs + 1;\n      let dupFirstEntry = true;\n      if (numGlyphsOut > 0xffff) {\n        dupFirstEntry = false;\n        numGlyphsOut = numGlyphs;\n        warn(\"Not enough space in glyfs to duplicate first glyph.\");\n      }\n      var maxFunctionDefs = 0;\n      var maxSizeOfInstructions = 0;\n      if (version >= 0x00010000 && tables[\"maxp\"].length >= 22) {\n        // maxZones can be invalid\n        font.pos += 8;\n        var maxZones = font.getUint16();\n        if (maxZones > 2) {\n          // reset to 2 if font has invalid maxZones\n          tables[\"maxp\"].data[14] = 0;\n          tables[\"maxp\"].data[15] = 2;\n        }\n        font.pos += 4;\n        maxFunctionDefs = font.getUint16();\n        font.pos += 4;\n        maxSizeOfInstructions = font.getUint16();\n      }\n\n      tables[\"maxp\"].data[4] = numGlyphsOut >> 8;\n      tables[\"maxp\"].data[5] = numGlyphsOut & 255;\n\n      var hintsValid = sanitizeTTPrograms(\n        tables[\"fpgm\"],\n        tables[\"prep\"],\n        tables[\"cvt \"],\n        maxFunctionDefs\n      );\n      if (!hintsValid) {\n        delete tables[\"fpgm\"];\n        delete tables[\"prep\"];\n        delete tables[\"cvt \"];\n      }\n\n      // Ensure the hmtx table contains the advance width and\n      // sidebearings information for numGlyphs in the maxp table\n      sanitizeMetrics(\n        font,\n        tables[\"hhea\"],\n        tables[\"hmtx\"],\n        numGlyphsOut,\n        dupFirstEntry\n      );\n\n      if (!tables[\"head\"]) {\n        throw new FormatError('Required \"head\" table is not found');\n      }\n\n      sanitizeHead(\n        tables[\"head\"],\n        numGlyphs,\n        isTrueType ? tables[\"loca\"].length : 0\n      );\n\n      var missingGlyphs = Object.create(null);\n      if (isTrueType) {\n        var isGlyphLocationsLong = int16(\n          tables[\"head\"].data[50],\n          tables[\"head\"].data[51]\n        );\n        var glyphsInfo = sanitizeGlyphLocations(\n          tables[\"loca\"],\n          tables[\"glyf\"],\n          numGlyphs,\n          isGlyphLocationsLong,\n          hintsValid,\n          dupFirstEntry,\n          maxSizeOfInstructions\n        );\n        missingGlyphs = glyphsInfo.missingGlyphs;\n\n        // Some fonts have incorrect maxSizeOfInstructions values, so we use\n        // the computed value instead.\n        if (version >= 0x00010000 && tables[\"maxp\"].length >= 22) {\n          tables[\"maxp\"].data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n          tables[\"maxp\"].data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n        }\n      }\n      if (!tables[\"hhea\"]) {\n        throw new FormatError('Required \"hhea\" table is not found');\n      }\n\n      // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n      // Sometimes it's 0. That needs to be fixed\n      if (tables[\"hhea\"].data[10] === 0 && tables[\"hhea\"].data[11] === 0) {\n        tables[\"hhea\"].data[10] = 0xff;\n        tables[\"hhea\"].data[11] = 0xff;\n      }\n\n      // Extract some more font properties from the OpenType head and\n      // hhea tables; yMin and descent value are always negative.\n      var metricsOverride = {\n        unitsPerEm: int16(tables[\"head\"].data[18], tables[\"head\"].data[19]),\n        yMax: int16(tables[\"head\"].data[42], tables[\"head\"].data[43]),\n        yMin: signedInt16(tables[\"head\"].data[38], tables[\"head\"].data[39]),\n        ascent: int16(tables[\"hhea\"].data[4], tables[\"hhea\"].data[5]),\n        descent: signedInt16(tables[\"hhea\"].data[6], tables[\"hhea\"].data[7]),\n      };\n\n      // PDF FontDescriptor metrics lie -- using data from actual font.\n      this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n      this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n\n      // The 'post' table has glyphs names.\n      if (tables[\"post\"]) {\n        readPostScriptTable(tables[\"post\"], properties, numGlyphs);\n      }\n\n      // The original 'post' table is not needed, replace it.\n      tables[\"post\"] = {\n        tag: \"post\",\n        data: createPostTable(properties),\n      };\n\n      var charCodeToGlyphId = [],\n        charCode;\n\n      // Helper function to try to skip mapping of empty glyphs.\n      function hasGlyph(glyphId) {\n        return !missingGlyphs[glyphId];\n      }\n\n      if (properties.composite) {\n        var cidToGidMap = properties.cidToGidMap || [];\n        var isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n        properties.cMap.forEach(function(charCode, cid) {\n          if (cid > 0xffff) {\n            throw new FormatError(\"Max size of CID is 65,535\");\n          }\n          var glyphId = -1;\n          if (isCidToGidMapEmpty) {\n            glyphId = cid;\n          } else if (cidToGidMap[cid] !== undefined) {\n            glyphId = cidToGidMap[cid];\n          }\n\n          if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        });\n      } else {\n        // Most of the following logic in this code branch is based on the\n        // 9.6.6.4 of the PDF spec.\n        var cmapTable = readCmapTable(\n          tables[\"cmap\"],\n          font,\n          this.isSymbolicFont,\n          properties.hasEncoding\n        );\n        var cmapPlatformId = cmapTable.platformId;\n        var cmapEncodingId = cmapTable.encodingId;\n        var cmapMappings = cmapTable.mappings;\n        var cmapMappingsLength = cmapMappings.length;\n\n        // The spec seems to imply that if the font is symbolic the encoding\n        // should be ignored, this doesn't appear to work for 'preistabelle.pdf'\n        // where the the font is symbolic and it has an encoding.\n        if (\n          (properties.hasEncoding &&\n            ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n              (cmapPlatformId === 1 && cmapEncodingId === 0))) ||\n          (cmapPlatformId === -1 &&\n          cmapEncodingId === -1 && // Temporary hack\n            !!getEncoding(properties.baseEncodingName))\n        ) {\n          // Temporary hack\n          // When no preferred cmap table was found and |baseEncodingName| is\n          // one of the predefined encodings, we seem to obtain a better\n          // |charCodeToGlyphId| map from the code below (fixes bug 1057544).\n          // TODO: Note that this is a hack which should be removed as soon as\n          //       we have proper support for more exotic cmap tables.\n\n          var baseEncoding = [];\n          if (\n            properties.baseEncodingName === \"MacRomanEncoding\" ||\n            properties.baseEncodingName === \"WinAnsiEncoding\"\n          ) {\n            baseEncoding = getEncoding(properties.baseEncodingName);\n          }\n          var glyphsUnicodeMap = getGlyphsUnicode();\n          for (charCode = 0; charCode < 256; charCode++) {\n            var glyphName, standardGlyphName;\n            if (this.differences && charCode in this.differences) {\n              glyphName = this.differences[charCode];\n            } else if (\n              charCode in baseEncoding &&\n              baseEncoding[charCode] !== \"\"\n            ) {\n              glyphName = baseEncoding[charCode];\n            } else {\n              glyphName = StandardEncoding[charCode];\n            }\n            if (!glyphName) {\n              continue;\n            }\n            // Ensure that non-standard glyph names are resolved to valid ones.\n            standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n\n            var unicodeOrCharCode;\n            if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n              unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n            } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n              // TODO: the encoding needs to be updated with mac os table.\n              unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n            }\n\n            var found = false;\n            for (let i = 0; i < cmapMappingsLength; ++i) {\n              if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n                continue;\n              }\n              charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n              found = true;\n              break;\n            }\n            if (!found && properties.glyphNames) {\n              // Try to map using the post table.\n              var glyphId = properties.glyphNames.indexOf(glyphName);\n              // The post table ought to use the same kind of glyph names as the\n              // `differences` array, but check the standard ones as a fallback.\n              if (glyphId === -1 && standardGlyphName !== glyphName) {\n                glyphId = properties.glyphNames.indexOf(standardGlyphName);\n              }\n              if (glyphId > 0 && hasGlyph(glyphId)) {\n                charCodeToGlyphId[charCode] = glyphId;\n              }\n            }\n          }\n        } else if (cmapPlatformId === 0 && cmapEncodingId === 0) {\n          // Default Unicode semantics, use the charcodes as is.\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            charCodeToGlyphId[cmapMappings[i].charCode] =\n              cmapMappings[i].glyphId;\n          }\n        } else {\n          // When there is only a (1, 0) cmap table, the char code is a single\n          // byte and it is used directly as the char code.\n\n          // When a (3, 0) cmap table is present, it is used instead but the\n          // spec has special rules for char codes in the range of 0xF000 to\n          // 0xF0FF and it says the (3, 0) table should map the values from\n          // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n          // this, the upper bits of the char code are cleared, but only for the\n          // special range since some PDFs have char codes outside of this range\n          // (e.g. 0x2013) which when masked would overwrite other values in the\n          // cmap.\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            charCode = cmapMappings[i].charCode;\n            if (\n              cmapPlatformId === 3 &&\n              charCode >= 0xf000 &&\n              charCode <= 0xf0ff\n            ) {\n              charCode &= 0xff;\n            }\n            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n          }\n        }\n      }\n\n      if (charCodeToGlyphId.length === 0) {\n        // defines at least one glyph\n        charCodeToGlyphId[0] = 0;\n      }\n\n      // Typically glyph 0 is duplicated and the mapping must be updated, but if\n      // there isn't enough room to duplicate, the glyph id is left the same. In\n      // this case, glyph 0 may not work correctly, but that is better than\n      // having the whole font fail.\n      let glyphZeroId = numGlyphsOut - 1;\n      if (!dupFirstEntry) {\n        glyphZeroId = 0;\n      }\n\n      // Converting glyphs and ids into font's cmap table\n      var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);\n      this.toFontChar = newMapping.toFontChar;\n      tables[\"cmap\"] = {\n        tag: \"cmap\",\n        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n      };\n\n      if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"])) {\n        tables[\"OS/2\"] = {\n          tag: \"OS/2\",\n          data: createOS2Table(\n            properties,\n            newMapping.charCodeToGlyphId,\n            metricsOverride\n          ),\n        };\n      }\n\n      if (!isTrueType) {\n        try {\n          // Trying to repair CFF file\n          cffFile = new Stream(tables[\"CFF \"].data);\n          var parser = new CFFParser(\n            cffFile,\n            properties,\n            SEAC_ANALYSIS_ENABLED\n          );\n          cff = parser.parse();\n          cff.duplicateFirstGlyph();\n          var compiler = new CFFCompiler(cff);\n          tables[\"CFF \"].data = compiler.compile();\n        } catch (e) {\n          warn(\"Failed to compile font \" + properties.loadedName);\n        }\n      }\n\n      // Re-creating 'name' table\n      if (!tables[\"name\"]) {\n        tables[\"name\"] = {\n          tag: \"name\",\n          data: createNameTable(this.name),\n        };\n      } else {\n        // ... using existing 'name' table as prototype\n        var namePrototype = readNameTable(tables[\"name\"]);\n        tables[\"name\"].data = createNameTable(name, namePrototype);\n      }\n\n      var builder = new OpenTypeFileBuilder(header.version);\n      for (var tableTag in tables) {\n        builder.addTable(tableTag, tables[tableTag].data);\n      }\n      return builder.toArray();\n    },\n\n    convert: function Font_convert(fontName, font, properties) {\n      // TODO: Check the charstring widths to determine this.\n      properties.fixedPitch = false;\n\n      if (properties.builtInEncoding) {\n        // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n        // data, attempt to use the `builtInEncoding` to improve text selection.\n        adjustToUnicode(properties, properties.builtInEncoding);\n      }\n\n      // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n      // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n      // char strings.\n      let glyphZeroId = 1;\n      if (font instanceof CFFFont) {\n        glyphZeroId = font.numGlyphs - 1;\n      }\n      var mapping = font.getGlyphMapping(properties);\n      var newMapping = adjustMapping(\n        mapping,\n        font.hasGlyphId.bind(font),\n        glyphZeroId\n      );\n      this.toFontChar = newMapping.toFontChar;\n      var numGlyphs = font.numGlyphs;\n\n      function getCharCodes(charCodeToGlyphId, glyphId) {\n        var charCodes = null;\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            if (!charCodes) {\n              charCodes = [];\n            }\n            charCodes.push(charCode | 0);\n          }\n        }\n        return charCodes;\n      }\n\n      function createCharCode(charCodeToGlyphId, glyphId) {\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            return charCode | 0;\n          }\n        }\n        newMapping.charCodeToGlyphId[\n          newMapping.nextAvailableFontCharCode\n        ] = glyphId;\n        return newMapping.nextAvailableFontCharCode++;\n      }\n\n      var seacs = font.seacs;\n      if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n        var matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n        var charset = font.getCharset();\n        var seacMap = Object.create(null);\n        for (var glyphId in seacs) {\n          glyphId |= 0;\n          var seac = seacs[glyphId];\n          var baseGlyphName = StandardEncoding[seac[2]];\n          var accentGlyphName = StandardEncoding[seac[3]];\n          var baseGlyphId = charset.indexOf(baseGlyphName);\n          var accentGlyphId = charset.indexOf(accentGlyphName);\n          if (baseGlyphId < 0 || accentGlyphId < 0) {\n            continue;\n          }\n          var accentOffset = {\n            x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n            y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n          };\n\n          var charCodes = getCharCodes(mapping, glyphId);\n          if (!charCodes) {\n            // There's no point in mapping it if the char code was never mapped\n            // to begin with.\n            continue;\n          }\n          for (var i = 0, ii = charCodes.length; i < ii; i++) {\n            var charCode = charCodes[i];\n            // Find a fontCharCode that maps to the base and accent glyphs.\n            // If one doesn't exists, create it.\n            var charCodeToGlyphId = newMapping.charCodeToGlyphId;\n            var baseFontCharCode = createCharCode(\n              charCodeToGlyphId,\n              baseGlyphId\n            );\n            var accentFontCharCode = createCharCode(\n              charCodeToGlyphId,\n              accentGlyphId\n            );\n            seacMap[charCode] = {\n              baseFontCharCode,\n              accentFontCharCode,\n              accentOffset,\n            };\n          }\n        }\n        properties.seacMap = seacMap;\n      }\n\n      var unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n      var builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n      // PostScript Font Program\n      builder.addTable(\"CFF \", font.data);\n      // OS/2 and Windows Specific metrics\n      builder.addTable(\n        \"OS/2\",\n        createOS2Table(properties, newMapping.charCodeToGlyphId)\n      );\n      // Character to glyphs mapping\n      builder.addTable(\n        \"cmap\",\n        createCmapTable(newMapping.charCodeToGlyphId, numGlyphs)\n      );\n      // Font header\n      builder.addTable(\n        \"head\",\n        \"\\x00\\x01\\x00\\x00\" + // Version number\n        \"\\x00\\x00\\x10\\x00\" + // fontRevision\n        \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n        \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n        \"\\x00\\x00\" + // Flags\n        safeString16(unitsPerEm) + // unitsPerEM\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n        \"\\x00\\x00\" + // xMin\n        safeString16(properties.descent) + // yMin\n        \"\\x0F\\xFF\" + // xMax\n        safeString16(properties.ascent) + // yMax\n        string16(properties.italicAngle ? 2 : 0) + // macStyle\n        \"\\x00\\x11\" + // lowestRecPPEM\n        \"\\x00\\x00\" + // fontDirectionHint\n        \"\\x00\\x00\" + // indexToLocFormat\n          \"\\x00\\x00\"\n      ); // glyphDataFormat\n\n      // Horizontal header\n      builder.addTable(\n        \"hhea\",\n        \"\\x00\\x01\\x00\\x00\" + // Version number\n        safeString16(properties.ascent) + // Typographic Ascent\n        safeString16(properties.descent) + // Typographic Descent\n        \"\\x00\\x00\" + // Line Gap\n        \"\\xFF\\xFF\" + // advanceWidthMax\n        \"\\x00\\x00\" + // minLeftSidebearing\n        \"\\x00\\x00\" + // minRightSidebearing\n        \"\\x00\\x00\" + // xMaxExtent\n        safeString16(properties.capHeight) + // caretSlopeRise\n        safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n        \"\\x00\\x00\" + // caretOffset\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // metricDataFormat\n          string16(numGlyphs)\n      ); // Number of HMetrics\n\n      // Horizontal metrics\n      builder.addTable(\n        \"hmtx\",\n        (function fontFieldsHmtx() {\n          var charstrings = font.charstrings;\n          var cffWidths = font.cff ? font.cff.widths : null;\n          var hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n          for (var i = 1, ii = numGlyphs; i < ii; i++) {\n            var width = 0;\n            if (charstrings) {\n              var charstring = charstrings[i - 1];\n              width = \"width\" in charstring ? charstring.width : 0;\n            } else if (cffWidths) {\n              width = Math.ceil(cffWidths[i] || 0);\n            }\n            hmtx += string16(width) + string16(0);\n          }\n          return hmtx;\n        })()\n      );\n\n      // Maximum profile\n      builder.addTable(\n        \"maxp\",\n        \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n      ); // Num of glyphs\n\n      // Naming tables\n      builder.addTable(\"name\", createNameTable(fontName));\n\n      // PostScript information\n      builder.addTable(\"post\", createPostTable(properties));\n\n      return builder.toArray();\n    },\n\n    get spaceWidth() {\n      if (\"_shadowWidth\" in this) {\n        return this._shadowWidth;\n      }\n\n      // trying to estimate space character width\n      var possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n      var width;\n      for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n        var glyphName = possibleSpaceReplacements[i];\n        // if possible, getting width by glyph name\n        if (glyphName in this.widths) {\n          width = this.widths[glyphName];\n          break;\n        }\n        var glyphsUnicodeMap = getGlyphsUnicode();\n        var glyphUnicode = glyphsUnicodeMap[glyphName];\n        // finding the charcode via unicodeToCID map\n        var charcode = 0;\n        if (this.composite) {\n          if (this.cMap.contains(glyphUnicode)) {\n            charcode = this.cMap.lookup(glyphUnicode);\n          }\n        }\n        // ... via toUnicode map\n        if (!charcode && this.toUnicode) {\n          charcode = this.toUnicode.charCodeOf(glyphUnicode);\n        }\n        // setting it to unicode if negative or undefined\n        if (charcode <= 0) {\n          charcode = glyphUnicode;\n        }\n        // trying to get width via charcode\n        width = this.widths[charcode];\n        if (width) {\n          break; // the non-zero width found\n        }\n      }\n      width = width || this.defaultWidth;\n      // Do not shadow the property here. See discussion:\n      // https://github.com/mozilla/pdf.js/pull/2127#discussion_r1662280\n      this._shadowWidth = width;\n      return width;\n    },\n\n    charToGlyph: function Font_charToGlyph(charcode, isSpace) {\n      var fontCharCode, width, operatorListId;\n\n      var widthCode = charcode;\n      if (this.cMap && this.cMap.contains(charcode)) {\n        widthCode = this.cMap.lookup(charcode);\n      }\n      width = this.widths[widthCode];\n      width = isNum(width) ? width : this.defaultWidth;\n      var vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n      let unicode =\n        this.toUnicode.get(charcode) ||\n        this.fallbackToUnicode.get(charcode) ||\n        charcode;\n      if (typeof unicode === \"number\") {\n        unicode = String.fromCharCode(unicode);\n      }\n\n      var isInFont = charcode in this.toFontChar;\n      // First try the toFontChar map, if it's not there then try falling\n      // back to the char code.\n      fontCharCode = this.toFontChar[charcode] || charcode;\n      if (this.missingFile) {\n        const glyphName =\n          this.differences[charcode] || this.defaultEncoding[charcode];\n        if (\n          (glyphName === \".notdef\" || glyphName === \"\") &&\n          this.type === \"Type1\"\n        ) {\n          // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n          // replace them with spaces.\n          fontCharCode = 0x20;\n        }\n        fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n      }\n\n      if (this.isType3Font) {\n        // Font char code in this case is actually a glyph name.\n        operatorListId = fontCharCode;\n      }\n\n      var accent = null;\n      if (this.seacMap && this.seacMap[charcode]) {\n        isInFont = true;\n        var seac = this.seacMap[charcode];\n        fontCharCode = seac.baseFontCharCode;\n        accent = {\n          fontChar: String.fromCodePoint(seac.accentFontCharCode),\n          offset: seac.accentOffset,\n        };\n      }\n\n      var fontChar =\n        typeof fontCharCode === \"number\"\n          ? String.fromCodePoint(fontCharCode)\n          : \"\";\n\n      var glyph = this.glyphCache[charcode];\n      if (\n        !glyph ||\n        !glyph.matchesForCache(\n          fontChar,\n          unicode,\n          accent,\n          width,\n          vmetric,\n          operatorListId,\n          isSpace,\n          isInFont\n        )\n      ) {\n        glyph = new Glyph(\n          fontChar,\n          unicode,\n          accent,\n          width,\n          vmetric,\n          operatorListId,\n          isSpace,\n          isInFont\n        );\n        this.glyphCache[charcode] = glyph;\n      }\n      return glyph;\n    },\n\n    charsToGlyphs: function Font_charsToGlyphs(chars) {\n      var charsCache = this.charsCache;\n      var glyphs, glyph, charcode;\n\n      // if we translated this string before, just grab it from the cache\n      if (charsCache) {\n        glyphs = charsCache[chars];\n        if (glyphs) {\n          return glyphs;\n        }\n      }\n\n      // lazily create the translation cache\n      if (!charsCache) {\n        charsCache = this.charsCache = Object.create(null);\n      }\n\n      glyphs = [];\n      var charsCacheKey = chars;\n      var i = 0,\n        ii;\n\n      if (this.cMap) {\n        // composite fonts have multi-byte strings convert the string from\n        // single-byte to multi-byte\n        var c = Object.create(null);\n        while (i < chars.length) {\n          this.cMap.readCharCode(chars, i, c);\n          charcode = c.charcode;\n          var length = c.length;\n          i += length;\n          // Space is char with code 0x20 and length 1 in multiple-byte codes.\n          var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;\n          glyph = this.charToGlyph(charcode, isSpace);\n          glyphs.push(glyph);\n        }\n      } else {\n        for (i = 0, ii = chars.length; i < ii; ++i) {\n          charcode = chars.charCodeAt(i);\n          glyph = this.charToGlyph(charcode, charcode === 0x20);\n          glyphs.push(glyph);\n        }\n      }\n\n      // Enter the translated string into the cache\n      return (charsCache[charsCacheKey] = glyphs);\n    },\n\n    get glyphCacheValues() {\n      return Object.values(this.glyphCache);\n    },\n  };\n\n  return Font;\n})();\n\nvar ErrorFont = (function ErrorFontClosure() {\n  function ErrorFont(error) {\n    this.error = error;\n    this.loadedName = \"g_font_error\";\n    this.missingFile = true;\n  }\n\n  ErrorFont.prototype = {\n    charsToGlyphs: function ErrorFont_charsToGlyphs() {\n      return [];\n    },\n    exportData: function ErrorFont_exportData() {\n      return { error: this.error };\n    },\n  };\n\n  return ErrorFont;\n})();\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n  var charCodeToGlyphId = Object.create(null);\n  var glyphId, charCode, baseEncoding;\n  var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n  if (properties.baseEncodingName) {\n    // If a valid base encoding name was used, the mapping is initialized with\n    // that.\n    baseEncoding = getEncoding(properties.baseEncodingName);\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  } else if (isSymbolicFont) {\n    // For a symbolic font the encoding should be the fonts built-in encoding.\n    for (charCode in builtInEncoding) {\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n    }\n  } else {\n    // For non-symbolic fonts that don't have a base encoding the standard\n    // encoding should be used.\n    baseEncoding = StandardEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n\n  // Lastly, merge in the differences.\n  var differences = properties.differences,\n    glyphsUnicodeMap;\n  if (differences) {\n    for (charCode in differences) {\n      var glyphName = differences[charCode];\n      glyphId = glyphNames.indexOf(glyphName);\n\n      if (glyphId === -1) {\n        if (!glyphsUnicodeMap) {\n          glyphsUnicodeMap = getGlyphsUnicode();\n        }\n        var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n        if (standardGlyphName !== glyphName) {\n          glyphId = glyphNames.indexOf(standardGlyphName);\n        }\n      }\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n  return charCodeToGlyphId;\n}\n\n// Type1Font is also a CIDFontType0.\nvar Type1Font = (function Type1FontClosure() {\n  function findBlock(streamBytes, signature, startIndex) {\n    var streamBytesLength = streamBytes.length;\n    var signatureLength = signature.length;\n    var scanLength = streamBytesLength - signatureLength;\n\n    var i = startIndex,\n      j,\n      found = false;\n    while (i < scanLength) {\n      j = 0;\n      while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found, skip over whitespace.\n        i += j;\n        while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n          i++;\n        }\n        found = true;\n        break;\n      }\n      i++;\n    }\n    return {\n      found,\n      length: i,\n    };\n  }\n\n  function getHeaderBlock(stream, suggestedLength) {\n    var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n    var streamStartPos = stream.pos; // Save the initial stream position.\n    var headerBytes, headerBytesLength, block;\n    try {\n      headerBytes = stream.getBytes(suggestedLength);\n      headerBytesLength = headerBytes.length;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n      // cannot hold the result of `getBytes`, and fallback to simply checking\n      // the entire stream (fixes issue3928.pdf).\n    }\n\n    if (headerBytesLength === suggestedLength) {\n      // Most of the time `suggestedLength` is correct, so to speed things up we\n      // initially only check the last few bytes to see if the header was found.\n      // Otherwise we (potentially) check the entire stream to prevent errors in\n      // `Type1Parser` (fixes issue5686.pdf).\n      block = findBlock(\n        headerBytes,\n        EEXEC_SIGNATURE,\n        suggestedLength - 2 * EEXEC_SIGNATURE.length\n      );\n\n      if (block.found && block.length === suggestedLength) {\n        return {\n          stream: new Stream(headerBytes),\n          length: suggestedLength,\n        };\n      }\n    }\n    warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n    stream.pos = streamStartPos; // Reset the stream position.\n\n    var SCAN_BLOCK_LENGTH = 2048;\n    var actualLength;\n    while (true) {\n      var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n      if (block.length === 0) {\n        break;\n      }\n      stream.pos += block.length; // Update the stream position.\n\n      if (block.found) {\n        actualLength = stream.pos - streamStartPos;\n        break;\n      }\n    }\n    stream.pos = streamStartPos; // Reset the stream position.\n\n    if (actualLength) {\n      return {\n        stream: new Stream(stream.getBytes(actualLength)),\n        length: actualLength,\n      };\n    }\n    warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n    return {\n      stream: new Stream(stream.getBytes(suggestedLength)),\n      length: suggestedLength,\n    };\n  }\n\n  function getEexecBlock(stream, suggestedLength) {\n    // We should ideally parse the eexec block to ensure that `suggestedLength`\n    // is correct, so we don't truncate the block data if it's too small.\n    // However, this would also require checking if the fixed-content portion\n    // exists (using the 'Length3' property), and ensuring that it's valid.\n    //\n    // Given that `suggestedLength` almost always is correct, all the validation\n    // would require a great deal of unnecessary parsing for most fonts.\n    // To save time, we always fetch the entire stream instead, which also avoid\n    // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n    //\n    // NOTE: This means that the function can include the fixed-content portion\n    // in the returned eexec block. In practice this does *not* seem to matter,\n    // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n    var eexecBytes = stream.getBytes();\n    return {\n      stream: new Stream(eexecBytes),\n      length: eexecBytes.length,\n    };\n  }\n\n  function Type1Font(name, file, properties) {\n    // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n    // Also, length1 and length2 might be off by 6 bytes as well.\n    // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n    var PFB_HEADER_SIZE = 6;\n    var headerBlockLength = properties.length1;\n    var eexecBlockLength = properties.length2;\n    var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n    var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n    if (pfbHeaderPresent) {\n      file.skip(PFB_HEADER_SIZE);\n      headerBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Get the data block containing glyphs and subrs information\n    var headerBlock = getHeaderBlock(file, headerBlockLength);\n    var headerBlockParser = new Type1Parser(\n      headerBlock.stream,\n      false,\n      SEAC_ANALYSIS_ENABLED\n    );\n    headerBlockParser.extractFontHeader(properties);\n\n    if (pfbHeaderPresent) {\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n      eexecBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Decrypt the data blocks and retrieve it's content\n    var eexecBlock = getEexecBlock(file, eexecBlockLength);\n    var eexecBlockParser = new Type1Parser(\n      eexecBlock.stream,\n      true,\n      SEAC_ANALYSIS_ENABLED\n    );\n    var data = eexecBlockParser.extractFontProgram(properties);\n    for (var info in data.properties) {\n      properties[info] = data.properties[info];\n    }\n\n    var charstrings = data.charstrings;\n    var type2Charstrings = this.getType2Charstrings(charstrings);\n    var subrs = this.getType2Subrs(data.subrs);\n\n    this.charstrings = charstrings;\n    this.data = this.wrap(\n      name,\n      type2Charstrings,\n      this.charstrings,\n      subrs,\n      properties\n    );\n    this.seacs = this.getSeacs(data.charstrings);\n  }\n\n  Type1Font.prototype = {\n    get numGlyphs() {\n      return this.charstrings.length + 1;\n    },\n\n    getCharset: function Type1Font_getCharset() {\n      var charset = [\".notdef\"];\n      var charstrings = this.charstrings;\n      for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        charset.push(charstrings[glyphId].glyphName);\n      }\n      return charset;\n    },\n\n    getGlyphMapping: function Type1Font_getGlyphMapping(properties) {\n      var charstrings = this.charstrings;\n      var glyphNames = [\".notdef\"],\n        glyphId;\n      for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        glyphNames.push(charstrings[glyphId].glyphName);\n      }\n      var encoding = properties.builtInEncoding;\n      if (encoding) {\n        var builtInEncoding = Object.create(null);\n        for (var charCode in encoding) {\n          glyphId = glyphNames.indexOf(encoding[charCode]);\n          if (glyphId >= 0) {\n            builtInEncoding[charCode] = glyphId;\n          }\n        }\n      }\n\n      return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n    },\n\n    hasGlyphId: function Type1Font_hasGlyphID(id) {\n      if (id < 0 || id >= this.numGlyphs) {\n        return false;\n      }\n      if (id === 0) {\n        // notdef is always defined.\n        return true;\n      }\n      var glyph = this.charstrings[id - 1];\n      return glyph.charstring.length > 0;\n    },\n\n    getSeacs: function Type1Font_getSeacs(charstrings) {\n      var i, ii;\n      var seacMap = [];\n      for (i = 0, ii = charstrings.length; i < ii; i++) {\n        var charstring = charstrings[i];\n        if (charstring.seac) {\n          // Offset by 1 for .notdef\n          seacMap[i + 1] = charstring.seac;\n        }\n      }\n      return seacMap;\n    },\n\n    getType2Charstrings: function Type1Font_getType2Charstrings(\n      type1Charstrings\n    ) {\n      var type2Charstrings = [];\n      for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {\n        type2Charstrings.push(type1Charstrings[i].charstring);\n      }\n      return type2Charstrings;\n    },\n\n    getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {\n      var bias = 0;\n      var count = type1Subrs.length;\n      if (count < 1133) {\n        bias = 107;\n      } else if (count < 33769) {\n        bias = 1131;\n      } else {\n        bias = 32768;\n      }\n\n      // Add a bunch of empty subrs to deal with the Type2 bias\n      var type2Subrs = [];\n      var i;\n      for (i = 0; i < bias; i++) {\n        type2Subrs.push([0x0b]);\n      }\n\n      for (i = 0; i < count; i++) {\n        type2Subrs.push(type1Subrs[i]);\n      }\n\n      return type2Subrs;\n    },\n\n    wrap: function Type1Font_wrap(\n      name,\n      glyphs,\n      charstrings,\n      subrs,\n      properties\n    ) {\n      var cff = new CFF();\n      cff.header = new CFFHeader(1, 0, 4, 4);\n\n      cff.names = [name];\n\n      var topDict = new CFFTopDict();\n      // CFF strings IDs 0...390 are predefined names, so refering\n      // to entries in our own String INDEX starts at SID 391.\n      topDict.setByName(\"version\", 391);\n      topDict.setByName(\"Notice\", 392);\n      topDict.setByName(\"FullName\", 393);\n      topDict.setByName(\"FamilyName\", 394);\n      topDict.setByName(\"Weight\", 395);\n      topDict.setByName(\"Encoding\", null); // placeholder\n      topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n      topDict.setByName(\"FontBBox\", properties.bbox);\n      topDict.setByName(\"charset\", null); // placeholder\n      topDict.setByName(\"CharStrings\", null); // placeholder\n      topDict.setByName(\"Private\", null); // placeholder\n      cff.topDict = topDict;\n\n      var strings = new CFFStrings();\n      strings.add(\"Version 0.11\"); // Version\n      strings.add(\"See original notice\"); // Notice\n      strings.add(name); // FullName\n      strings.add(name); // FamilyName\n      strings.add(\"Medium\"); // Weight\n      cff.strings = strings;\n\n      cff.globalSubrIndex = new CFFIndex();\n\n      var count = glyphs.length;\n      var charsetArray = [\".notdef\"];\n      var i, ii;\n      for (i = 0; i < count; i++) {\n        const glyphName = charstrings[i].glyphName;\n        const index = CFFStandardStrings.indexOf(glyphName);\n        if (index === -1) {\n          strings.add(glyphName);\n        }\n        charsetArray.push(glyphName);\n      }\n      cff.charset = new CFFCharset(false, 0, charsetArray);\n\n      var charStringsIndex = new CFFIndex();\n      charStringsIndex.add([0x8b, 0x0e]); // .notdef\n      for (i = 0; i < count; i++) {\n        charStringsIndex.add(glyphs[i]);\n      }\n      cff.charStrings = charStringsIndex;\n\n      var privateDict = new CFFPrivateDict();\n      privateDict.setByName(\"Subrs\", null); // placeholder\n      var fields = [\n        \"BlueValues\",\n        \"OtherBlues\",\n        \"FamilyBlues\",\n        \"FamilyOtherBlues\",\n        \"StemSnapH\",\n        \"StemSnapV\",\n        \"BlueShift\",\n        \"BlueFuzz\",\n        \"BlueScale\",\n        \"LanguageGroup\",\n        \"ExpansionFactor\",\n        \"ForceBold\",\n        \"StdHW\",\n        \"StdVW\",\n      ];\n      for (i = 0, ii = fields.length; i < ii; i++) {\n        var field = fields[i];\n        if (!(field in properties.privateData)) {\n          continue;\n        }\n        var value = properties.privateData[field];\n        if (Array.isArray(value)) {\n          // All of the private dictionary array data in CFF must be stored as\n          // \"delta-encoded\" numbers.\n          for (var j = value.length - 1; j > 0; j--) {\n            value[j] -= value[j - 1]; // ... difference from previous value\n          }\n        }\n        privateDict.setByName(field, value);\n      }\n      cff.topDict.privateDict = privateDict;\n\n      var subrIndex = new CFFIndex();\n      for (i = 0, ii = subrs.length; i < ii; i++) {\n        subrIndex.add(subrs[i]);\n      }\n      privateDict.subrsIndex = subrIndex;\n\n      var compiler = new CFFCompiler(cff);\n      return compiler.compile();\n    },\n  };\n\n  return Type1Font;\n})();\n\nvar CFFFont = (function CFFFontClosure() {\n  function CFFFont(file, properties) {\n    this.properties = properties;\n\n    var parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n    this.cff = parser.parse();\n    this.cff.duplicateFirstGlyph();\n    var compiler = new CFFCompiler(this.cff);\n    this.seacs = this.cff.seacs;\n    try {\n      this.data = compiler.compile();\n    } catch (e) {\n      warn(\"Failed to compile font \" + properties.loadedName);\n      // There may have just been an issue with the compiler, set the data\n      // anyway and hope the font loaded.\n      this.data = file;\n    }\n  }\n\n  CFFFont.prototype = {\n    get numGlyphs() {\n      return this.cff.charStrings.count;\n    },\n    getCharset: function CFFFont_getCharset() {\n      return this.cff.charset.charset;\n    },\n    getGlyphMapping: function CFFFont_getGlyphMapping() {\n      var cff = this.cff;\n      var properties = this.properties;\n      var charsets = cff.charset.charset;\n      var charCodeToGlyphId;\n      var glyphId;\n\n      if (properties.composite) {\n        charCodeToGlyphId = Object.create(null);\n        let charCode;\n        if (cff.isCIDFont) {\n          // If the font is actually a CID font then we should use the charset\n          // to map CIDs to GIDs.\n          for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n            var cid = charsets[glyphId];\n            charCode = properties.cMap.charCodeOf(cid);\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        } else {\n          // If it is NOT actually a CID font then CIDs should be mapped\n          // directly to GIDs.\n          for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n            charCode = properties.cMap.charCodeOf(glyphId);\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        }\n        return charCodeToGlyphId;\n      }\n\n      var encoding = cff.encoding ? cff.encoding.encoding : null;\n      charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n      return charCodeToGlyphId;\n    },\n    hasGlyphId: function CFFFont_hasGlyphID(id) {\n      return this.cff.hasGlyphId(id);\n    },\n  };\n\n  return CFFFont;\n})();\n\nexport {\n  SEAC_ANALYSIS_ENABLED,\n  ErrorFont,\n  Font,\n  FontFlags,\n  ToUnicodeMap,\n  IdentityToUnicodeMap,\n  getFontType,\n};\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FormatError,\n  info,\n  stringToBytes,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  ExpertCharset,\n  ExpertSubsetCharset,\n  ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nvar MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nvar CFFStandardStrings = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n  \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n  \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n  \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n  \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n  \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n  \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n  \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n  \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n  \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n  \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n  \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n  \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n  \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n  \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n  \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n  \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n  \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n  \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n  \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n  \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n  \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n  \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n  \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n  \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n  \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n  \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n  \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n  \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n  \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n  \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n  \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n  \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n  \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n  \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n  \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n  \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n  \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n  \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n  \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n  \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n  \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n  \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n  \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n  \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n  \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nvar CFFParser = (function CFFParserClosure() {\n  var CharstringValidationData = [\n    null,\n    { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n    null,\n    { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n    { id: \"vmoveto\", min: 1, stackClearing: true },\n    { id: \"rlineto\", min: 2, resetStack: true },\n    { id: \"hlineto\", min: 1, resetStack: true },\n    { id: \"vlineto\", min: 1, resetStack: true },\n    { id: \"rrcurveto\", min: 6, resetStack: true },\n    null,\n    { id: \"callsubr\", min: 1, undefStack: true },\n    { id: \"return\", min: 0, undefStack: true },\n    null, // 12\n    null,\n    { id: \"endchar\", min: 0, stackClearing: true },\n    null,\n    null,\n    null,\n    { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"hintmask\", min: 0, stackClearing: true },\n    { id: \"cntrmask\", min: 0, stackClearing: true },\n    { id: \"rmoveto\", min: 2, stackClearing: true },\n    { id: \"hmoveto\", min: 1, stackClearing: true },\n    { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"rcurveline\", min: 8, resetStack: true },\n    { id: \"rlinecurve\", min: 8, resetStack: true },\n    { id: \"vvcurveto\", min: 4, resetStack: true },\n    { id: \"hhcurveto\", min: 4, resetStack: true },\n    null, // shortint\n    { id: \"callgsubr\", min: 1, undefStack: true },\n    { id: \"vhcurveto\", min: 4, resetStack: true },\n    { id: \"hvcurveto\", min: 4, resetStack: true },\n  ];\n  var CharstringValidationData12 = [\n    null,\n    null,\n    null,\n    { id: \"and\", min: 2, stackDelta: -1 },\n    { id: \"or\", min: 2, stackDelta: -1 },\n    { id: \"not\", min: 1, stackDelta: 0 },\n    null,\n    null,\n    null,\n    { id: \"abs\", min: 1, stackDelta: 0 },\n    {\n      id: \"add\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] + stack[index - 1];\n      },\n    },\n    {\n      id: \"sub\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] - stack[index - 1];\n      },\n    },\n    {\n      id: \"div\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] / stack[index - 1];\n      },\n    },\n    null,\n    {\n      id: \"neg\",\n      min: 1,\n      stackDelta: 0,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 1] = -stack[index - 1];\n      },\n    },\n    { id: \"eq\", min: 2, stackDelta: -1 },\n    null,\n    null,\n    { id: \"drop\", min: 1, stackDelta: -1 },\n    null,\n    { id: \"put\", min: 2, stackDelta: -2 },\n    { id: \"get\", min: 1, stackDelta: 0 },\n    { id: \"ifelse\", min: 4, stackDelta: -3 },\n    { id: \"random\", min: 0, stackDelta: 1 },\n    {\n      id: \"mul\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] * stack[index - 1];\n      },\n    },\n    null,\n    { id: \"sqrt\", min: 1, stackDelta: 0 },\n    { id: \"dup\", min: 1, stackDelta: 1 },\n    { id: \"exch\", min: 2, stackDelta: 0 },\n    { id: \"index\", min: 2, stackDelta: 0 },\n    { id: \"roll\", min: 3, stackDelta: -2 },\n    null,\n    null,\n    null,\n    { id: \"hflex\", min: 7, resetStack: true },\n    { id: \"flex\", min: 13, resetStack: true },\n    { id: \"hflex1\", min: 9, resetStack: true },\n    { id: \"flex1\", min: 11, resetStack: true },\n  ];\n\n  function CFFParser(file, properties, seacAnalysisEnabled) {\n    this.bytes = file.getBytes();\n    this.properties = properties;\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n  }\n  CFFParser.prototype = {\n    parse: function CFFParser_parse() {\n      var properties = this.properties;\n      var cff = new CFF();\n      this.cff = cff;\n\n      // The first five sections must be in order, all the others are reached\n      // via offsets contained in one of the below.\n      var header = this.parseHeader();\n      var nameIndex = this.parseIndex(header.endPos);\n      var topDictIndex = this.parseIndex(nameIndex.endPos);\n      var stringIndex = this.parseIndex(topDictIndex.endPos);\n      var globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n      var topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n      var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n      cff.header = header.obj;\n      cff.names = this.parseNameIndex(nameIndex.obj);\n      cff.strings = this.parseStringIndex(stringIndex.obj);\n      cff.topDict = topDict;\n      cff.globalSubrIndex = globalSubrIndex.obj;\n\n      this.parsePrivateDict(cff.topDict);\n\n      cff.isCIDFont = topDict.hasName(\"ROS\");\n\n      var charStringOffset = topDict.getByName(\"CharStrings\");\n      var charStringIndex = this.parseIndex(charStringOffset).obj;\n\n      var fontMatrix = topDict.getByName(\"FontMatrix\");\n      if (fontMatrix) {\n        properties.fontMatrix = fontMatrix;\n      }\n\n      var fontBBox = topDict.getByName(\"FontBBox\");\n      if (fontBBox) {\n        // adjusting ascent/descent\n        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n        properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n        properties.ascentScaled = true;\n      }\n\n      var charset, encoding;\n      if (cff.isCIDFont) {\n        var fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n        for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n          var dictRaw = fdArrayIndex.get(i);\n          var fontDict = this.createDict(\n            CFFTopDict,\n            this.parseDict(dictRaw),\n            cff.strings\n          );\n          this.parsePrivateDict(fontDict);\n          cff.fdArray.push(fontDict);\n        }\n        // cid fonts don't have an encoding\n        encoding = null;\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          true\n        );\n        cff.fdSelect = this.parseFDSelect(\n          topDict.getByName(\"FDSelect\"),\n          charStringIndex.count\n        );\n      } else {\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          false\n        );\n        encoding = this.parseEncoding(\n          topDict.getByName(\"Encoding\"),\n          properties,\n          cff.strings,\n          charset.charset\n        );\n      }\n\n      cff.charset = charset;\n      cff.encoding = encoding;\n\n      var charStringsAndSeacs = this.parseCharStrings({\n        charStrings: charStringIndex,\n        localSubrIndex: topDict.privateDict.subrsIndex,\n        globalSubrIndex: globalSubrIndex.obj,\n        fdSelect: cff.fdSelect,\n        fdArray: cff.fdArray,\n        privateDict: topDict.privateDict,\n      });\n      cff.charStrings = charStringsAndSeacs.charStrings;\n      cff.seacs = charStringsAndSeacs.seacs;\n      cff.widths = charStringsAndSeacs.widths;\n\n      return cff;\n    },\n    parseHeader: function CFFParser_parseHeader() {\n      var bytes = this.bytes;\n      var bytesLength = bytes.length;\n      var offset = 0;\n\n      // Prevent an infinite loop, by checking that the offset is within the\n      // bounds of the bytes array. Necessary in empty, or invalid, font files.\n      while (offset < bytesLength && bytes[offset] !== 1) {\n        ++offset;\n      }\n      if (offset >= bytesLength) {\n        throw new FormatError(\"Invalid CFF header\");\n      }\n      if (offset !== 0) {\n        info(\"cff data is shifted\");\n        bytes = bytes.subarray(offset);\n        this.bytes = bytes;\n      }\n      var major = bytes[0];\n      var minor = bytes[1];\n      var hdrSize = bytes[2];\n      var offSize = bytes[3];\n      var header = new CFFHeader(major, minor, hdrSize, offSize);\n      return { obj: header, endPos: hdrSize };\n    },\n    parseDict: function CFFParser_parseDict(dict) {\n      var pos = 0;\n\n      function parseOperand() {\n        var value = dict[pos++];\n        if (value === 30) {\n          return parseFloatOperand();\n        } else if (value === 28) {\n          value = dict[pos++];\n          value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n          return value;\n        } else if (value === 29) {\n          value = dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          return value;\n        } else if (value >= 32 && value <= 246) {\n          return value - 139;\n        } else if (value >= 247 && value <= 250) {\n          return (value - 247) * 256 + dict[pos++] + 108;\n        } else if (value >= 251 && value <= 254) {\n          return -((value - 251) * 256) - dict[pos++] - 108;\n        }\n        warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n        return NaN;\n      }\n\n      function parseFloatOperand() {\n        var str = \"\";\n        var eof = 15;\n        // prettier-ignore\n        const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n                        \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n        var length = dict.length;\n        while (pos < length) {\n          var b = dict[pos++];\n          var b1 = b >> 4;\n          var b2 = b & 15;\n\n          if (b1 === eof) {\n            break;\n          }\n          str += lookup[b1];\n\n          if (b2 === eof) {\n            break;\n          }\n          str += lookup[b2];\n        }\n        return parseFloat(str);\n      }\n\n      var operands = [];\n      var entries = [];\n\n      pos = 0;\n      var end = dict.length;\n      while (pos < end) {\n        var b = dict[pos];\n        if (b <= 21) {\n          if (b === 12) {\n            b = (b << 8) | dict[++pos];\n          }\n          entries.push([b, operands]);\n          operands = [];\n          ++pos;\n        } else {\n          operands.push(parseOperand());\n        }\n      }\n      return entries;\n    },\n    parseIndex: function CFFParser_parseIndex(pos) {\n      var cffIndex = new CFFIndex();\n      var bytes = this.bytes;\n      var count = (bytes[pos++] << 8) | bytes[pos++];\n      var offsets = [];\n      var end = pos;\n      var i, ii;\n\n      if (count !== 0) {\n        var offsetSize = bytes[pos++];\n        // add 1 for offset to determine size of last object\n        var startPos = pos + (count + 1) * offsetSize - 1;\n\n        for (i = 0, ii = count + 1; i < ii; ++i) {\n          var offset = 0;\n          for (var j = 0; j < offsetSize; ++j) {\n            offset <<= 8;\n            offset += bytes[pos++];\n          }\n          offsets.push(startPos + offset);\n        }\n        end = offsets[count];\n      }\n      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n        var offsetStart = offsets[i];\n        var offsetEnd = offsets[i + 1];\n        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n      }\n      return { obj: cffIndex, endPos: end };\n    },\n    parseNameIndex: function CFFParser_parseNameIndex(index) {\n      var names = [];\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var name = index.get(i);\n        names.push(bytesToString(name));\n      }\n      return names;\n    },\n    parseStringIndex: function CFFParser_parseStringIndex(index) {\n      var strings = new CFFStrings();\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var data = index.get(i);\n        strings.add(bytesToString(data));\n      }\n      return strings;\n    },\n    createDict: function CFFParser_createDict(Type, dict, strings) {\n      var cffDict = new Type(strings);\n      for (var i = 0, ii = dict.length; i < ii; ++i) {\n        var pair = dict[i];\n        var key = pair[0];\n        var value = pair[1];\n        cffDict.setByKey(key, value);\n      }\n      return cffDict;\n    },\n    parseCharString: function CFFParser_parseCharString(\n      state,\n      data,\n      localSubrIndex,\n      globalSubrIndex\n    ) {\n      if (!data || state.callDepth > MAX_SUBR_NESTING) {\n        return false;\n      }\n      var stackSize = state.stackSize;\n      var stack = state.stack;\n\n      var length = data.length;\n\n      for (var j = 0; j < length; ) {\n        var value = data[j++];\n        var validationCommand = null;\n        if (value === 12) {\n          var q = data[j++];\n          if (q === 0) {\n            // The CFF specification state that the 'dotsection' command\n            // (12, 0) is deprecated and treated as a no-op, but all Type2\n            // charstrings processors should support them. Unfortunately\n            // the font sanitizer don't. As a workaround the sequence (12, 0)\n            // is replaced by a useless (0, hmoveto).\n            data[j - 2] = 139;\n            data[j - 1] = 22;\n            stackSize = 0;\n          } else {\n            validationCommand = CharstringValidationData12[q];\n          }\n        } else if (value === 28) {\n          // number (16 bit)\n          stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n          j += 2;\n          stackSize++;\n        } else if (value === 14) {\n          if (stackSize >= 4) {\n            stackSize -= 4;\n            if (this.seacAnalysisEnabled) {\n              state.seac = stack.slice(stackSize, stackSize + 4);\n              return false;\n            }\n          }\n          validationCommand = CharstringValidationData[value];\n        } else if (value >= 32 && value <= 246) {\n          // number\n          stack[stackSize] = value - 139;\n          stackSize++;\n        } else if (value >= 247 && value <= 254) {\n          // number (+1 bytes)\n          stack[stackSize] =\n            value < 251\n              ? ((value - 247) << 8) + data[j] + 108\n              : -((value - 251) << 8) - data[j] - 108;\n          j++;\n          stackSize++;\n        } else if (value === 255) {\n          // number (32 bit)\n          stack[stackSize] =\n            ((data[j] << 24) |\n              (data[j + 1] << 16) |\n              (data[j + 2] << 8) |\n              data[j + 3]) /\n            65536;\n          j += 4;\n          stackSize++;\n        } else if (value === 19 || value === 20) {\n          state.hints += stackSize >> 1;\n          // skipping right amount of hints flag data\n          j += (state.hints + 7) >> 3;\n          stackSize %= 2;\n          validationCommand = CharstringValidationData[value];\n        } else if (value === 10 || value === 29) {\n          var subrsIndex;\n          if (value === 10) {\n            subrsIndex = localSubrIndex;\n          } else {\n            subrsIndex = globalSubrIndex;\n          }\n          if (!subrsIndex) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Missing subrsIndex for \" + validationCommand.id);\n            return false;\n          }\n          var bias = 32768;\n          if (subrsIndex.count < 1240) {\n            bias = 107;\n          } else if (subrsIndex.count < 33900) {\n            bias = 1131;\n          }\n          var subrNumber = stack[--stackSize] + bias;\n          if (\n            subrNumber < 0 ||\n            subrNumber >= subrsIndex.count ||\n            isNaN(subrNumber)\n          ) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n            return false;\n          }\n          state.stackSize = stackSize;\n          state.callDepth++;\n          var valid = this.parseCharString(\n            state,\n            subrsIndex.get(subrNumber),\n            localSubrIndex,\n            globalSubrIndex\n          );\n          if (!valid) {\n            return false;\n          }\n          state.callDepth--;\n          stackSize = state.stackSize;\n          continue;\n        } else if (value === 11) {\n          state.stackSize = stackSize;\n          return true;\n        } else {\n          validationCommand = CharstringValidationData[value];\n        }\n        if (validationCommand) {\n          if (validationCommand.stem) {\n            state.hints += stackSize >> 1;\n            if (value === 3 || value === 23) {\n              // vstem or vstemhm.\n              state.hasVStems = true;\n            } else if (state.hasVStems && (value === 1 || value === 18)) {\n              // Some browsers don't draw glyphs that specify vstems before\n              // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n              // with a pointless vstem (3) or vstemhm (23).\n              warn(\"CFF stem hints are in wrong order\");\n              data[j - 1] = value === 1 ? 3 : 23;\n            }\n          }\n          if (\"min\" in validationCommand) {\n            if (!state.undefStack && stackSize < validationCommand.min) {\n              warn(\n                \"Not enough parameters for \" +\n                  validationCommand.id +\n                  \"; actual: \" +\n                  stackSize +\n                  \", expected: \" +\n                  validationCommand.min\n              );\n              return false;\n            }\n          }\n          if (state.firstStackClearing && validationCommand.stackClearing) {\n            state.firstStackClearing = false;\n            // the optional character width can be found before the first\n            // stack-clearing command arguments\n            stackSize -= validationCommand.min;\n            if (stackSize >= 2 && validationCommand.stem) {\n              // there are even amount of arguments for stem commands\n              stackSize %= 2;\n            } else if (stackSize > 1) {\n              warn(\"Found too many parameters for stack-clearing command\");\n            }\n            if (stackSize > 0 && stack[stackSize - 1] >= 0) {\n              state.width = stack[stackSize - 1];\n            }\n          }\n          if (\"stackDelta\" in validationCommand) {\n            if (\"stackFn\" in validationCommand) {\n              validationCommand.stackFn(stack, stackSize);\n            }\n            stackSize += validationCommand.stackDelta;\n          } else if (validationCommand.stackClearing) {\n            stackSize = 0;\n          } else if (validationCommand.resetStack) {\n            stackSize = 0;\n            state.undefStack = false;\n          } else if (validationCommand.undefStack) {\n            stackSize = 0;\n            state.undefStack = true;\n            state.firstStackClearing = false;\n          }\n        }\n      }\n      state.stackSize = stackSize;\n      return true;\n    },\n    parseCharStrings({\n      charStrings,\n      localSubrIndex,\n      globalSubrIndex,\n      fdSelect,\n      fdArray,\n      privateDict,\n    }) {\n      var seacs = [];\n      var widths = [];\n      var count = charStrings.count;\n      for (var i = 0; i < count; i++) {\n        var charstring = charStrings.get(i);\n        var state = {\n          callDepth: 0,\n          stackSize: 0,\n          stack: [],\n          undefStack: true,\n          hints: 0,\n          firstStackClearing: true,\n          seac: null,\n          width: null,\n          hasVStems: false,\n        };\n        var valid = true;\n        var localSubrToUse = null;\n        var privateDictToUse = privateDict;\n        if (fdSelect && fdArray.length) {\n          var fdIndex = fdSelect.getFDIndex(i);\n          if (fdIndex === -1) {\n            warn(\"Glyph index is not in fd select.\");\n            valid = false;\n          }\n          if (fdIndex >= fdArray.length) {\n            warn(\"Invalid fd index for glyph index.\");\n            valid = false;\n          }\n          if (valid) {\n            privateDictToUse = fdArray[fdIndex].privateDict;\n            localSubrToUse = privateDictToUse.subrsIndex;\n          }\n        } else if (localSubrIndex) {\n          localSubrToUse = localSubrIndex;\n        }\n        if (valid) {\n          valid = this.parseCharString(\n            state,\n            charstring,\n            localSubrToUse,\n            globalSubrIndex\n          );\n        }\n        if (state.width !== null) {\n          const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n          widths[i] = nominalWidth + state.width;\n        } else {\n          const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n          widths[i] = defaultWidth;\n        }\n        if (state.seac !== null) {\n          seacs[i] = state.seac;\n        }\n        if (!valid) {\n          // resetting invalid charstring to single 'endchar'\n          charStrings.set(i, new Uint8Array([14]));\n        }\n      }\n      return { charStrings, seacs, widths };\n    },\n    emptyPrivateDictionary: function CFFParser_emptyPrivateDictionary(\n      parentDict\n    ) {\n      var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n      parentDict.setByKey(18, [0, 0]);\n      parentDict.privateDict = privateDict;\n    },\n    parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) {\n      // no private dict, do nothing\n      if (!parentDict.hasName(\"Private\")) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var privateOffset = parentDict.getByName(\"Private\");\n      // make sure the params are formatted correctly\n      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n        parentDict.removeByName(\"Private\");\n        return;\n      }\n      var size = privateOffset[0];\n      var offset = privateOffset[1];\n      // remove empty dicts or ones that refer to invalid location\n      if (size === 0 || offset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n\n      var privateDictEnd = offset + size;\n      var dictData = this.bytes.subarray(offset, privateDictEnd);\n      var dict = this.parseDict(dictData);\n      var privateDict = this.createDict(\n        CFFPrivateDict,\n        dict,\n        parentDict.strings\n      );\n      parentDict.privateDict = privateDict;\n\n      // Parse the Subrs index also since it's relative to the private dict.\n      if (!privateDict.getByName(\"Subrs\")) {\n        return;\n      }\n      var subrsOffset = privateDict.getByName(\"Subrs\");\n      var relativeOffset = offset + subrsOffset;\n      // Validate the offset.\n      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var subrsIndex = this.parseIndex(relativeOffset);\n      privateDict.subrsIndex = subrsIndex.obj;\n    },\n    parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {\n      if (pos === 0) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.ISO_ADOBE,\n          ISOAdobeCharset\n        );\n      } else if (pos === 1) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT,\n          ExpertCharset\n        );\n      } else if (pos === 2) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n          ExpertSubsetCharset\n        );\n      }\n\n      var bytes = this.bytes;\n      var start = pos;\n      var format = bytes[pos++];\n      var charset = [\".notdef\"];\n      var id, count, i;\n\n      // subtract 1 for the .notdef glyph\n      length -= 1;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; i++) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            charset.push(cid ? id : strings.get(id));\n          }\n          break;\n        case 1:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        case 2:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = (bytes[pos++] << 8) | bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        default:\n          throw new FormatError(\"Unknown charset format\");\n      }\n      // Raw won't be needed if we actually compile the charset.\n      var end = pos;\n      var raw = bytes.subarray(start, end);\n\n      return new CFFCharset(false, format, charset, raw);\n    },\n    parseEncoding: function CFFParser_parseEncoding(\n      pos,\n      properties,\n      strings,\n      charset\n    ) {\n      var encoding = Object.create(null);\n      var bytes = this.bytes;\n      var predefined = false;\n      var format, i, ii;\n      var raw = null;\n\n      function readSupplement() {\n        var supplementsCount = bytes[pos++];\n        for (i = 0; i < supplementsCount; i++) {\n          var code = bytes[pos++];\n          var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n          encoding[code] = charset.indexOf(strings.get(sid));\n        }\n      }\n\n      if (pos === 0 || pos === 1) {\n        predefined = true;\n        format = pos;\n        var baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n        for (i = 0, ii = charset.length; i < ii; i++) {\n          var index = baseEncoding.indexOf(charset[i]);\n          if (index !== -1) {\n            encoding[index] = i;\n          }\n        }\n      } else {\n        var dataStart = pos;\n        format = bytes[pos++];\n        switch (format & 0x7f) {\n          case 0:\n            var glyphsCount = bytes[pos++];\n            for (i = 1; i <= glyphsCount; i++) {\n              encoding[bytes[pos++]] = i;\n            }\n            break;\n\n          case 1:\n            var rangesCount = bytes[pos++];\n            var gid = 1;\n            for (i = 0; i < rangesCount; i++) {\n              var start = bytes[pos++];\n              var left = bytes[pos++];\n              for (var j = start; j <= start + left; j++) {\n                encoding[j] = gid++;\n              }\n            }\n            break;\n\n          default:\n            throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n        }\n        var dataEnd = pos;\n        if (format & 0x80) {\n          // hasSupplement\n          // The font sanitizer does not support CFF encoding with a\n          // supplement, since the encoding is not really used to map\n          // between gid to glyph, let's overwrite what is declared in\n          // the top dictionary to let the sanitizer think the font use\n          // StandardEncoding, that's a lie but that's ok.\n          bytes[dataStart] &= 0x7f;\n          readSupplement();\n        }\n        raw = bytes.subarray(dataStart, dataEnd);\n      }\n      format = format & 0x7f;\n      return new CFFEncoding(predefined, format, encoding, raw);\n    },\n    parseFDSelect: function CFFParser_parseFDSelect(pos, length) {\n      var bytes = this.bytes;\n      var format = bytes[pos++];\n      var fdSelect = [];\n      var i;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; ++i) {\n            var id = bytes[pos++];\n            fdSelect.push(id);\n          }\n          break;\n        case 3:\n          var rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n          for (i = 0; i < rangesCount; ++i) {\n            var first = (bytes[pos++] << 8) | bytes[pos++];\n            if (i === 0 && first !== 0) {\n              warn(\n                \"parseFDSelect: The first range must have a first GID of 0\" +\n                  \" -- trying to recover.\"\n              );\n              first = 0;\n            }\n            var fdIndex = bytes[pos++];\n            var next = (bytes[pos] << 8) | bytes[pos + 1];\n            for (var j = first; j < next; ++j) {\n              fdSelect.push(fdIndex);\n            }\n          }\n          // Advance past the sentinel(next).\n          pos += 2;\n          break;\n        default:\n          throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n      }\n      if (fdSelect.length !== length) {\n        throw new FormatError(\"parseFDSelect: Invalid font data.\");\n      }\n\n      return new CFFFDSelect(format, fdSelect);\n    },\n  };\n  return CFFParser;\n})();\n\n// Compact Font Format\nvar CFF = (function CFFClosure() {\n  function CFF() {\n    this.header = null;\n    this.names = [];\n    this.topDict = null;\n    this.strings = new CFFStrings();\n    this.globalSubrIndex = null;\n\n    // The following could really be per font, but since we only have one font\n    // store them here.\n    this.encoding = null;\n    this.charset = null;\n    this.charStrings = null;\n    this.fdArray = [];\n    this.fdSelect = null;\n\n    this.isCIDFont = false;\n  }\n  CFF.prototype = {\n    duplicateFirstGlyph: function CFF_duplicateFirstGlyph() {\n      // Browsers will not display a glyph at position 0. Typically glyph 0 is\n      // notdef, but a number of fonts put a valid glyph there so it must be\n      // duplicated and appended.\n      if (this.charStrings.count >= 65535) {\n        warn(\"Not enough space in charstrings to duplicate first glyph.\");\n        return;\n      }\n      var glyphZero = this.charStrings.get(0);\n      this.charStrings.add(glyphZero);\n      if (this.isCIDFont) {\n        this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n      }\n    },\n    hasGlyphId: function CFF_hasGlyphID(id) {\n      if (id < 0 || id >= this.charStrings.count) {\n        return false;\n      }\n      var glyph = this.charStrings.get(id);\n      return glyph.length > 0;\n    },\n  };\n\n  return CFF;\n})();\n\nvar CFFHeader = (function CFFHeaderClosure() {\n  function CFFHeader(major, minor, hdrSize, offSize) {\n    this.major = major;\n    this.minor = minor;\n    this.hdrSize = hdrSize;\n    this.offSize = offSize;\n  }\n  return CFFHeader;\n})();\n\nvar CFFStrings = (function CFFStringsClosure() {\n  function CFFStrings() {\n    this.strings = [];\n  }\n  CFFStrings.prototype = {\n    get: function CFFStrings_get(index) {\n      if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n        return CFFStandardStrings[index];\n      }\n      if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n        return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n      }\n      return CFFStandardStrings[0];\n    },\n    getSID: function CFFStrings_getSID(str) {\n      let index = CFFStandardStrings.indexOf(str);\n      if (index !== -1) {\n        return index;\n      }\n      index = this.strings.indexOf(str);\n      if (index !== -1) {\n        return index + NUM_STANDARD_CFF_STRINGS;\n      }\n      return -1;\n    },\n    add: function CFFStrings_add(value) {\n      this.strings.push(value);\n    },\n    get count() {\n      return this.strings.length;\n    },\n  };\n  return CFFStrings;\n})();\n\nvar CFFIndex = (function CFFIndexClosure() {\n  function CFFIndex() {\n    this.objects = [];\n    this.length = 0;\n  }\n  CFFIndex.prototype = {\n    add: function CFFIndex_add(data) {\n      this.length += data.length;\n      this.objects.push(data);\n    },\n    set: function CFFIndex_set(index, data) {\n      this.length += data.length - this.objects[index].length;\n      this.objects[index] = data;\n    },\n    get: function CFFIndex_get(index) {\n      return this.objects[index];\n    },\n    get count() {\n      return this.objects.length;\n    },\n  };\n  return CFFIndex;\n})();\n\nvar CFFDict = (function CFFDictClosure() {\n  function CFFDict(tables, strings) {\n    this.keyToNameMap = tables.keyToNameMap;\n    this.nameToKeyMap = tables.nameToKeyMap;\n    this.defaults = tables.defaults;\n    this.types = tables.types;\n    this.opcodes = tables.opcodes;\n    this.order = tables.order;\n    this.strings = strings;\n    this.values = Object.create(null);\n  }\n  CFFDict.prototype = {\n    // value should always be an array\n    setByKey: function CFFDict_setByKey(key, value) {\n      if (!(key in this.keyToNameMap)) {\n        return false;\n      }\n      var valueLength = value.length;\n      // ignore empty values\n      if (valueLength === 0) {\n        return true;\n      }\n      // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n      for (var i = 0; i < valueLength; i++) {\n        if (isNaN(value[i])) {\n          warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n          return true;\n        }\n      }\n      var type = this.types[key];\n      // remove the array wrapping these types of values\n      if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n        value = value[0];\n      }\n      this.values[key] = value;\n      return true;\n    },\n    setByName: function CFFDict_setByName(name, value) {\n      if (!(name in this.nameToKeyMap)) {\n        throw new FormatError(`Invalid dictionary name \"${name}\"`);\n      }\n      this.values[this.nameToKeyMap[name]] = value;\n    },\n    hasName: function CFFDict_hasName(name) {\n      return this.nameToKeyMap[name] in this.values;\n    },\n    getByName: function CFFDict_getByName(name) {\n      if (!(name in this.nameToKeyMap)) {\n        throw new FormatError(`Invalid dictionary name ${name}\"`);\n      }\n      var key = this.nameToKeyMap[name];\n      if (!(key in this.values)) {\n        return this.defaults[key];\n      }\n      return this.values[key];\n    },\n    removeByName: function CFFDict_removeByName(name) {\n      delete this.values[this.nameToKeyMap[name]];\n    },\n  };\n  CFFDict.createTables = function CFFDict_createTables(layout) {\n    var tables = {\n      keyToNameMap: {},\n      nameToKeyMap: {},\n      defaults: {},\n      types: {},\n      opcodes: {},\n      order: [],\n    };\n    for (var i = 0, ii = layout.length; i < ii; ++i) {\n      var entry = layout[i];\n      var key = Array.isArray(entry[0])\n        ? (entry[0][0] << 8) + entry[0][1]\n        : entry[0];\n      tables.keyToNameMap[key] = entry[1];\n      tables.nameToKeyMap[entry[1]] = key;\n      tables.types[key] = entry[2];\n      tables.defaults[key] = entry[3];\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n      tables.order.push(key);\n    }\n    return tables;\n  };\n  return CFFDict;\n})();\n\nvar CFFTopDict = (function CFFTopDictClosure() {\n  var layout = [\n    [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n    [[12, 20], \"SyntheticBase\", \"num\", null],\n    [0, \"version\", \"sid\", null],\n    [1, \"Notice\", \"sid\", null],\n    [[12, 0], \"Copyright\", \"sid\", null],\n    [2, \"FullName\", \"sid\", null],\n    [3, \"FamilyName\", \"sid\", null],\n    [4, \"Weight\", \"sid\", null],\n    [[12, 1], \"isFixedPitch\", \"num\", 0],\n    [[12, 2], \"ItalicAngle\", \"num\", 0],\n    [[12, 3], \"UnderlinePosition\", \"num\", -100],\n    [[12, 4], \"UnderlineThickness\", \"num\", 50],\n    [[12, 5], \"PaintType\", \"num\", 0],\n    [[12, 6], \"CharstringType\", \"num\", 2],\n    // prettier-ignore\n    [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n                            [0.001, 0, 0, 0.001, 0, 0]],\n    [13, \"UniqueID\", \"num\", null],\n    [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n    [[12, 8], \"StrokeWidth\", \"num\", 0],\n    [14, \"XUID\", \"array\", null],\n    [15, \"charset\", \"offset\", 0],\n    [16, \"Encoding\", \"offset\", 0],\n    [17, \"CharStrings\", \"offset\", 0],\n    [18, \"Private\", [\"offset\", \"offset\"], null],\n    [[12, 21], \"PostScript\", \"sid\", null],\n    [[12, 22], \"BaseFontName\", \"sid\", null],\n    [[12, 23], \"BaseFontBlend\", \"delta\", null],\n    [[12, 31], \"CIDFontVersion\", \"num\", 0],\n    [[12, 32], \"CIDFontRevision\", \"num\", 0],\n    [[12, 33], \"CIDFontType\", \"num\", 0],\n    [[12, 34], \"CIDCount\", \"num\", 8720],\n    [[12, 35], \"UIDBase\", \"num\", null],\n    // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n    // before FDArray.\n    [[12, 37], \"FDSelect\", \"offset\", null],\n    [[12, 36], \"FDArray\", \"offset\", null],\n    [[12, 38], \"FontName\", \"sid\", null],\n  ];\n  var tables = null;\n  function CFFTopDict(strings) {\n    if (tables === null) {\n      tables = CFFDict.createTables(layout);\n    }\n    CFFDict.call(this, tables, strings);\n    this.privateDict = null;\n  }\n  CFFTopDict.prototype = Object.create(CFFDict.prototype);\n  return CFFTopDict;\n})();\n\nvar CFFPrivateDict = (function CFFPrivateDictClosure() {\n  var layout = [\n    [6, \"BlueValues\", \"delta\", null],\n    [7, \"OtherBlues\", \"delta\", null],\n    [8, \"FamilyBlues\", \"delta\", null],\n    [9, \"FamilyOtherBlues\", \"delta\", null],\n    [[12, 9], \"BlueScale\", \"num\", 0.039625],\n    [[12, 10], \"BlueShift\", \"num\", 7],\n    [[12, 11], \"BlueFuzz\", \"num\", 1],\n    [10, \"StdHW\", \"num\", null],\n    [11, \"StdVW\", \"num\", null],\n    [[12, 12], \"StemSnapH\", \"delta\", null],\n    [[12, 13], \"StemSnapV\", \"delta\", null],\n    [[12, 14], \"ForceBold\", \"num\", 0],\n    [[12, 17], \"LanguageGroup\", \"num\", 0],\n    [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n    [[12, 19], \"initialRandomSeed\", \"num\", 0],\n    [20, \"defaultWidthX\", \"num\", 0],\n    [21, \"nominalWidthX\", \"num\", 0],\n    [19, \"Subrs\", \"offset\", null],\n  ];\n  var tables = null;\n  function CFFPrivateDict(strings) {\n    if (tables === null) {\n      tables = CFFDict.createTables(layout);\n    }\n    CFFDict.call(this, tables, strings);\n    this.subrsIndex = null;\n  }\n  CFFPrivateDict.prototype = Object.create(CFFDict.prototype);\n  return CFFPrivateDict;\n})();\n\nvar CFFCharsetPredefinedTypes = {\n  ISO_ADOBE: 0,\n  EXPERT: 1,\n  EXPERT_SUBSET: 2,\n};\nvar CFFCharset = (function CFFCharsetClosure() {\n  function CFFCharset(predefined, format, charset, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.charset = charset;\n    this.raw = raw;\n  }\n  return CFFCharset;\n})();\n\nvar CFFEncoding = (function CFFEncodingClosure() {\n  function CFFEncoding(predefined, format, encoding, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.encoding = encoding;\n    this.raw = raw;\n  }\n  return CFFEncoding;\n})();\n\nvar CFFFDSelect = (function CFFFDSelectClosure() {\n  function CFFFDSelect(format, fdSelect) {\n    this.format = format;\n    this.fdSelect = fdSelect;\n  }\n  CFFFDSelect.prototype = {\n    getFDIndex: function CFFFDSelect_get(glyphIndex) {\n      if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n        return -1;\n      }\n      return this.fdSelect[glyphIndex];\n    },\n  };\n  return CFFFDSelect;\n})();\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nvar CFFOffsetTracker = (function CFFOffsetTrackerClosure() {\n  function CFFOffsetTracker() {\n    this.offsets = Object.create(null);\n  }\n  CFFOffsetTracker.prototype = {\n    isTracking: function CFFOffsetTracker_isTracking(key) {\n      return key in this.offsets;\n    },\n    track: function CFFOffsetTracker_track(key, location) {\n      if (key in this.offsets) {\n        throw new FormatError(`Already tracking location of ${key}`);\n      }\n      this.offsets[key] = location;\n    },\n    offset: function CFFOffsetTracker_offset(value) {\n      for (var key in this.offsets) {\n        this.offsets[key] += value;\n      }\n    },\n    setEntryLocation: function CFFOffsetTracker_setEntryLocation(\n      key,\n      values,\n      output\n    ) {\n      if (!(key in this.offsets)) {\n        throw new FormatError(`Not tracking location of ${key}`);\n      }\n      var data = output.data;\n      var dataOffset = this.offsets[key];\n      var size = 5;\n      for (var i = 0, ii = values.length; i < ii; ++i) {\n        var offset0 = i * size + dataOffset;\n        var offset1 = offset0 + 1;\n        var offset2 = offset0 + 2;\n        var offset3 = offset0 + 3;\n        var offset4 = offset0 + 4;\n        // It's easy to screw up offsets so perform this sanity check.\n        if (\n          data[offset0] !== 0x1d ||\n          data[offset1] !== 0 ||\n          data[offset2] !== 0 ||\n          data[offset3] !== 0 ||\n          data[offset4] !== 0\n        ) {\n          throw new FormatError(\"writing to an offset that is not empty\");\n        }\n        var value = values[i];\n        data[offset0] = 0x1d;\n        data[offset1] = (value >> 24) & 0xff;\n        data[offset2] = (value >> 16) & 0xff;\n        data[offset3] = (value >> 8) & 0xff;\n        data[offset4] = value & 0xff;\n      }\n    },\n  };\n  return CFFOffsetTracker;\n})();\n\n// Takes a CFF and converts it to the binary representation.\nvar CFFCompiler = (function CFFCompilerClosure() {\n  function CFFCompiler(cff) {\n    this.cff = cff;\n  }\n  CFFCompiler.prototype = {\n    compile: function CFFCompiler_compile() {\n      var cff = this.cff;\n      var output = {\n        data: [],\n        length: 0,\n        add: function CFFCompiler_add(data) {\n          this.data = this.data.concat(data);\n          this.length = this.data.length;\n        },\n      };\n\n      // Compile the five entries that must be in order.\n      var header = this.compileHeader(cff.header);\n      output.add(header);\n\n      var nameIndex = this.compileNameIndex(cff.names);\n      output.add(nameIndex);\n\n      if (cff.isCIDFont) {\n        // The spec is unclear on how font matrices should relate to each other\n        // when there is one in the main top dict and the sub top dicts.\n        // Windows handles this differently than linux and osx so we have to\n        // normalize to work on all.\n        // Rules based off of some mailing list discussions:\n        // - If main font has a matrix and subfont doesn't, use the main matrix.\n        // - If no main font matrix and there is a subfont matrix, use the\n        //   subfont matrix.\n        // - If both have matrices, concat together.\n        // - If neither have matrices, use default.\n        // To make this work on all platforms we move the top matrix into each\n        // sub top dict and concat if necessary.\n        if (cff.topDict.hasName(\"FontMatrix\")) {\n          var base = cff.topDict.getByName(\"FontMatrix\");\n          cff.topDict.removeByName(\"FontMatrix\");\n          for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {\n            var subDict = cff.fdArray[i];\n            var matrix = base.slice(0);\n            if (subDict.hasName(\"FontMatrix\")) {\n              matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n            }\n            subDict.setByName(\"FontMatrix\", matrix);\n          }\n        }\n      }\n\n      cff.topDict.setByName(\"charset\", 0);\n      var compiled = this.compileTopDicts(\n        [cff.topDict],\n        output.length,\n        cff.isCIDFont\n      );\n      output.add(compiled.output);\n      var topDictTracker = compiled.trackers[0];\n\n      var stringIndex = this.compileStringIndex(cff.strings.strings);\n      output.add(stringIndex);\n\n      var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n      output.add(globalSubrIndex);\n\n      // Now start on the other entries that have no specific order.\n      if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n        if (cff.encoding.predefined) {\n          topDictTracker.setEntryLocation(\n            \"Encoding\",\n            [cff.encoding.format],\n            output\n          );\n        } else {\n          var encoding = this.compileEncoding(cff.encoding);\n          topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n          output.add(encoding);\n        }\n      }\n      var charset = this.compileCharset(\n        cff.charset,\n        cff.charStrings.count,\n        cff.strings,\n        cff.isCIDFont\n      );\n      topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n      output.add(charset);\n\n      var charStrings = this.compileCharStrings(cff.charStrings);\n      topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n      output.add(charStrings);\n\n      if (cff.isCIDFont) {\n        // For some reason FDSelect must be in front of FDArray on windows. OSX\n        // and linux don't seem to care.\n        topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n        var fdSelect = this.compileFDSelect(cff.fdSelect);\n        output.add(fdSelect);\n        // It is unclear if the sub font dictionary can have CID related\n        // dictionary keys, but the sanitizer doesn't like them so remove them.\n        compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n        topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n        output.add(compiled.output);\n        var fontDictTrackers = compiled.trackers;\n\n        this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n      }\n\n      this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n      // If the font data ends with INDEX whose object data is zero-length,\n      // the sanitizer will bail out. Add a dummy byte to avoid that.\n      output.add([0]);\n\n      return output.data;\n    },\n    encodeNumber: function CFFCompiler_encodeNumber(value) {\n      if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) {\n        // isInt\n        return this.encodeInteger(value);\n      }\n      return this.encodeFloat(value);\n    },\n    encodeFloat: function CFFCompiler_encodeFloat(num) {\n      var value = num.toString();\n\n      // rounding inaccurate doubles\n      var m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n      if (m) {\n        var epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n        value = (Math.round(num * epsilon) / epsilon).toString();\n      }\n\n      var nibbles = \"\";\n      var i, ii;\n      for (i = 0, ii = value.length; i < ii; ++i) {\n        var a = value[i];\n        if (a === \"e\") {\n          nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n        } else if (a === \".\") {\n          nibbles += \"a\";\n        } else if (a === \"-\") {\n          nibbles += \"e\";\n        } else {\n          nibbles += a;\n        }\n      }\n      nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n      var out = [30];\n      for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n        out.push(parseInt(nibbles.substring(i, i + 2), 16));\n      }\n      return out;\n    },\n    encodeInteger: function CFFCompiler_encodeInteger(value) {\n      var code;\n      if (value >= -107 && value <= 107) {\n        code = [value + 139];\n      } else if (value >= 108 && value <= 1131) {\n        value = value - 108;\n        code = [(value >> 8) + 247, value & 0xff];\n      } else if (value >= -1131 && value <= -108) {\n        value = -value - 108;\n        code = [(value >> 8) + 251, value & 0xff];\n      } else if (value >= -32768 && value <= 32767) {\n        code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n      } else {\n        code = [\n          0x1d,\n          (value >> 24) & 0xff,\n          (value >> 16) & 0xff,\n          (value >> 8) & 0xff,\n          value & 0xff,\n        ];\n      }\n      return code;\n    },\n    compileHeader: function CFFCompiler_compileHeader(header) {\n      return [header.major, header.minor, header.hdrSize, header.offSize];\n    },\n    compileNameIndex: function CFFCompiler_compileNameIndex(names) {\n      var nameIndex = new CFFIndex();\n      for (var i = 0, ii = names.length; i < ii; ++i) {\n        var name = names[i];\n        // OTS doesn't allow names to be over 127 characters.\n        var length = Math.min(name.length, 127);\n        var sanitizedName = new Array(length);\n        for (var j = 0; j < length; j++) {\n          // OTS requires chars to be between a range and not certain other\n          // chars.\n          var char = name[j];\n          if (\n            char < \"!\" ||\n            char > \"~\" ||\n            char === \"[\" ||\n            char === \"]\" ||\n            char === \"(\" ||\n            char === \")\" ||\n            char === \"{\" ||\n            char === \"}\" ||\n            char === \"<\" ||\n            char === \">\" ||\n            char === \"/\" ||\n            char === \"%\"\n          ) {\n            char = \"_\";\n          }\n          sanitizedName[j] = char;\n        }\n        sanitizedName = sanitizedName.join(\"\");\n\n        if (sanitizedName === \"\") {\n          sanitizedName = \"Bad_Font_Name\";\n        }\n        nameIndex.add(stringToBytes(sanitizedName));\n      }\n      return this.compileIndex(nameIndex);\n    },\n    compileTopDicts: function CFFCompiler_compileTopDicts(\n      dicts,\n      length,\n      removeCidKeys\n    ) {\n      var fontDictTrackers = [];\n      var fdArrayIndex = new CFFIndex();\n      for (var i = 0, ii = dicts.length; i < ii; ++i) {\n        var fontDict = dicts[i];\n        if (removeCidKeys) {\n          fontDict.removeByName(\"CIDFontVersion\");\n          fontDict.removeByName(\"CIDFontRevision\");\n          fontDict.removeByName(\"CIDFontType\");\n          fontDict.removeByName(\"CIDCount\");\n          fontDict.removeByName(\"UIDBase\");\n        }\n        var fontDictTracker = new CFFOffsetTracker();\n        var fontDictData = this.compileDict(fontDict, fontDictTracker);\n        fontDictTrackers.push(fontDictTracker);\n        fdArrayIndex.add(fontDictData);\n        fontDictTracker.offset(length);\n      }\n      fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n      return {\n        trackers: fontDictTrackers,\n        output: fdArrayIndex,\n      };\n    },\n    compilePrivateDicts: function CFFCompiler_compilePrivateDicts(\n      dicts,\n      trackers,\n      output\n    ) {\n      for (var i = 0, ii = dicts.length; i < ii; ++i) {\n        var fontDict = dicts[i];\n        var privateDict = fontDict.privateDict;\n        if (!privateDict || !fontDict.hasName(\"Private\")) {\n          throw new FormatError(\"There must be a private dictionary.\");\n        }\n        var privateDictTracker = new CFFOffsetTracker();\n        var privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n        var outputLength = output.length;\n        privateDictTracker.offset(outputLength);\n        if (!privateDictData.length) {\n          // The private dictionary was empty, set the output length to zero to\n          // ensure the offset length isn't out of bounds in the eyes of the\n          // sanitizer.\n          outputLength = 0;\n        }\n\n        trackers[i].setEntryLocation(\n          \"Private\",\n          [privateDictData.length, outputLength],\n          output\n        );\n        output.add(privateDictData);\n\n        if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n          var subrs = this.compileIndex(privateDict.subrsIndex);\n          privateDictTracker.setEntryLocation(\n            \"Subrs\",\n            [privateDictData.length],\n            output\n          );\n          output.add(subrs);\n        }\n      }\n    },\n    compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {\n      var out = [];\n      // The dictionary keys must be in a certain order.\n      var order = dict.order;\n      for (var i = 0; i < order.length; ++i) {\n        var key = order[i];\n        if (!(key in dict.values)) {\n          continue;\n        }\n        var values = dict.values[key];\n        var types = dict.types[key];\n        if (!Array.isArray(types)) {\n          types = [types];\n        }\n        if (!Array.isArray(values)) {\n          values = [values];\n        }\n\n        // Remove any empty dict values.\n        if (values.length === 0) {\n          continue;\n        }\n\n        for (var j = 0, jj = types.length; j < jj; ++j) {\n          var type = types[j];\n          var value = values[j];\n          switch (type) {\n            case \"num\":\n            case \"sid\":\n              out = out.concat(this.encodeNumber(value));\n              break;\n            case \"offset\":\n              // For offsets we just insert a 32bit integer so we don't have to\n              // deal with figuring out the length of the offset when it gets\n              // replaced later on by the compiler.\n              var name = dict.keyToNameMap[key];\n              // Some offsets have the offset and the length, so just record the\n              // position of the first one.\n              if (!offsetTracker.isTracking(name)) {\n                offsetTracker.track(name, out.length);\n              }\n              out = out.concat([0x1d, 0, 0, 0, 0]);\n              break;\n            case \"array\":\n            case \"delta\":\n              out = out.concat(this.encodeNumber(value));\n              for (var k = 1, kk = values.length; k < kk; ++k) {\n                out = out.concat(this.encodeNumber(values[k]));\n              }\n              break;\n            default:\n              throw new FormatError(`Unknown data type of ${type}`);\n          }\n        }\n        out = out.concat(dict.opcodes[key]);\n      }\n      return out;\n    },\n    compileStringIndex: function CFFCompiler_compileStringIndex(strings) {\n      var stringIndex = new CFFIndex();\n      for (var i = 0, ii = strings.length; i < ii; ++i) {\n        stringIndex.add(stringToBytes(strings[i]));\n      }\n      return this.compileIndex(stringIndex);\n    },\n    compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {\n      var globalSubrIndex = this.cff.globalSubrIndex;\n      this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n    },\n    compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) {\n      var charStringsIndex = new CFFIndex();\n      for (var i = 0; i < charStrings.count; i++) {\n        var glyph = charStrings.get(i);\n        // If the CharString outline is empty, replace it with .notdef to\n        // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n        if (glyph.length === 0) {\n          charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n          continue;\n        }\n        charStringsIndex.add(glyph);\n      }\n      return this.compileIndex(charStringsIndex);\n    },\n    compileCharset: function CFFCompiler_compileCharset(\n      charset,\n      numGlyphs,\n      strings,\n      isCIDFont\n    ) {\n      // Freetype requires the number of charset strings be correct and MacOS\n      // requires a valid mapping for printing.\n      let out;\n      const numGlyphsLessNotDef = numGlyphs - 1;\n      if (isCIDFont) {\n        // In a CID font, the charset is a mapping of CIDs not SIDs so just\n        // create an identity mapping.\n        out = new Uint8Array([\n          2, // format\n          0, // first CID upper byte\n          0, // first CID lower byte\n          (numGlyphsLessNotDef >> 8) & 0xff,\n          numGlyphsLessNotDef & 0xff,\n        ]);\n      } else {\n        const length = 1 + numGlyphsLessNotDef * 2;\n        out = new Uint8Array(length);\n        out[0] = 0; // format 0\n        let charsetIndex = 0;\n        const numCharsets = charset.charset.length;\n        let warned = false;\n        for (let i = 1; i < out.length; i += 2) {\n          let sid = 0;\n          if (charsetIndex < numCharsets) {\n            const name = charset.charset[charsetIndex++];\n            sid = strings.getSID(name);\n            if (sid === -1) {\n              sid = 0;\n              if (!warned) {\n                warned = true;\n                warn(`Couldn't find ${name} in CFF strings`);\n              }\n            }\n          }\n          out[i] = (sid >> 8) & 0xff;\n          out[i + 1] = sid & 0xff;\n        }\n      }\n      return this.compileTypedArray(out);\n    },\n    compileEncoding: function CFFCompiler_compileEncoding(encoding) {\n      return this.compileTypedArray(encoding.raw);\n    },\n    compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {\n      const format = fdSelect.format;\n      let out, i;\n      switch (format) {\n        case 0:\n          out = new Uint8Array(1 + fdSelect.fdSelect.length);\n          out[0] = format;\n          for (i = 0; i < fdSelect.fdSelect.length; i++) {\n            out[i + 1] = fdSelect.fdSelect[i];\n          }\n          break;\n        case 3:\n          const start = 0;\n          let lastFD = fdSelect.fdSelect[0];\n          const ranges = [\n            format,\n            0, // nRanges place holder\n            0, // nRanges place holder\n            (start >> 8) & 0xff,\n            start & 0xff,\n            lastFD,\n          ];\n          for (i = 1; i < fdSelect.fdSelect.length; i++) {\n            const currentFD = fdSelect.fdSelect[i];\n            if (currentFD !== lastFD) {\n              ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n              lastFD = currentFD;\n            }\n          }\n          // 3 bytes are pushed for every range and there are 3 header bytes.\n          const numRanges = (ranges.length - 3) / 3;\n          ranges[1] = (numRanges >> 8) & 0xff;\n          ranges[2] = numRanges & 0xff;\n          // sentinel\n          ranges.push((i >> 8) & 0xff, i & 0xff);\n          out = new Uint8Array(ranges);\n          break;\n      }\n      return this.compileTypedArray(out);\n    },\n    compileTypedArray: function CFFCompiler_compileTypedArray(data) {\n      var out = [];\n      for (var i = 0, ii = data.length; i < ii; ++i) {\n        out[i] = data[i];\n      }\n      return out;\n    },\n    compileIndex: function CFFCompiler_compileIndex(index, trackers) {\n      trackers = trackers || [];\n      var objects = index.objects;\n      // First 2 bytes contains the number of objects contained into this index\n      var count = objects.length;\n\n      // If there is no object, just create an index. This technically\n      // should just be [0, 0] but OTS has an issue with that.\n      if (count === 0) {\n        return [0, 0, 0];\n      }\n\n      var data = [(count >> 8) & 0xff, count & 0xff];\n\n      var lastOffset = 1,\n        i;\n      for (i = 0; i < count; ++i) {\n        lastOffset += objects[i].length;\n      }\n\n      var offsetSize;\n      if (lastOffset < 0x100) {\n        offsetSize = 1;\n      } else if (lastOffset < 0x10000) {\n        offsetSize = 2;\n      } else if (lastOffset < 0x1000000) {\n        offsetSize = 3;\n      } else {\n        offsetSize = 4;\n      }\n\n      // Next byte contains the offset size use to reference object in the file\n      data.push(offsetSize);\n\n      // Add another offset after this one because we need a new offset\n      var relativeOffset = 1;\n      for (i = 0; i < count + 1; i++) {\n        if (offsetSize === 1) {\n          data.push(relativeOffset & 0xff);\n        } else if (offsetSize === 2) {\n          data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n        } else if (offsetSize === 3) {\n          data.push(\n            (relativeOffset >> 16) & 0xff,\n            (relativeOffset >> 8) & 0xff,\n            relativeOffset & 0xff\n          );\n        } else {\n          data.push(\n            (relativeOffset >>> 24) & 0xff,\n            (relativeOffset >> 16) & 0xff,\n            (relativeOffset >> 8) & 0xff,\n            relativeOffset & 0xff\n          );\n        }\n\n        if (objects[i]) {\n          relativeOffset += objects[i].length;\n        }\n      }\n\n      for (i = 0; i < count; i++) {\n        // Notify the tracker where the object will be offset in the data.\n        if (trackers[i]) {\n          trackers[i].offset(data.length);\n        }\n        for (var j = 0, jj = objects[i].length; j < jj; j++) {\n          data.push(objects[i][j]);\n        }\n      }\n      return data;\n    },\n  };\n  return CFFCompiler;\n})();\n\nexport {\n  CFFStandardStrings,\n  CFFParser,\n  CFF,\n  CFFHeader,\n  CFFStrings,\n  CFFIndex,\n  CFFCharset,\n  CFFTopDict,\n  CFFPrivateDict,\n  CFFCompiler,\n  CFFFDSelect,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n  \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n  \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n  \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n  \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n  \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n  \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n  \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n  \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n  \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n  \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n  \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n  \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n  \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n  \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n  \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n  \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n  \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n  \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n  \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n  \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n  \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n  \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n  \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n  \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n  \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n  \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n  \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n  \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n  \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n  \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n  \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n  \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n  \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n  \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n  \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n  \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n  \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n  \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\"\n];\n\nexport { ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n  \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n  \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n  \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n  \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n  \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n  \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n  \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n  \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n  \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n  \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n  \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n  \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n  \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n  \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n  \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n  \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n  \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n  \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n  \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n  \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n  \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n  \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n  \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n  \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n  \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n  \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n  \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n  \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n  \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n  \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n  \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n  \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n  \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n  \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n  \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n  \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n  \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n  \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n  \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n  \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n  \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n  \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n  \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n  \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n  \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n  \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n  \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n  \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n  \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n  \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n  \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n  \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n  \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n  \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n  \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n  \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n  \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n  \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n  \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n  \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n  \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n  \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n  \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n  \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n  \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n  \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n  \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n  \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n  \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n  \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n  \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n  \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n  \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n  \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n  \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n  \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n  \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n  \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n  \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n  \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n  \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n  \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n  \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n  \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n  \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n  \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n  \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n  \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n  \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n  \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n  \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n  \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n  \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n  \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n  \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n  \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n  \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n  \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n  \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n  \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n  \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n  \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n  \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n  \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n  \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n  \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n  \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n  \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n  \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n  \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n  \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n  \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n  \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n  \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n  \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n  \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n  \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n  \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n  \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n  \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n  \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n  \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n  \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n  \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n  \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n  \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n  \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n  \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n  \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n  \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n  \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n  \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n  \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n  switch (encodingName) {\n    case \"WinAnsiEncoding\":\n      return WinAnsiEncoding;\n    case \"StandardEncoding\":\n      return StandardEncoding;\n    case \"MacRomanEncoding\":\n      return MacRomanEncoding;\n    case \"SymbolSetEncoding\":\n      return SymbolSetEncoding;\n    case \"ZapfDingbatsEncoding\":\n      return ZapfDingbatsEncoding;\n    case \"ExpertEncoding\":\n      return ExpertEncoding;\n    case \"MacExpertEncoding\":\n      return MacExpertEncoding;\n    default:\n      return null;\n  }\n}\n\nexport {\n  WinAnsiEncoding,\n  StandardEncoding,\n  MacRomanEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n  ExpertEncoding,\n  getEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nvar getLookupTableFactory = require(\"./core_utils.js\").getLookupTableFactory;\n\nvar getGlyphsUnicode = getLookupTableFactory(function(t) {\n  t[\"A\"] = 0x0041;\n  t[\"AE\"] = 0x00c6;\n  t[\"AEacute\"] = 0x01fc;\n  t[\"AEmacron\"] = 0x01e2;\n  t[\"AEsmall\"] = 0xf7e6;\n  t[\"Aacute\"] = 0x00c1;\n  t[\"Aacutesmall\"] = 0xf7e1;\n  t[\"Abreve\"] = 0x0102;\n  t[\"Abreveacute\"] = 0x1eae;\n  t[\"Abrevecyrillic\"] = 0x04d0;\n  t[\"Abrevedotbelow\"] = 0x1eb6;\n  t[\"Abrevegrave\"] = 0x1eb0;\n  t[\"Abrevehookabove\"] = 0x1eb2;\n  t[\"Abrevetilde\"] = 0x1eb4;\n  t[\"Acaron\"] = 0x01cd;\n  t[\"Acircle\"] = 0x24b6;\n  t[\"Acircumflex\"] = 0x00c2;\n  t[\"Acircumflexacute\"] = 0x1ea4;\n  t[\"Acircumflexdotbelow\"] = 0x1eac;\n  t[\"Acircumflexgrave\"] = 0x1ea6;\n  t[\"Acircumflexhookabove\"] = 0x1ea8;\n  t[\"Acircumflexsmall\"] = 0xf7e2;\n  t[\"Acircumflextilde\"] = 0x1eaa;\n  t[\"Acute\"] = 0xf6c9;\n  t[\"Acutesmall\"] = 0xf7b4;\n  t[\"Acyrillic\"] = 0x0410;\n  t[\"Adblgrave\"] = 0x0200;\n  t[\"Adieresis\"] = 0x00c4;\n  t[\"Adieresiscyrillic\"] = 0x04d2;\n  t[\"Adieresismacron\"] = 0x01de;\n  t[\"Adieresissmall\"] = 0xf7e4;\n  t[\"Adotbelow\"] = 0x1ea0;\n  t[\"Adotmacron\"] = 0x01e0;\n  t[\"Agrave\"] = 0x00c0;\n  t[\"Agravesmall\"] = 0xf7e0;\n  t[\"Ahookabove\"] = 0x1ea2;\n  t[\"Aiecyrillic\"] = 0x04d4;\n  t[\"Ainvertedbreve\"] = 0x0202;\n  t[\"Alpha\"] = 0x0391;\n  t[\"Alphatonos\"] = 0x0386;\n  t[\"Amacron\"] = 0x0100;\n  t[\"Amonospace\"] = 0xff21;\n  t[\"Aogonek\"] = 0x0104;\n  t[\"Aring\"] = 0x00c5;\n  t[\"Aringacute\"] = 0x01fa;\n  t[\"Aringbelow\"] = 0x1e00;\n  t[\"Aringsmall\"] = 0xf7e5;\n  t[\"Asmall\"] = 0xf761;\n  t[\"Atilde\"] = 0x00c3;\n  t[\"Atildesmall\"] = 0xf7e3;\n  t[\"Aybarmenian\"] = 0x0531;\n  t[\"B\"] = 0x0042;\n  t[\"Bcircle\"] = 0x24b7;\n  t[\"Bdotaccent\"] = 0x1e02;\n  t[\"Bdotbelow\"] = 0x1e04;\n  t[\"Becyrillic\"] = 0x0411;\n  t[\"Benarmenian\"] = 0x0532;\n  t[\"Beta\"] = 0x0392;\n  t[\"Bhook\"] = 0x0181;\n  t[\"Blinebelow\"] = 0x1e06;\n  t[\"Bmonospace\"] = 0xff22;\n  t[\"Brevesmall\"] = 0xf6f4;\n  t[\"Bsmall\"] = 0xf762;\n  t[\"Btopbar\"] = 0x0182;\n  t[\"C\"] = 0x0043;\n  t[\"Caarmenian\"] = 0x053e;\n  t[\"Cacute\"] = 0x0106;\n  t[\"Caron\"] = 0xf6ca;\n  t[\"Caronsmall\"] = 0xf6f5;\n  t[\"Ccaron\"] = 0x010c;\n  t[\"Ccedilla\"] = 0x00c7;\n  t[\"Ccedillaacute\"] = 0x1e08;\n  t[\"Ccedillasmall\"] = 0xf7e7;\n  t[\"Ccircle\"] = 0x24b8;\n  t[\"Ccircumflex\"] = 0x0108;\n  t[\"Cdot\"] = 0x010a;\n  t[\"Cdotaccent\"] = 0x010a;\n  t[\"Cedillasmall\"] = 0xf7b8;\n  t[\"Chaarmenian\"] = 0x0549;\n  t[\"Cheabkhasiancyrillic\"] = 0x04bc;\n  t[\"Checyrillic\"] = 0x0427;\n  t[\"Chedescenderabkhasiancyrillic\"] = 0x04be;\n  t[\"Chedescendercyrillic\"] = 0x04b6;\n  t[\"Chedieresiscyrillic\"] = 0x04f4;\n  t[\"Cheharmenian\"] = 0x0543;\n  t[\"Chekhakassiancyrillic\"] = 0x04cb;\n  t[\"Cheverticalstrokecyrillic\"] = 0x04b8;\n  t[\"Chi\"] = 0x03a7;\n  t[\"Chook\"] = 0x0187;\n  t[\"Circumflexsmall\"] = 0xf6f6;\n  t[\"Cmonospace\"] = 0xff23;\n  t[\"Coarmenian\"] = 0x0551;\n  t[\"Csmall\"] = 0xf763;\n  t[\"D\"] = 0x0044;\n  t[\"DZ\"] = 0x01f1;\n  t[\"DZcaron\"] = 0x01c4;\n  t[\"Daarmenian\"] = 0x0534;\n  t[\"Dafrican\"] = 0x0189;\n  t[\"Dcaron\"] = 0x010e;\n  t[\"Dcedilla\"] = 0x1e10;\n  t[\"Dcircle\"] = 0x24b9;\n  t[\"Dcircumflexbelow\"] = 0x1e12;\n  t[\"Dcroat\"] = 0x0110;\n  t[\"Ddotaccent\"] = 0x1e0a;\n  t[\"Ddotbelow\"] = 0x1e0c;\n  t[\"Decyrillic\"] = 0x0414;\n  t[\"Deicoptic\"] = 0x03ee;\n  t[\"Delta\"] = 0x2206;\n  t[\"Deltagreek\"] = 0x0394;\n  t[\"Dhook\"] = 0x018a;\n  t[\"Dieresis\"] = 0xf6cb;\n  t[\"DieresisAcute\"] = 0xf6cc;\n  t[\"DieresisGrave\"] = 0xf6cd;\n  t[\"Dieresissmall\"] = 0xf7a8;\n  t[\"Digammagreek\"] = 0x03dc;\n  t[\"Djecyrillic\"] = 0x0402;\n  t[\"Dlinebelow\"] = 0x1e0e;\n  t[\"Dmonospace\"] = 0xff24;\n  t[\"Dotaccentsmall\"] = 0xf6f7;\n  t[\"Dslash\"] = 0x0110;\n  t[\"Dsmall\"] = 0xf764;\n  t[\"Dtopbar\"] = 0x018b;\n  t[\"Dz\"] = 0x01f2;\n  t[\"Dzcaron\"] = 0x01c5;\n  t[\"Dzeabkhasiancyrillic\"] = 0x04e0;\n  t[\"Dzecyrillic\"] = 0x0405;\n  t[\"Dzhecyrillic\"] = 0x040f;\n  t[\"E\"] = 0x0045;\n  t[\"Eacute\"] = 0x00c9;\n  t[\"Eacutesmall\"] = 0xf7e9;\n  t[\"Ebreve\"] = 0x0114;\n  t[\"Ecaron\"] = 0x011a;\n  t[\"Ecedillabreve\"] = 0x1e1c;\n  t[\"Echarmenian\"] = 0x0535;\n  t[\"Ecircle\"] = 0x24ba;\n  t[\"Ecircumflex\"] = 0x00ca;\n  t[\"Ecircumflexacute\"] = 0x1ebe;\n  t[\"Ecircumflexbelow\"] = 0x1e18;\n  t[\"Ecircumflexdotbelow\"] = 0x1ec6;\n  t[\"Ecircumflexgrave\"] = 0x1ec0;\n  t[\"Ecircumflexhookabove\"] = 0x1ec2;\n  t[\"Ecircumflexsmall\"] = 0xf7ea;\n  t[\"Ecircumflextilde\"] = 0x1ec4;\n  t[\"Ecyrillic\"] = 0x0404;\n  t[\"Edblgrave\"] = 0x0204;\n  t[\"Edieresis\"] = 0x00cb;\n  t[\"Edieresissmall\"] = 0xf7eb;\n  t[\"Edot\"] = 0x0116;\n  t[\"Edotaccent\"] = 0x0116;\n  t[\"Edotbelow\"] = 0x1eb8;\n  t[\"Efcyrillic\"] = 0x0424;\n  t[\"Egrave\"] = 0x00c8;\n  t[\"Egravesmall\"] = 0xf7e8;\n  t[\"Eharmenian\"] = 0x0537;\n  t[\"Ehookabove\"] = 0x1eba;\n  t[\"Eightroman\"] = 0x2167;\n  t[\"Einvertedbreve\"] = 0x0206;\n  t[\"Eiotifiedcyrillic\"] = 0x0464;\n  t[\"Elcyrillic\"] = 0x041b;\n  t[\"Elevenroman\"] = 0x216a;\n  t[\"Emacron\"] = 0x0112;\n  t[\"Emacronacute\"] = 0x1e16;\n  t[\"Emacrongrave\"] = 0x1e14;\n  t[\"Emcyrillic\"] = 0x041c;\n  t[\"Emonospace\"] = 0xff25;\n  t[\"Encyrillic\"] = 0x041d;\n  t[\"Endescendercyrillic\"] = 0x04a2;\n  t[\"Eng\"] = 0x014a;\n  t[\"Enghecyrillic\"] = 0x04a4;\n  t[\"Enhookcyrillic\"] = 0x04c7;\n  t[\"Eogonek\"] = 0x0118;\n  t[\"Eopen\"] = 0x0190;\n  t[\"Epsilon\"] = 0x0395;\n  t[\"Epsilontonos\"] = 0x0388;\n  t[\"Ercyrillic\"] = 0x0420;\n  t[\"Ereversed\"] = 0x018e;\n  t[\"Ereversedcyrillic\"] = 0x042d;\n  t[\"Escyrillic\"] = 0x0421;\n  t[\"Esdescendercyrillic\"] = 0x04aa;\n  t[\"Esh\"] = 0x01a9;\n  t[\"Esmall\"] = 0xf765;\n  t[\"Eta\"] = 0x0397;\n  t[\"Etarmenian\"] = 0x0538;\n  t[\"Etatonos\"] = 0x0389;\n  t[\"Eth\"] = 0x00d0;\n  t[\"Ethsmall\"] = 0xf7f0;\n  t[\"Etilde\"] = 0x1ebc;\n  t[\"Etildebelow\"] = 0x1e1a;\n  t[\"Euro\"] = 0x20ac;\n  t[\"Ezh\"] = 0x01b7;\n  t[\"Ezhcaron\"] = 0x01ee;\n  t[\"Ezhreversed\"] = 0x01b8;\n  t[\"F\"] = 0x0046;\n  t[\"Fcircle\"] = 0x24bb;\n  t[\"Fdotaccent\"] = 0x1e1e;\n  t[\"Feharmenian\"] = 0x0556;\n  t[\"Feicoptic\"] = 0x03e4;\n  t[\"Fhook\"] = 0x0191;\n  t[\"Fitacyrillic\"] = 0x0472;\n  t[\"Fiveroman\"] = 0x2164;\n  t[\"Fmonospace\"] = 0xff26;\n  t[\"Fourroman\"] = 0x2163;\n  t[\"Fsmall\"] = 0xf766;\n  t[\"G\"] = 0x0047;\n  t[\"GBsquare\"] = 0x3387;\n  t[\"Gacute\"] = 0x01f4;\n  t[\"Gamma\"] = 0x0393;\n  t[\"Gammaafrican\"] = 0x0194;\n  t[\"Gangiacoptic\"] = 0x03ea;\n  t[\"Gbreve\"] = 0x011e;\n  t[\"Gcaron\"] = 0x01e6;\n  t[\"Gcedilla\"] = 0x0122;\n  t[\"Gcircle\"] = 0x24bc;\n  t[\"Gcircumflex\"] = 0x011c;\n  t[\"Gcommaaccent\"] = 0x0122;\n  t[\"Gdot\"] = 0x0120;\n  t[\"Gdotaccent\"] = 0x0120;\n  t[\"Gecyrillic\"] = 0x0413;\n  t[\"Ghadarmenian\"] = 0x0542;\n  t[\"Ghemiddlehookcyrillic\"] = 0x0494;\n  t[\"Ghestrokecyrillic\"] = 0x0492;\n  t[\"Gheupturncyrillic\"] = 0x0490;\n  t[\"Ghook\"] = 0x0193;\n  t[\"Gimarmenian\"] = 0x0533;\n  t[\"Gjecyrillic\"] = 0x0403;\n  t[\"Gmacron\"] = 0x1e20;\n  t[\"Gmonospace\"] = 0xff27;\n  t[\"Grave\"] = 0xf6ce;\n  t[\"Gravesmall\"] = 0xf760;\n  t[\"Gsmall\"] = 0xf767;\n  t[\"Gsmallhook\"] = 0x029b;\n  t[\"Gstroke\"] = 0x01e4;\n  t[\"H\"] = 0x0048;\n  t[\"H18533\"] = 0x25cf;\n  t[\"H18543\"] = 0x25aa;\n  t[\"H18551\"] = 0x25ab;\n  t[\"H22073\"] = 0x25a1;\n  t[\"HPsquare\"] = 0x33cb;\n  t[\"Haabkhasiancyrillic\"] = 0x04a8;\n  t[\"Hadescendercyrillic\"] = 0x04b2;\n  t[\"Hardsigncyrillic\"] = 0x042a;\n  t[\"Hbar\"] = 0x0126;\n  t[\"Hbrevebelow\"] = 0x1e2a;\n  t[\"Hcedilla\"] = 0x1e28;\n  t[\"Hcircle\"] = 0x24bd;\n  t[\"Hcircumflex\"] = 0x0124;\n  t[\"Hdieresis\"] = 0x1e26;\n  t[\"Hdotaccent\"] = 0x1e22;\n  t[\"Hdotbelow\"] = 0x1e24;\n  t[\"Hmonospace\"] = 0xff28;\n  t[\"Hoarmenian\"] = 0x0540;\n  t[\"Horicoptic\"] = 0x03e8;\n  t[\"Hsmall\"] = 0xf768;\n  t[\"Hungarumlaut\"] = 0xf6cf;\n  t[\"Hungarumlautsmall\"] = 0xf6f8;\n  t[\"Hzsquare\"] = 0x3390;\n  t[\"I\"] = 0x0049;\n  t[\"IAcyrillic\"] = 0x042f;\n  t[\"IJ\"] = 0x0132;\n  t[\"IUcyrillic\"] = 0x042e;\n  t[\"Iacute\"] = 0x00cd;\n  t[\"Iacutesmall\"] = 0xf7ed;\n  t[\"Ibreve\"] = 0x012c;\n  t[\"Icaron\"] = 0x01cf;\n  t[\"Icircle\"] = 0x24be;\n  t[\"Icircumflex\"] = 0x00ce;\n  t[\"Icircumflexsmall\"] = 0xf7ee;\n  t[\"Icyrillic\"] = 0x0406;\n  t[\"Idblgrave\"] = 0x0208;\n  t[\"Idieresis\"] = 0x00cf;\n  t[\"Idieresisacute\"] = 0x1e2e;\n  t[\"Idieresiscyrillic\"] = 0x04e4;\n  t[\"Idieresissmall\"] = 0xf7ef;\n  t[\"Idot\"] = 0x0130;\n  t[\"Idotaccent\"] = 0x0130;\n  t[\"Idotbelow\"] = 0x1eca;\n  t[\"Iebrevecyrillic\"] = 0x04d6;\n  t[\"Iecyrillic\"] = 0x0415;\n  t[\"Ifraktur\"] = 0x2111;\n  t[\"Igrave\"] = 0x00cc;\n  t[\"Igravesmall\"] = 0xf7ec;\n  t[\"Ihookabove\"] = 0x1ec8;\n  t[\"Iicyrillic\"] = 0x0418;\n  t[\"Iinvertedbreve\"] = 0x020a;\n  t[\"Iishortcyrillic\"] = 0x0419;\n  t[\"Imacron\"] = 0x012a;\n  t[\"Imacroncyrillic\"] = 0x04e2;\n  t[\"Imonospace\"] = 0xff29;\n  t[\"Iniarmenian\"] = 0x053b;\n  t[\"Iocyrillic\"] = 0x0401;\n  t[\"Iogonek\"] = 0x012e;\n  t[\"Iota\"] = 0x0399;\n  t[\"Iotaafrican\"] = 0x0196;\n  t[\"Iotadieresis\"] = 0x03aa;\n  t[\"Iotatonos\"] = 0x038a;\n  t[\"Ismall\"] = 0xf769;\n  t[\"Istroke\"] = 0x0197;\n  t[\"Itilde\"] = 0x0128;\n  t[\"Itildebelow\"] = 0x1e2c;\n  t[\"Izhitsacyrillic\"] = 0x0474;\n  t[\"Izhitsadblgravecyrillic\"] = 0x0476;\n  t[\"J\"] = 0x004a;\n  t[\"Jaarmenian\"] = 0x0541;\n  t[\"Jcircle\"] = 0x24bf;\n  t[\"Jcircumflex\"] = 0x0134;\n  t[\"Jecyrillic\"] = 0x0408;\n  t[\"Jheharmenian\"] = 0x054b;\n  t[\"Jmonospace\"] = 0xff2a;\n  t[\"Jsmall\"] = 0xf76a;\n  t[\"K\"] = 0x004b;\n  t[\"KBsquare\"] = 0x3385;\n  t[\"KKsquare\"] = 0x33cd;\n  t[\"Kabashkircyrillic\"] = 0x04a0;\n  t[\"Kacute\"] = 0x1e30;\n  t[\"Kacyrillic\"] = 0x041a;\n  t[\"Kadescendercyrillic\"] = 0x049a;\n  t[\"Kahookcyrillic\"] = 0x04c3;\n  t[\"Kappa\"] = 0x039a;\n  t[\"Kastrokecyrillic\"] = 0x049e;\n  t[\"Kaverticalstrokecyrillic\"] = 0x049c;\n  t[\"Kcaron\"] = 0x01e8;\n  t[\"Kcedilla\"] = 0x0136;\n  t[\"Kcircle\"] = 0x24c0;\n  t[\"Kcommaaccent\"] = 0x0136;\n  t[\"Kdotbelow\"] = 0x1e32;\n  t[\"Keharmenian\"] = 0x0554;\n  t[\"Kenarmenian\"] = 0x053f;\n  t[\"Khacyrillic\"] = 0x0425;\n  t[\"Kheicoptic\"] = 0x03e6;\n  t[\"Khook\"] = 0x0198;\n  t[\"Kjecyrillic\"] = 0x040c;\n  t[\"Klinebelow\"] = 0x1e34;\n  t[\"Kmonospace\"] = 0xff2b;\n  t[\"Koppacyrillic\"] = 0x0480;\n  t[\"Koppagreek\"] = 0x03de;\n  t[\"Ksicyrillic\"] = 0x046e;\n  t[\"Ksmall\"] = 0xf76b;\n  t[\"L\"] = 0x004c;\n  t[\"LJ\"] = 0x01c7;\n  t[\"LL\"] = 0xf6bf;\n  t[\"Lacute\"] = 0x0139;\n  t[\"Lambda\"] = 0x039b;\n  t[\"Lcaron\"] = 0x013d;\n  t[\"Lcedilla\"] = 0x013b;\n  t[\"Lcircle\"] = 0x24c1;\n  t[\"Lcircumflexbelow\"] = 0x1e3c;\n  t[\"Lcommaaccent\"] = 0x013b;\n  t[\"Ldot\"] = 0x013f;\n  t[\"Ldotaccent\"] = 0x013f;\n  t[\"Ldotbelow\"] = 0x1e36;\n  t[\"Ldotbelowmacron\"] = 0x1e38;\n  t[\"Liwnarmenian\"] = 0x053c;\n  t[\"Lj\"] = 0x01c8;\n  t[\"Ljecyrillic\"] = 0x0409;\n  t[\"Llinebelow\"] = 0x1e3a;\n  t[\"Lmonospace\"] = 0xff2c;\n  t[\"Lslash\"] = 0x0141;\n  t[\"Lslashsmall\"] = 0xf6f9;\n  t[\"Lsmall\"] = 0xf76c;\n  t[\"M\"] = 0x004d;\n  t[\"MBsquare\"] = 0x3386;\n  t[\"Macron\"] = 0xf6d0;\n  t[\"Macronsmall\"] = 0xf7af;\n  t[\"Macute\"] = 0x1e3e;\n  t[\"Mcircle\"] = 0x24c2;\n  t[\"Mdotaccent\"] = 0x1e40;\n  t[\"Mdotbelow\"] = 0x1e42;\n  t[\"Menarmenian\"] = 0x0544;\n  t[\"Mmonospace\"] = 0xff2d;\n  t[\"Msmall\"] = 0xf76d;\n  t[\"Mturned\"] = 0x019c;\n  t[\"Mu\"] = 0x039c;\n  t[\"N\"] = 0x004e;\n  t[\"NJ\"] = 0x01ca;\n  t[\"Nacute\"] = 0x0143;\n  t[\"Ncaron\"] = 0x0147;\n  t[\"Ncedilla\"] = 0x0145;\n  t[\"Ncircle\"] = 0x24c3;\n  t[\"Ncircumflexbelow\"] = 0x1e4a;\n  t[\"Ncommaaccent\"] = 0x0145;\n  t[\"Ndotaccent\"] = 0x1e44;\n  t[\"Ndotbelow\"] = 0x1e46;\n  t[\"Nhookleft\"] = 0x019d;\n  t[\"Nineroman\"] = 0x2168;\n  t[\"Nj\"] = 0x01cb;\n  t[\"Njecyrillic\"] = 0x040a;\n  t[\"Nlinebelow\"] = 0x1e48;\n  t[\"Nmonospace\"] = 0xff2e;\n  t[\"Nowarmenian\"] = 0x0546;\n  t[\"Nsmall\"] = 0xf76e;\n  t[\"Ntilde\"] = 0x00d1;\n  t[\"Ntildesmall\"] = 0xf7f1;\n  t[\"Nu\"] = 0x039d;\n  t[\"O\"] = 0x004f;\n  t[\"OE\"] = 0x0152;\n  t[\"OEsmall\"] = 0xf6fa;\n  t[\"Oacute\"] = 0x00d3;\n  t[\"Oacutesmall\"] = 0xf7f3;\n  t[\"Obarredcyrillic\"] = 0x04e8;\n  t[\"Obarreddieresiscyrillic\"] = 0x04ea;\n  t[\"Obreve\"] = 0x014e;\n  t[\"Ocaron\"] = 0x01d1;\n  t[\"Ocenteredtilde\"] = 0x019f;\n  t[\"Ocircle\"] = 0x24c4;\n  t[\"Ocircumflex\"] = 0x00d4;\n  t[\"Ocircumflexacute\"] = 0x1ed0;\n  t[\"Ocircumflexdotbelow\"] = 0x1ed8;\n  t[\"Ocircumflexgrave\"] = 0x1ed2;\n  t[\"Ocircumflexhookabove\"] = 0x1ed4;\n  t[\"Ocircumflexsmall\"] = 0xf7f4;\n  t[\"Ocircumflextilde\"] = 0x1ed6;\n  t[\"Ocyrillic\"] = 0x041e;\n  t[\"Odblacute\"] = 0x0150;\n  t[\"Odblgrave\"] = 0x020c;\n  t[\"Odieresis\"] = 0x00d6;\n  t[\"Odieresiscyrillic\"] = 0x04e6;\n  t[\"Odieresissmall\"] = 0xf7f6;\n  t[\"Odotbelow\"] = 0x1ecc;\n  t[\"Ogoneksmall\"] = 0xf6fb;\n  t[\"Ograve\"] = 0x00d2;\n  t[\"Ogravesmall\"] = 0xf7f2;\n  t[\"Oharmenian\"] = 0x0555;\n  t[\"Ohm\"] = 0x2126;\n  t[\"Ohookabove\"] = 0x1ece;\n  t[\"Ohorn\"] = 0x01a0;\n  t[\"Ohornacute\"] = 0x1eda;\n  t[\"Ohorndotbelow\"] = 0x1ee2;\n  t[\"Ohorngrave\"] = 0x1edc;\n  t[\"Ohornhookabove\"] = 0x1ede;\n  t[\"Ohorntilde\"] = 0x1ee0;\n  t[\"Ohungarumlaut\"] = 0x0150;\n  t[\"Oi\"] = 0x01a2;\n  t[\"Oinvertedbreve\"] = 0x020e;\n  t[\"Omacron\"] = 0x014c;\n  t[\"Omacronacute\"] = 0x1e52;\n  t[\"Omacrongrave\"] = 0x1e50;\n  t[\"Omega\"] = 0x2126;\n  t[\"Omegacyrillic\"] = 0x0460;\n  t[\"Omegagreek\"] = 0x03a9;\n  t[\"Omegaroundcyrillic\"] = 0x047a;\n  t[\"Omegatitlocyrillic\"] = 0x047c;\n  t[\"Omegatonos\"] = 0x038f;\n  t[\"Omicron\"] = 0x039f;\n  t[\"Omicrontonos\"] = 0x038c;\n  t[\"Omonospace\"] = 0xff2f;\n  t[\"Oneroman\"] = 0x2160;\n  t[\"Oogonek\"] = 0x01ea;\n  t[\"Oogonekmacron\"] = 0x01ec;\n  t[\"Oopen\"] = 0x0186;\n  t[\"Oslash\"] = 0x00d8;\n  t[\"Oslashacute\"] = 0x01fe;\n  t[\"Oslashsmall\"] = 0xf7f8;\n  t[\"Osmall\"] = 0xf76f;\n  t[\"Ostrokeacute\"] = 0x01fe;\n  t[\"Otcyrillic\"] = 0x047e;\n  t[\"Otilde\"] = 0x00d5;\n  t[\"Otildeacute\"] = 0x1e4c;\n  t[\"Otildedieresis\"] = 0x1e4e;\n  t[\"Otildesmall\"] = 0xf7f5;\n  t[\"P\"] = 0x0050;\n  t[\"Pacute\"] = 0x1e54;\n  t[\"Pcircle\"] = 0x24c5;\n  t[\"Pdotaccent\"] = 0x1e56;\n  t[\"Pecyrillic\"] = 0x041f;\n  t[\"Peharmenian\"] = 0x054a;\n  t[\"Pemiddlehookcyrillic\"] = 0x04a6;\n  t[\"Phi\"] = 0x03a6;\n  t[\"Phook\"] = 0x01a4;\n  t[\"Pi\"] = 0x03a0;\n  t[\"Piwrarmenian\"] = 0x0553;\n  t[\"Pmonospace\"] = 0xff30;\n  t[\"Psi\"] = 0x03a8;\n  t[\"Psicyrillic\"] = 0x0470;\n  t[\"Psmall\"] = 0xf770;\n  t[\"Q\"] = 0x0051;\n  t[\"Qcircle\"] = 0x24c6;\n  t[\"Qmonospace\"] = 0xff31;\n  t[\"Qsmall\"] = 0xf771;\n  t[\"R\"] = 0x0052;\n  t[\"Raarmenian\"] = 0x054c;\n  t[\"Racute\"] = 0x0154;\n  t[\"Rcaron\"] = 0x0158;\n  t[\"Rcedilla\"] = 0x0156;\n  t[\"Rcircle\"] = 0x24c7;\n  t[\"Rcommaaccent\"] = 0x0156;\n  t[\"Rdblgrave\"] = 0x0210;\n  t[\"Rdotaccent\"] = 0x1e58;\n  t[\"Rdotbelow\"] = 0x1e5a;\n  t[\"Rdotbelowmacron\"] = 0x1e5c;\n  t[\"Reharmenian\"] = 0x0550;\n  t[\"Rfraktur\"] = 0x211c;\n  t[\"Rho\"] = 0x03a1;\n  t[\"Ringsmall\"] = 0xf6fc;\n  t[\"Rinvertedbreve\"] = 0x0212;\n  t[\"Rlinebelow\"] = 0x1e5e;\n  t[\"Rmonospace\"] = 0xff32;\n  t[\"Rsmall\"] = 0xf772;\n  t[\"Rsmallinverted\"] = 0x0281;\n  t[\"Rsmallinvertedsuperior\"] = 0x02b6;\n  t[\"S\"] = 0x0053;\n  t[\"SF010000\"] = 0x250c;\n  t[\"SF020000\"] = 0x2514;\n  t[\"SF030000\"] = 0x2510;\n  t[\"SF040000\"] = 0x2518;\n  t[\"SF050000\"] = 0x253c;\n  t[\"SF060000\"] = 0x252c;\n  t[\"SF070000\"] = 0x2534;\n  t[\"SF080000\"] = 0x251c;\n  t[\"SF090000\"] = 0x2524;\n  t[\"SF100000\"] = 0x2500;\n  t[\"SF110000\"] = 0x2502;\n  t[\"SF190000\"] = 0x2561;\n  t[\"SF200000\"] = 0x2562;\n  t[\"SF210000\"] = 0x2556;\n  t[\"SF220000\"] = 0x2555;\n  t[\"SF230000\"] = 0x2563;\n  t[\"SF240000\"] = 0x2551;\n  t[\"SF250000\"] = 0x2557;\n  t[\"SF260000\"] = 0x255d;\n  t[\"SF270000\"] = 0x255c;\n  t[\"SF280000\"] = 0x255b;\n  t[\"SF360000\"] = 0x255e;\n  t[\"SF370000\"] = 0x255f;\n  t[\"SF380000\"] = 0x255a;\n  t[\"SF390000\"] = 0x2554;\n  t[\"SF400000\"] = 0x2569;\n  t[\"SF410000\"] = 0x2566;\n  t[\"SF420000\"] = 0x2560;\n  t[\"SF430000\"] = 0x2550;\n  t[\"SF440000\"] = 0x256c;\n  t[\"SF450000\"] = 0x2567;\n  t[\"SF460000\"] = 0x2568;\n  t[\"SF470000\"] = 0x2564;\n  t[\"SF480000\"] = 0x2565;\n  t[\"SF490000\"] = 0x2559;\n  t[\"SF500000\"] = 0x2558;\n  t[\"SF510000\"] = 0x2552;\n  t[\"SF520000\"] = 0x2553;\n  t[\"SF530000\"] = 0x256b;\n  t[\"SF540000\"] = 0x256a;\n  t[\"Sacute\"] = 0x015a;\n  t[\"Sacutedotaccent\"] = 0x1e64;\n  t[\"Sampigreek\"] = 0x03e0;\n  t[\"Scaron\"] = 0x0160;\n  t[\"Scarondotaccent\"] = 0x1e66;\n  t[\"Scaronsmall\"] = 0xf6fd;\n  t[\"Scedilla\"] = 0x015e;\n  t[\"Schwa\"] = 0x018f;\n  t[\"Schwacyrillic\"] = 0x04d8;\n  t[\"Schwadieresiscyrillic\"] = 0x04da;\n  t[\"Scircle\"] = 0x24c8;\n  t[\"Scircumflex\"] = 0x015c;\n  t[\"Scommaaccent\"] = 0x0218;\n  t[\"Sdotaccent\"] = 0x1e60;\n  t[\"Sdotbelow\"] = 0x1e62;\n  t[\"Sdotbelowdotaccent\"] = 0x1e68;\n  t[\"Seharmenian\"] = 0x054d;\n  t[\"Sevenroman\"] = 0x2166;\n  t[\"Shaarmenian\"] = 0x0547;\n  t[\"Shacyrillic\"] = 0x0428;\n  t[\"Shchacyrillic\"] = 0x0429;\n  t[\"Sheicoptic\"] = 0x03e2;\n  t[\"Shhacyrillic\"] = 0x04ba;\n  t[\"Shimacoptic\"] = 0x03ec;\n  t[\"Sigma\"] = 0x03a3;\n  t[\"Sixroman\"] = 0x2165;\n  t[\"Smonospace\"] = 0xff33;\n  t[\"Softsigncyrillic\"] = 0x042c;\n  t[\"Ssmall\"] = 0xf773;\n  t[\"Stigmagreek\"] = 0x03da;\n  t[\"T\"] = 0x0054;\n  t[\"Tau\"] = 0x03a4;\n  t[\"Tbar\"] = 0x0166;\n  t[\"Tcaron\"] = 0x0164;\n  t[\"Tcedilla\"] = 0x0162;\n  t[\"Tcircle\"] = 0x24c9;\n  t[\"Tcircumflexbelow\"] = 0x1e70;\n  t[\"Tcommaaccent\"] = 0x0162;\n  t[\"Tdotaccent\"] = 0x1e6a;\n  t[\"Tdotbelow\"] = 0x1e6c;\n  t[\"Tecyrillic\"] = 0x0422;\n  t[\"Tedescendercyrillic\"] = 0x04ac;\n  t[\"Tenroman\"] = 0x2169;\n  t[\"Tetsecyrillic\"] = 0x04b4;\n  t[\"Theta\"] = 0x0398;\n  t[\"Thook\"] = 0x01ac;\n  t[\"Thorn\"] = 0x00de;\n  t[\"Thornsmall\"] = 0xf7fe;\n  t[\"Threeroman\"] = 0x2162;\n  t[\"Tildesmall\"] = 0xf6fe;\n  t[\"Tiwnarmenian\"] = 0x054f;\n  t[\"Tlinebelow\"] = 0x1e6e;\n  t[\"Tmonospace\"] = 0xff34;\n  t[\"Toarmenian\"] = 0x0539;\n  t[\"Tonefive\"] = 0x01bc;\n  t[\"Tonesix\"] = 0x0184;\n  t[\"Tonetwo\"] = 0x01a7;\n  t[\"Tretroflexhook\"] = 0x01ae;\n  t[\"Tsecyrillic\"] = 0x0426;\n  t[\"Tshecyrillic\"] = 0x040b;\n  t[\"Tsmall\"] = 0xf774;\n  t[\"Twelveroman\"] = 0x216b;\n  t[\"Tworoman\"] = 0x2161;\n  t[\"U\"] = 0x0055;\n  t[\"Uacute\"] = 0x00da;\n  t[\"Uacutesmall\"] = 0xf7fa;\n  t[\"Ubreve\"] = 0x016c;\n  t[\"Ucaron\"] = 0x01d3;\n  t[\"Ucircle\"] = 0x24ca;\n  t[\"Ucircumflex\"] = 0x00db;\n  t[\"Ucircumflexbelow\"] = 0x1e76;\n  t[\"Ucircumflexsmall\"] = 0xf7fb;\n  t[\"Ucyrillic\"] = 0x0423;\n  t[\"Udblacute\"] = 0x0170;\n  t[\"Udblgrave\"] = 0x0214;\n  t[\"Udieresis\"] = 0x00dc;\n  t[\"Udieresisacute\"] = 0x01d7;\n  t[\"Udieresisbelow\"] = 0x1e72;\n  t[\"Udieresiscaron\"] = 0x01d9;\n  t[\"Udieresiscyrillic\"] = 0x04f0;\n  t[\"Udieresisgrave\"] = 0x01db;\n  t[\"Udieresismacron\"] = 0x01d5;\n  t[\"Udieresissmall\"] = 0xf7fc;\n  t[\"Udotbelow\"] = 0x1ee4;\n  t[\"Ugrave\"] = 0x00d9;\n  t[\"Ugravesmall\"] = 0xf7f9;\n  t[\"Uhookabove\"] = 0x1ee6;\n  t[\"Uhorn\"] = 0x01af;\n  t[\"Uhornacute\"] = 0x1ee8;\n  t[\"Uhorndotbelow\"] = 0x1ef0;\n  t[\"Uhorngrave\"] = 0x1eea;\n  t[\"Uhornhookabove\"] = 0x1eec;\n  t[\"Uhorntilde\"] = 0x1eee;\n  t[\"Uhungarumlaut\"] = 0x0170;\n  t[\"Uhungarumlautcyrillic\"] = 0x04f2;\n  t[\"Uinvertedbreve\"] = 0x0216;\n  t[\"Ukcyrillic\"] = 0x0478;\n  t[\"Umacron\"] = 0x016a;\n  t[\"Umacroncyrillic\"] = 0x04ee;\n  t[\"Umacrondieresis\"] = 0x1e7a;\n  t[\"Umonospace\"] = 0xff35;\n  t[\"Uogonek\"] = 0x0172;\n  t[\"Upsilon\"] = 0x03a5;\n  t[\"Upsilon1\"] = 0x03d2;\n  t[\"Upsilonacutehooksymbolgreek\"] = 0x03d3;\n  t[\"Upsilonafrican\"] = 0x01b1;\n  t[\"Upsilondieresis\"] = 0x03ab;\n  t[\"Upsilondieresishooksymbolgreek\"] = 0x03d4;\n  t[\"Upsilonhooksymbol\"] = 0x03d2;\n  t[\"Upsilontonos\"] = 0x038e;\n  t[\"Uring\"] = 0x016e;\n  t[\"Ushortcyrillic\"] = 0x040e;\n  t[\"Usmall\"] = 0xf775;\n  t[\"Ustraightcyrillic\"] = 0x04ae;\n  t[\"Ustraightstrokecyrillic\"] = 0x04b0;\n  t[\"Utilde\"] = 0x0168;\n  t[\"Utildeacute\"] = 0x1e78;\n  t[\"Utildebelow\"] = 0x1e74;\n  t[\"V\"] = 0x0056;\n  t[\"Vcircle\"] = 0x24cb;\n  t[\"Vdotbelow\"] = 0x1e7e;\n  t[\"Vecyrillic\"] = 0x0412;\n  t[\"Vewarmenian\"] = 0x054e;\n  t[\"Vhook\"] = 0x01b2;\n  t[\"Vmonospace\"] = 0xff36;\n  t[\"Voarmenian\"] = 0x0548;\n  t[\"Vsmall\"] = 0xf776;\n  t[\"Vtilde\"] = 0x1e7c;\n  t[\"W\"] = 0x0057;\n  t[\"Wacute\"] = 0x1e82;\n  t[\"Wcircle\"] = 0x24cc;\n  t[\"Wcircumflex\"] = 0x0174;\n  t[\"Wdieresis\"] = 0x1e84;\n  t[\"Wdotaccent\"] = 0x1e86;\n  t[\"Wdotbelow\"] = 0x1e88;\n  t[\"Wgrave\"] = 0x1e80;\n  t[\"Wmonospace\"] = 0xff37;\n  t[\"Wsmall\"] = 0xf777;\n  t[\"X\"] = 0x0058;\n  t[\"Xcircle\"] = 0x24cd;\n  t[\"Xdieresis\"] = 0x1e8c;\n  t[\"Xdotaccent\"] = 0x1e8a;\n  t[\"Xeharmenian\"] = 0x053d;\n  t[\"Xi\"] = 0x039e;\n  t[\"Xmonospace\"] = 0xff38;\n  t[\"Xsmall\"] = 0xf778;\n  t[\"Y\"] = 0x0059;\n  t[\"Yacute\"] = 0x00dd;\n  t[\"Yacutesmall\"] = 0xf7fd;\n  t[\"Yatcyrillic\"] = 0x0462;\n  t[\"Ycircle\"] = 0x24ce;\n  t[\"Ycircumflex\"] = 0x0176;\n  t[\"Ydieresis\"] = 0x0178;\n  t[\"Ydieresissmall\"] = 0xf7ff;\n  t[\"Ydotaccent\"] = 0x1e8e;\n  t[\"Ydotbelow\"] = 0x1ef4;\n  t[\"Yericyrillic\"] = 0x042b;\n  t[\"Yerudieresiscyrillic\"] = 0x04f8;\n  t[\"Ygrave\"] = 0x1ef2;\n  t[\"Yhook\"] = 0x01b3;\n  t[\"Yhookabove\"] = 0x1ef6;\n  t[\"Yiarmenian\"] = 0x0545;\n  t[\"Yicyrillic\"] = 0x0407;\n  t[\"Yiwnarmenian\"] = 0x0552;\n  t[\"Ymonospace\"] = 0xff39;\n  t[\"Ysmall\"] = 0xf779;\n  t[\"Ytilde\"] = 0x1ef8;\n  t[\"Yusbigcyrillic\"] = 0x046a;\n  t[\"Yusbigiotifiedcyrillic\"] = 0x046c;\n  t[\"Yuslittlecyrillic\"] = 0x0466;\n  t[\"Yuslittleiotifiedcyrillic\"] = 0x0468;\n  t[\"Z\"] = 0x005a;\n  t[\"Zaarmenian\"] = 0x0536;\n  t[\"Zacute\"] = 0x0179;\n  t[\"Zcaron\"] = 0x017d;\n  t[\"Zcaronsmall\"] = 0xf6ff;\n  t[\"Zcircle\"] = 0x24cf;\n  t[\"Zcircumflex\"] = 0x1e90;\n  t[\"Zdot\"] = 0x017b;\n  t[\"Zdotaccent\"] = 0x017b;\n  t[\"Zdotbelow\"] = 0x1e92;\n  t[\"Zecyrillic\"] = 0x0417;\n  t[\"Zedescendercyrillic\"] = 0x0498;\n  t[\"Zedieresiscyrillic\"] = 0x04de;\n  t[\"Zeta\"] = 0x0396;\n  t[\"Zhearmenian\"] = 0x053a;\n  t[\"Zhebrevecyrillic\"] = 0x04c1;\n  t[\"Zhecyrillic\"] = 0x0416;\n  t[\"Zhedescendercyrillic\"] = 0x0496;\n  t[\"Zhedieresiscyrillic\"] = 0x04dc;\n  t[\"Zlinebelow\"] = 0x1e94;\n  t[\"Zmonospace\"] = 0xff3a;\n  t[\"Zsmall\"] = 0xf77a;\n  t[\"Zstroke\"] = 0x01b5;\n  t[\"a\"] = 0x0061;\n  t[\"aabengali\"] = 0x0986;\n  t[\"aacute\"] = 0x00e1;\n  t[\"aadeva\"] = 0x0906;\n  t[\"aagujarati\"] = 0x0a86;\n  t[\"aagurmukhi\"] = 0x0a06;\n  t[\"aamatragurmukhi\"] = 0x0a3e;\n  t[\"aarusquare\"] = 0x3303;\n  t[\"aavowelsignbengali\"] = 0x09be;\n  t[\"aavowelsigndeva\"] = 0x093e;\n  t[\"aavowelsigngujarati\"] = 0x0abe;\n  t[\"abbreviationmarkarmenian\"] = 0x055f;\n  t[\"abbreviationsigndeva\"] = 0x0970;\n  t[\"abengali\"] = 0x0985;\n  t[\"abopomofo\"] = 0x311a;\n  t[\"abreve\"] = 0x0103;\n  t[\"abreveacute\"] = 0x1eaf;\n  t[\"abrevecyrillic\"] = 0x04d1;\n  t[\"abrevedotbelow\"] = 0x1eb7;\n  t[\"abrevegrave\"] = 0x1eb1;\n  t[\"abrevehookabove\"] = 0x1eb3;\n  t[\"abrevetilde\"] = 0x1eb5;\n  t[\"acaron\"] = 0x01ce;\n  t[\"acircle\"] = 0x24d0;\n  t[\"acircumflex\"] = 0x00e2;\n  t[\"acircumflexacute\"] = 0x1ea5;\n  t[\"acircumflexdotbelow\"] = 0x1ead;\n  t[\"acircumflexgrave\"] = 0x1ea7;\n  t[\"acircumflexhookabove\"] = 0x1ea9;\n  t[\"acircumflextilde\"] = 0x1eab;\n  t[\"acute\"] = 0x00b4;\n  t[\"acutebelowcmb\"] = 0x0317;\n  t[\"acutecmb\"] = 0x0301;\n  t[\"acutecomb\"] = 0x0301;\n  t[\"acutedeva\"] = 0x0954;\n  t[\"acutelowmod\"] = 0x02cf;\n  t[\"acutetonecmb\"] = 0x0341;\n  t[\"acyrillic\"] = 0x0430;\n  t[\"adblgrave\"] = 0x0201;\n  t[\"addakgurmukhi\"] = 0x0a71;\n  t[\"adeva\"] = 0x0905;\n  t[\"adieresis\"] = 0x00e4;\n  t[\"adieresiscyrillic\"] = 0x04d3;\n  t[\"adieresismacron\"] = 0x01df;\n  t[\"adotbelow\"] = 0x1ea1;\n  t[\"adotmacron\"] = 0x01e1;\n  t[\"ae\"] = 0x00e6;\n  t[\"aeacute\"] = 0x01fd;\n  t[\"aekorean\"] = 0x3150;\n  t[\"aemacron\"] = 0x01e3;\n  t[\"afii00208\"] = 0x2015;\n  t[\"afii08941\"] = 0x20a4;\n  t[\"afii10017\"] = 0x0410;\n  t[\"afii10018\"] = 0x0411;\n  t[\"afii10019\"] = 0x0412;\n  t[\"afii10020\"] = 0x0413;\n  t[\"afii10021\"] = 0x0414;\n  t[\"afii10022\"] = 0x0415;\n  t[\"afii10023\"] = 0x0401;\n  t[\"afii10024\"] = 0x0416;\n  t[\"afii10025\"] = 0x0417;\n  t[\"afii10026\"] = 0x0418;\n  t[\"afii10027\"] = 0x0419;\n  t[\"afii10028\"] = 0x041a;\n  t[\"afii10029\"] = 0x041b;\n  t[\"afii10030\"] = 0x041c;\n  t[\"afii10031\"] = 0x041d;\n  t[\"afii10032\"] = 0x041e;\n  t[\"afii10033\"] = 0x041f;\n  t[\"afii10034\"] = 0x0420;\n  t[\"afii10035\"] = 0x0421;\n  t[\"afii10036\"] = 0x0422;\n  t[\"afii10037\"] = 0x0423;\n  t[\"afii10038\"] = 0x0424;\n  t[\"afii10039\"] = 0x0425;\n  t[\"afii10040\"] = 0x0426;\n  t[\"afii10041\"] = 0x0427;\n  t[\"afii10042\"] = 0x0428;\n  t[\"afii10043\"] = 0x0429;\n  t[\"afii10044\"] = 0x042a;\n  t[\"afii10045\"] = 0x042b;\n  t[\"afii10046\"] = 0x042c;\n  t[\"afii10047\"] = 0x042d;\n  t[\"afii10048\"] = 0x042e;\n  t[\"afii10049\"] = 0x042f;\n  t[\"afii10050\"] = 0x0490;\n  t[\"afii10051\"] = 0x0402;\n  t[\"afii10052\"] = 0x0403;\n  t[\"afii10053\"] = 0x0404;\n  t[\"afii10054\"] = 0x0405;\n  t[\"afii10055\"] = 0x0406;\n  t[\"afii10056\"] = 0x0407;\n  t[\"afii10057\"] = 0x0408;\n  t[\"afii10058\"] = 0x0409;\n  t[\"afii10059\"] = 0x040a;\n  t[\"afii10060\"] = 0x040b;\n  t[\"afii10061\"] = 0x040c;\n  t[\"afii10062\"] = 0x040e;\n  t[\"afii10063\"] = 0xf6c4;\n  t[\"afii10064\"] = 0xf6c5;\n  t[\"afii10065\"] = 0x0430;\n  t[\"afii10066\"] = 0x0431;\n  t[\"afii10067\"] = 0x0432;\n  t[\"afii10068\"] = 0x0433;\n  t[\"afii10069\"] = 0x0434;\n  t[\"afii10070\"] = 0x0435;\n  t[\"afii10071\"] = 0x0451;\n  t[\"afii10072\"] = 0x0436;\n  t[\"afii10073\"] = 0x0437;\n  t[\"afii10074\"] = 0x0438;\n  t[\"afii10075\"] = 0x0439;\n  t[\"afii10076\"] = 0x043a;\n  t[\"afii10077\"] = 0x043b;\n  t[\"afii10078\"] = 0x043c;\n  t[\"afii10079\"] = 0x043d;\n  t[\"afii10080\"] = 0x043e;\n  t[\"afii10081\"] = 0x043f;\n  t[\"afii10082\"] = 0x0440;\n  t[\"afii10083\"] = 0x0441;\n  t[\"afii10084\"] = 0x0442;\n  t[\"afii10085\"] = 0x0443;\n  t[\"afii10086\"] = 0x0444;\n  t[\"afii10087\"] = 0x0445;\n  t[\"afii10088\"] = 0x0446;\n  t[\"afii10089\"] = 0x0447;\n  t[\"afii10090\"] = 0x0448;\n  t[\"afii10091\"] = 0x0449;\n  t[\"afii10092\"] = 0x044a;\n  t[\"afii10093\"] = 0x044b;\n  t[\"afii10094\"] = 0x044c;\n  t[\"afii10095\"] = 0x044d;\n  t[\"afii10096\"] = 0x044e;\n  t[\"afii10097\"] = 0x044f;\n  t[\"afii10098\"] = 0x0491;\n  t[\"afii10099\"] = 0x0452;\n  t[\"afii10100\"] = 0x0453;\n  t[\"afii10101\"] = 0x0454;\n  t[\"afii10102\"] = 0x0455;\n  t[\"afii10103\"] = 0x0456;\n  t[\"afii10104\"] = 0x0457;\n  t[\"afii10105\"] = 0x0458;\n  t[\"afii10106\"] = 0x0459;\n  t[\"afii10107\"] = 0x045a;\n  t[\"afii10108\"] = 0x045b;\n  t[\"afii10109\"] = 0x045c;\n  t[\"afii10110\"] = 0x045e;\n  t[\"afii10145\"] = 0x040f;\n  t[\"afii10146\"] = 0x0462;\n  t[\"afii10147\"] = 0x0472;\n  t[\"afii10148\"] = 0x0474;\n  t[\"afii10192\"] = 0xf6c6;\n  t[\"afii10193\"] = 0x045f;\n  t[\"afii10194\"] = 0x0463;\n  t[\"afii10195\"] = 0x0473;\n  t[\"afii10196\"] = 0x0475;\n  t[\"afii10831\"] = 0xf6c7;\n  t[\"afii10832\"] = 0xf6c8;\n  t[\"afii10846\"] = 0x04d9;\n  t[\"afii299\"] = 0x200e;\n  t[\"afii300\"] = 0x200f;\n  t[\"afii301\"] = 0x200d;\n  t[\"afii57381\"] = 0x066a;\n  t[\"afii57388\"] = 0x060c;\n  t[\"afii57392\"] = 0x0660;\n  t[\"afii57393\"] = 0x0661;\n  t[\"afii57394\"] = 0x0662;\n  t[\"afii57395\"] = 0x0663;\n  t[\"afii57396\"] = 0x0664;\n  t[\"afii57397\"] = 0x0665;\n  t[\"afii57398\"] = 0x0666;\n  t[\"afii57399\"] = 0x0667;\n  t[\"afii57400\"] = 0x0668;\n  t[\"afii57401\"] = 0x0669;\n  t[\"afii57403\"] = 0x061b;\n  t[\"afii57407\"] = 0x061f;\n  t[\"afii57409\"] = 0x0621;\n  t[\"afii57410\"] = 0x0622;\n  t[\"afii57411\"] = 0x0623;\n  t[\"afii57412\"] = 0x0624;\n  t[\"afii57413\"] = 0x0625;\n  t[\"afii57414\"] = 0x0626;\n  t[\"afii57415\"] = 0x0627;\n  t[\"afii57416\"] = 0x0628;\n  t[\"afii57417\"] = 0x0629;\n  t[\"afii57418\"] = 0x062a;\n  t[\"afii57419\"] = 0x062b;\n  t[\"afii57420\"] = 0x062c;\n  t[\"afii57421\"] = 0x062d;\n  t[\"afii57422\"] = 0x062e;\n  t[\"afii57423\"] = 0x062f;\n  t[\"afii57424\"] = 0x0630;\n  t[\"afii57425\"] = 0x0631;\n  t[\"afii57426\"] = 0x0632;\n  t[\"afii57427\"] = 0x0633;\n  t[\"afii57428\"] = 0x0634;\n  t[\"afii57429\"] = 0x0635;\n  t[\"afii57430\"] = 0x0636;\n  t[\"afii57431\"] = 0x0637;\n  t[\"afii57432\"] = 0x0638;\n  t[\"afii57433\"] = 0x0639;\n  t[\"afii57434\"] = 0x063a;\n  t[\"afii57440\"] = 0x0640;\n  t[\"afii57441\"] = 0x0641;\n  t[\"afii57442\"] = 0x0642;\n  t[\"afii57443\"] = 0x0643;\n  t[\"afii57444\"] = 0x0644;\n  t[\"afii57445\"] = 0x0645;\n  t[\"afii57446\"] = 0x0646;\n  t[\"afii57448\"] = 0x0648;\n  t[\"afii57449\"] = 0x0649;\n  t[\"afii57450\"] = 0x064a;\n  t[\"afii57451\"] = 0x064b;\n  t[\"afii57452\"] = 0x064c;\n  t[\"afii57453\"] = 0x064d;\n  t[\"afii57454\"] = 0x064e;\n  t[\"afii57455\"] = 0x064f;\n  t[\"afii57456\"] = 0x0650;\n  t[\"afii57457\"] = 0x0651;\n  t[\"afii57458\"] = 0x0652;\n  t[\"afii57470\"] = 0x0647;\n  t[\"afii57505\"] = 0x06a4;\n  t[\"afii57506\"] = 0x067e;\n  t[\"afii57507\"] = 0x0686;\n  t[\"afii57508\"] = 0x0698;\n  t[\"afii57509\"] = 0x06af;\n  t[\"afii57511\"] = 0x0679;\n  t[\"afii57512\"] = 0x0688;\n  t[\"afii57513\"] = 0x0691;\n  t[\"afii57514\"] = 0x06ba;\n  t[\"afii57519\"] = 0x06d2;\n  t[\"afii57534\"] = 0x06d5;\n  t[\"afii57636\"] = 0x20aa;\n  t[\"afii57645\"] = 0x05be;\n  t[\"afii57658\"] = 0x05c3;\n  t[\"afii57664\"] = 0x05d0;\n  t[\"afii57665\"] = 0x05d1;\n  t[\"afii57666\"] = 0x05d2;\n  t[\"afii57667\"] = 0x05d3;\n  t[\"afii57668\"] = 0x05d4;\n  t[\"afii57669\"] = 0x05d5;\n  t[\"afii57670\"] = 0x05d6;\n  t[\"afii57671\"] = 0x05d7;\n  t[\"afii57672\"] = 0x05d8;\n  t[\"afii57673\"] = 0x05d9;\n  t[\"afii57674\"] = 0x05da;\n  t[\"afii57675\"] = 0x05db;\n  t[\"afii57676\"] = 0x05dc;\n  t[\"afii57677\"] = 0x05dd;\n  t[\"afii57678\"] = 0x05de;\n  t[\"afii57679\"] = 0x05df;\n  t[\"afii57680\"] = 0x05e0;\n  t[\"afii57681\"] = 0x05e1;\n  t[\"afii57682\"] = 0x05e2;\n  t[\"afii57683\"] = 0x05e3;\n  t[\"afii57684\"] = 0x05e4;\n  t[\"afii57685\"] = 0x05e5;\n  t[\"afii57686\"] = 0x05e6;\n  t[\"afii57687\"] = 0x05e7;\n  t[\"afii57688\"] = 0x05e8;\n  t[\"afii57689\"] = 0x05e9;\n  t[\"afii57690\"] = 0x05ea;\n  t[\"afii57694\"] = 0xfb2a;\n  t[\"afii57695\"] = 0xfb2b;\n  t[\"afii57700\"] = 0xfb4b;\n  t[\"afii57705\"] = 0xfb1f;\n  t[\"afii57716\"] = 0x05f0;\n  t[\"afii57717\"] = 0x05f1;\n  t[\"afii57718\"] = 0x05f2;\n  t[\"afii57723\"] = 0xfb35;\n  t[\"afii57793\"] = 0x05b4;\n  t[\"afii57794\"] = 0x05b5;\n  t[\"afii57795\"] = 0x05b6;\n  t[\"afii57796\"] = 0x05bb;\n  t[\"afii57797\"] = 0x05b8;\n  t[\"afii57798\"] = 0x05b7;\n  t[\"afii57799\"] = 0x05b0;\n  t[\"afii57800\"] = 0x05b2;\n  t[\"afii57801\"] = 0x05b1;\n  t[\"afii57802\"] = 0x05b3;\n  t[\"afii57803\"] = 0x05c2;\n  t[\"afii57804\"] = 0x05c1;\n  t[\"afii57806\"] = 0x05b9;\n  t[\"afii57807\"] = 0x05bc;\n  t[\"afii57839\"] = 0x05bd;\n  t[\"afii57841\"] = 0x05bf;\n  t[\"afii57842\"] = 0x05c0;\n  t[\"afii57929\"] = 0x02bc;\n  t[\"afii61248\"] = 0x2105;\n  t[\"afii61289\"] = 0x2113;\n  t[\"afii61352\"] = 0x2116;\n  t[\"afii61573\"] = 0x202c;\n  t[\"afii61574\"] = 0x202d;\n  t[\"afii61575\"] = 0x202e;\n  t[\"afii61664\"] = 0x200c;\n  t[\"afii63167\"] = 0x066d;\n  t[\"afii64937\"] = 0x02bd;\n  t[\"agrave\"] = 0x00e0;\n  t[\"agujarati\"] = 0x0a85;\n  t[\"agurmukhi\"] = 0x0a05;\n  t[\"ahiragana\"] = 0x3042;\n  t[\"ahookabove\"] = 0x1ea3;\n  t[\"aibengali\"] = 0x0990;\n  t[\"aibopomofo\"] = 0x311e;\n  t[\"aideva\"] = 0x0910;\n  t[\"aiecyrillic\"] = 0x04d5;\n  t[\"aigujarati\"] = 0x0a90;\n  t[\"aigurmukhi\"] = 0x0a10;\n  t[\"aimatragurmukhi\"] = 0x0a48;\n  t[\"ainarabic\"] = 0x0639;\n  t[\"ainfinalarabic\"] = 0xfeca;\n  t[\"aininitialarabic\"] = 0xfecb;\n  t[\"ainmedialarabic\"] = 0xfecc;\n  t[\"ainvertedbreve\"] = 0x0203;\n  t[\"aivowelsignbengali\"] = 0x09c8;\n  t[\"aivowelsigndeva\"] = 0x0948;\n  t[\"aivowelsigngujarati\"] = 0x0ac8;\n  t[\"akatakana\"] = 0x30a2;\n  t[\"akatakanahalfwidth\"] = 0xff71;\n  t[\"akorean\"] = 0x314f;\n  t[\"alef\"] = 0x05d0;\n  t[\"alefarabic\"] = 0x0627;\n  t[\"alefdageshhebrew\"] = 0xfb30;\n  t[\"aleffinalarabic\"] = 0xfe8e;\n  t[\"alefhamzaabovearabic\"] = 0x0623;\n  t[\"alefhamzaabovefinalarabic\"] = 0xfe84;\n  t[\"alefhamzabelowarabic\"] = 0x0625;\n  t[\"alefhamzabelowfinalarabic\"] = 0xfe88;\n  t[\"alefhebrew\"] = 0x05d0;\n  t[\"aleflamedhebrew\"] = 0xfb4f;\n  t[\"alefmaddaabovearabic\"] = 0x0622;\n  t[\"alefmaddaabovefinalarabic\"] = 0xfe82;\n  t[\"alefmaksuraarabic\"] = 0x0649;\n  t[\"alefmaksurafinalarabic\"] = 0xfef0;\n  t[\"alefmaksurainitialarabic\"] = 0xfef3;\n  t[\"alefmaksuramedialarabic\"] = 0xfef4;\n  t[\"alefpatahhebrew\"] = 0xfb2e;\n  t[\"alefqamatshebrew\"] = 0xfb2f;\n  t[\"aleph\"] = 0x2135;\n  t[\"allequal\"] = 0x224c;\n  t[\"alpha\"] = 0x03b1;\n  t[\"alphatonos\"] = 0x03ac;\n  t[\"amacron\"] = 0x0101;\n  t[\"amonospace\"] = 0xff41;\n  t[\"ampersand\"] = 0x0026;\n  t[\"ampersandmonospace\"] = 0xff06;\n  t[\"ampersandsmall\"] = 0xf726;\n  t[\"amsquare\"] = 0x33c2;\n  t[\"anbopomofo\"] = 0x3122;\n  t[\"angbopomofo\"] = 0x3124;\n  t[\"angbracketleft\"] = 0x3008; // Glyph is missing from Adobe's original list.\n  t[\"angbracketright\"] = 0x3009; // Glyph is missing from Adobe's original list.\n  t[\"angkhankhuthai\"] = 0x0e5a;\n  t[\"angle\"] = 0x2220;\n  t[\"anglebracketleft\"] = 0x3008;\n  t[\"anglebracketleftvertical\"] = 0xfe3f;\n  t[\"anglebracketright\"] = 0x3009;\n  t[\"anglebracketrightvertical\"] = 0xfe40;\n  t[\"angleleft\"] = 0x2329;\n  t[\"angleright\"] = 0x232a;\n  t[\"angstrom\"] = 0x212b;\n  t[\"anoteleia\"] = 0x0387;\n  t[\"anudattadeva\"] = 0x0952;\n  t[\"anusvarabengali\"] = 0x0982;\n  t[\"anusvaradeva\"] = 0x0902;\n  t[\"anusvaragujarati\"] = 0x0a82;\n  t[\"aogonek\"] = 0x0105;\n  t[\"apaatosquare\"] = 0x3300;\n  t[\"aparen\"] = 0x249c;\n  t[\"apostrophearmenian\"] = 0x055a;\n  t[\"apostrophemod\"] = 0x02bc;\n  t[\"apple\"] = 0xf8ff;\n  t[\"approaches\"] = 0x2250;\n  t[\"approxequal\"] = 0x2248;\n  t[\"approxequalorimage\"] = 0x2252;\n  t[\"approximatelyequal\"] = 0x2245;\n  t[\"araeaekorean\"] = 0x318e;\n  t[\"araeakorean\"] = 0x318d;\n  t[\"arc\"] = 0x2312;\n  t[\"arighthalfring\"] = 0x1e9a;\n  t[\"aring\"] = 0x00e5;\n  t[\"aringacute\"] = 0x01fb;\n  t[\"aringbelow\"] = 0x1e01;\n  t[\"arrowboth\"] = 0x2194;\n  t[\"arrowdashdown\"] = 0x21e3;\n  t[\"arrowdashleft\"] = 0x21e0;\n  t[\"arrowdashright\"] = 0x21e2;\n  t[\"arrowdashup\"] = 0x21e1;\n  t[\"arrowdblboth\"] = 0x21d4;\n  t[\"arrowdbldown\"] = 0x21d3;\n  t[\"arrowdblleft\"] = 0x21d0;\n  t[\"arrowdblright\"] = 0x21d2;\n  t[\"arrowdblup\"] = 0x21d1;\n  t[\"arrowdown\"] = 0x2193;\n  t[\"arrowdownleft\"] = 0x2199;\n  t[\"arrowdownright\"] = 0x2198;\n  t[\"arrowdownwhite\"] = 0x21e9;\n  t[\"arrowheaddownmod\"] = 0x02c5;\n  t[\"arrowheadleftmod\"] = 0x02c2;\n  t[\"arrowheadrightmod\"] = 0x02c3;\n  t[\"arrowheadupmod\"] = 0x02c4;\n  t[\"arrowhorizex\"] = 0xf8e7;\n  t[\"arrowleft\"] = 0x2190;\n  t[\"arrowleftdbl\"] = 0x21d0;\n  t[\"arrowleftdblstroke\"] = 0x21cd;\n  t[\"arrowleftoverright\"] = 0x21c6;\n  t[\"arrowleftwhite\"] = 0x21e6;\n  t[\"arrowright\"] = 0x2192;\n  t[\"arrowrightdblstroke\"] = 0x21cf;\n  t[\"arrowrightheavy\"] = 0x279e;\n  t[\"arrowrightoverleft\"] = 0x21c4;\n  t[\"arrowrightwhite\"] = 0x21e8;\n  t[\"arrowtableft\"] = 0x21e4;\n  t[\"arrowtabright\"] = 0x21e5;\n  t[\"arrowup\"] = 0x2191;\n  t[\"arrowupdn\"] = 0x2195;\n  t[\"arrowupdnbse\"] = 0x21a8;\n  t[\"arrowupdownbase\"] = 0x21a8;\n  t[\"arrowupleft\"] = 0x2196;\n  t[\"arrowupleftofdown\"] = 0x21c5;\n  t[\"arrowupright\"] = 0x2197;\n  t[\"arrowupwhite\"] = 0x21e7;\n  t[\"arrowvertex\"] = 0xf8e6;\n  t[\"asciicircum\"] = 0x005e;\n  t[\"asciicircummonospace\"] = 0xff3e;\n  t[\"asciitilde\"] = 0x007e;\n  t[\"asciitildemonospace\"] = 0xff5e;\n  t[\"ascript\"] = 0x0251;\n  t[\"ascriptturned\"] = 0x0252;\n  t[\"asmallhiragana\"] = 0x3041;\n  t[\"asmallkatakana\"] = 0x30a1;\n  t[\"asmallkatakanahalfwidth\"] = 0xff67;\n  t[\"asterisk\"] = 0x002a;\n  t[\"asteriskaltonearabic\"] = 0x066d;\n  t[\"asteriskarabic\"] = 0x066d;\n  t[\"asteriskmath\"] = 0x2217;\n  t[\"asteriskmonospace\"] = 0xff0a;\n  t[\"asterisksmall\"] = 0xfe61;\n  t[\"asterism\"] = 0x2042;\n  t[\"asuperior\"] = 0xf6e9;\n  t[\"asymptoticallyequal\"] = 0x2243;\n  t[\"at\"] = 0x0040;\n  t[\"atilde\"] = 0x00e3;\n  t[\"atmonospace\"] = 0xff20;\n  t[\"atsmall\"] = 0xfe6b;\n  t[\"aturned\"] = 0x0250;\n  t[\"aubengali\"] = 0x0994;\n  t[\"aubopomofo\"] = 0x3120;\n  t[\"audeva\"] = 0x0914;\n  t[\"augujarati\"] = 0x0a94;\n  t[\"augurmukhi\"] = 0x0a14;\n  t[\"aulengthmarkbengali\"] = 0x09d7;\n  t[\"aumatragurmukhi\"] = 0x0a4c;\n  t[\"auvowelsignbengali\"] = 0x09cc;\n  t[\"auvowelsigndeva\"] = 0x094c;\n  t[\"auvowelsigngujarati\"] = 0x0acc;\n  t[\"avagrahadeva\"] = 0x093d;\n  t[\"aybarmenian\"] = 0x0561;\n  t[\"ayin\"] = 0x05e2;\n  t[\"ayinaltonehebrew\"] = 0xfb20;\n  t[\"ayinhebrew\"] = 0x05e2;\n  t[\"b\"] = 0x0062;\n  t[\"babengali\"] = 0x09ac;\n  t[\"backslash\"] = 0x005c;\n  t[\"backslashmonospace\"] = 0xff3c;\n  t[\"badeva\"] = 0x092c;\n  t[\"bagujarati\"] = 0x0aac;\n  t[\"bagurmukhi\"] = 0x0a2c;\n  t[\"bahiragana\"] = 0x3070;\n  t[\"bahtthai\"] = 0x0e3f;\n  t[\"bakatakana\"] = 0x30d0;\n  t[\"bar\"] = 0x007c;\n  t[\"barmonospace\"] = 0xff5c;\n  t[\"bbopomofo\"] = 0x3105;\n  t[\"bcircle\"] = 0x24d1;\n  t[\"bdotaccent\"] = 0x1e03;\n  t[\"bdotbelow\"] = 0x1e05;\n  t[\"beamedsixteenthnotes\"] = 0x266c;\n  t[\"because\"] = 0x2235;\n  t[\"becyrillic\"] = 0x0431;\n  t[\"beharabic\"] = 0x0628;\n  t[\"behfinalarabic\"] = 0xfe90;\n  t[\"behinitialarabic\"] = 0xfe91;\n  t[\"behiragana\"] = 0x3079;\n  t[\"behmedialarabic\"] = 0xfe92;\n  t[\"behmeeminitialarabic\"] = 0xfc9f;\n  t[\"behmeemisolatedarabic\"] = 0xfc08;\n  t[\"behnoonfinalarabic\"] = 0xfc6d;\n  t[\"bekatakana\"] = 0x30d9;\n  t[\"benarmenian\"] = 0x0562;\n  t[\"bet\"] = 0x05d1;\n  t[\"beta\"] = 0x03b2;\n  t[\"betasymbolgreek\"] = 0x03d0;\n  t[\"betdagesh\"] = 0xfb31;\n  t[\"betdageshhebrew\"] = 0xfb31;\n  t[\"bethebrew\"] = 0x05d1;\n  t[\"betrafehebrew\"] = 0xfb4c;\n  t[\"bhabengali\"] = 0x09ad;\n  t[\"bhadeva\"] = 0x092d;\n  t[\"bhagujarati\"] = 0x0aad;\n  t[\"bhagurmukhi\"] = 0x0a2d;\n  t[\"bhook\"] = 0x0253;\n  t[\"bihiragana\"] = 0x3073;\n  t[\"bikatakana\"] = 0x30d3;\n  t[\"bilabialclick\"] = 0x0298;\n  t[\"bindigurmukhi\"] = 0x0a02;\n  t[\"birusquare\"] = 0x3331;\n  t[\"blackcircle\"] = 0x25cf;\n  t[\"blackdiamond\"] = 0x25c6;\n  t[\"blackdownpointingtriangle\"] = 0x25bc;\n  t[\"blackleftpointingpointer\"] = 0x25c4;\n  t[\"blackleftpointingtriangle\"] = 0x25c0;\n  t[\"blacklenticularbracketleft\"] = 0x3010;\n  t[\"blacklenticularbracketleftvertical\"] = 0xfe3b;\n  t[\"blacklenticularbracketright\"] = 0x3011;\n  t[\"blacklenticularbracketrightvertical\"] = 0xfe3c;\n  t[\"blacklowerlefttriangle\"] = 0x25e3;\n  t[\"blacklowerrighttriangle\"] = 0x25e2;\n  t[\"blackrectangle\"] = 0x25ac;\n  t[\"blackrightpointingpointer\"] = 0x25ba;\n  t[\"blackrightpointingtriangle\"] = 0x25b6;\n  t[\"blacksmallsquare\"] = 0x25aa;\n  t[\"blacksmilingface\"] = 0x263b;\n  t[\"blacksquare\"] = 0x25a0;\n  t[\"blackstar\"] = 0x2605;\n  t[\"blackupperlefttriangle\"] = 0x25e4;\n  t[\"blackupperrighttriangle\"] = 0x25e5;\n  t[\"blackuppointingsmalltriangle\"] = 0x25b4;\n  t[\"blackuppointingtriangle\"] = 0x25b2;\n  t[\"blank\"] = 0x2423;\n  t[\"blinebelow\"] = 0x1e07;\n  t[\"block\"] = 0x2588;\n  t[\"bmonospace\"] = 0xff42;\n  t[\"bobaimaithai\"] = 0x0e1a;\n  t[\"bohiragana\"] = 0x307c;\n  t[\"bokatakana\"] = 0x30dc;\n  t[\"bparen\"] = 0x249d;\n  t[\"bqsquare\"] = 0x33c3;\n  t[\"braceex\"] = 0xf8f4;\n  t[\"braceleft\"] = 0x007b;\n  t[\"braceleftbt\"] = 0xf8f3;\n  t[\"braceleftmid\"] = 0xf8f2;\n  t[\"braceleftmonospace\"] = 0xff5b;\n  t[\"braceleftsmall\"] = 0xfe5b;\n  t[\"bracelefttp\"] = 0xf8f1;\n  t[\"braceleftvertical\"] = 0xfe37;\n  t[\"braceright\"] = 0x007d;\n  t[\"bracerightbt\"] = 0xf8fe;\n  t[\"bracerightmid\"] = 0xf8fd;\n  t[\"bracerightmonospace\"] = 0xff5d;\n  t[\"bracerightsmall\"] = 0xfe5c;\n  t[\"bracerighttp\"] = 0xf8fc;\n  t[\"bracerightvertical\"] = 0xfe38;\n  t[\"bracketleft\"] = 0x005b;\n  t[\"bracketleftbt\"] = 0xf8f0;\n  t[\"bracketleftex\"] = 0xf8ef;\n  t[\"bracketleftmonospace\"] = 0xff3b;\n  t[\"bracketlefttp\"] = 0xf8ee;\n  t[\"bracketright\"] = 0x005d;\n  t[\"bracketrightbt\"] = 0xf8fb;\n  t[\"bracketrightex\"] = 0xf8fa;\n  t[\"bracketrightmonospace\"] = 0xff3d;\n  t[\"bracketrighttp\"] = 0xf8f9;\n  t[\"breve\"] = 0x02d8;\n  t[\"brevebelowcmb\"] = 0x032e;\n  t[\"brevecmb\"] = 0x0306;\n  t[\"breveinvertedbelowcmb\"] = 0x032f;\n  t[\"breveinvertedcmb\"] = 0x0311;\n  t[\"breveinverteddoublecmb\"] = 0x0361;\n  t[\"bridgebelowcmb\"] = 0x032a;\n  t[\"bridgeinvertedbelowcmb\"] = 0x033a;\n  t[\"brokenbar\"] = 0x00a6;\n  t[\"bstroke\"] = 0x0180;\n  t[\"bsuperior\"] = 0xf6ea;\n  t[\"btopbar\"] = 0x0183;\n  t[\"buhiragana\"] = 0x3076;\n  t[\"bukatakana\"] = 0x30d6;\n  t[\"bullet\"] = 0x2022;\n  t[\"bulletinverse\"] = 0x25d8;\n  t[\"bulletoperator\"] = 0x2219;\n  t[\"bullseye\"] = 0x25ce;\n  t[\"c\"] = 0x0063;\n  t[\"caarmenian\"] = 0x056e;\n  t[\"cabengali\"] = 0x099a;\n  t[\"cacute\"] = 0x0107;\n  t[\"cadeva\"] = 0x091a;\n  t[\"cagujarati\"] = 0x0a9a;\n  t[\"cagurmukhi\"] = 0x0a1a;\n  t[\"calsquare\"] = 0x3388;\n  t[\"candrabindubengali\"] = 0x0981;\n  t[\"candrabinducmb\"] = 0x0310;\n  t[\"candrabindudeva\"] = 0x0901;\n  t[\"candrabindugujarati\"] = 0x0a81;\n  t[\"capslock\"] = 0x21ea;\n  t[\"careof\"] = 0x2105;\n  t[\"caron\"] = 0x02c7;\n  t[\"caronbelowcmb\"] = 0x032c;\n  t[\"caroncmb\"] = 0x030c;\n  t[\"carriagereturn\"] = 0x21b5;\n  t[\"cbopomofo\"] = 0x3118;\n  t[\"ccaron\"] = 0x010d;\n  t[\"ccedilla\"] = 0x00e7;\n  t[\"ccedillaacute\"] = 0x1e09;\n  t[\"ccircle\"] = 0x24d2;\n  t[\"ccircumflex\"] = 0x0109;\n  t[\"ccurl\"] = 0x0255;\n  t[\"cdot\"] = 0x010b;\n  t[\"cdotaccent\"] = 0x010b;\n  t[\"cdsquare\"] = 0x33c5;\n  t[\"cedilla\"] = 0x00b8;\n  t[\"cedillacmb\"] = 0x0327;\n  t[\"cent\"] = 0x00a2;\n  t[\"centigrade\"] = 0x2103;\n  t[\"centinferior\"] = 0xf6df;\n  t[\"centmonospace\"] = 0xffe0;\n  t[\"centoldstyle\"] = 0xf7a2;\n  t[\"centsuperior\"] = 0xf6e0;\n  t[\"chaarmenian\"] = 0x0579;\n  t[\"chabengali\"] = 0x099b;\n  t[\"chadeva\"] = 0x091b;\n  t[\"chagujarati\"] = 0x0a9b;\n  t[\"chagurmukhi\"] = 0x0a1b;\n  t[\"chbopomofo\"] = 0x3114;\n  t[\"cheabkhasiancyrillic\"] = 0x04bd;\n  t[\"checkmark\"] = 0x2713;\n  t[\"checyrillic\"] = 0x0447;\n  t[\"chedescenderabkhasiancyrillic\"] = 0x04bf;\n  t[\"chedescendercyrillic\"] = 0x04b7;\n  t[\"chedieresiscyrillic\"] = 0x04f5;\n  t[\"cheharmenian\"] = 0x0573;\n  t[\"chekhakassiancyrillic\"] = 0x04cc;\n  t[\"cheverticalstrokecyrillic\"] = 0x04b9;\n  t[\"chi\"] = 0x03c7;\n  t[\"chieuchacirclekorean\"] = 0x3277;\n  t[\"chieuchaparenkorean\"] = 0x3217;\n  t[\"chieuchcirclekorean\"] = 0x3269;\n  t[\"chieuchkorean\"] = 0x314a;\n  t[\"chieuchparenkorean\"] = 0x3209;\n  t[\"chochangthai\"] = 0x0e0a;\n  t[\"chochanthai\"] = 0x0e08;\n  t[\"chochingthai\"] = 0x0e09;\n  t[\"chochoethai\"] = 0x0e0c;\n  t[\"chook\"] = 0x0188;\n  t[\"cieucacirclekorean\"] = 0x3276;\n  t[\"cieucaparenkorean\"] = 0x3216;\n  t[\"cieuccirclekorean\"] = 0x3268;\n  t[\"cieuckorean\"] = 0x3148;\n  t[\"cieucparenkorean\"] = 0x3208;\n  t[\"cieucuparenkorean\"] = 0x321c;\n  t[\"circle\"] = 0x25cb;\n  t[\"circlecopyrt\"] = 0x00a9; // Glyph is missing from Adobe's original list.\n  t[\"circlemultiply\"] = 0x2297;\n  t[\"circleot\"] = 0x2299;\n  t[\"circleplus\"] = 0x2295;\n  t[\"circlepostalmark\"] = 0x3036;\n  t[\"circlewithlefthalfblack\"] = 0x25d0;\n  t[\"circlewithrighthalfblack\"] = 0x25d1;\n  t[\"circumflex\"] = 0x02c6;\n  t[\"circumflexbelowcmb\"] = 0x032d;\n  t[\"circumflexcmb\"] = 0x0302;\n  t[\"clear\"] = 0x2327;\n  t[\"clickalveolar\"] = 0x01c2;\n  t[\"clickdental\"] = 0x01c0;\n  t[\"clicklateral\"] = 0x01c1;\n  t[\"clickretroflex\"] = 0x01c3;\n  t[\"club\"] = 0x2663;\n  t[\"clubsuitblack\"] = 0x2663;\n  t[\"clubsuitwhite\"] = 0x2667;\n  t[\"cmcubedsquare\"] = 0x33a4;\n  t[\"cmonospace\"] = 0xff43;\n  t[\"cmsquaredsquare\"] = 0x33a0;\n  t[\"coarmenian\"] = 0x0581;\n  t[\"colon\"] = 0x003a;\n  t[\"colonmonetary\"] = 0x20a1;\n  t[\"colonmonospace\"] = 0xff1a;\n  t[\"colonsign\"] = 0x20a1;\n  t[\"colonsmall\"] = 0xfe55;\n  t[\"colontriangularhalfmod\"] = 0x02d1;\n  t[\"colontriangularmod\"] = 0x02d0;\n  t[\"comma\"] = 0x002c;\n  t[\"commaabovecmb\"] = 0x0313;\n  t[\"commaaboverightcmb\"] = 0x0315;\n  t[\"commaaccent\"] = 0xf6c3;\n  t[\"commaarabic\"] = 0x060c;\n  t[\"commaarmenian\"] = 0x055d;\n  t[\"commainferior\"] = 0xf6e1;\n  t[\"commamonospace\"] = 0xff0c;\n  t[\"commareversedabovecmb\"] = 0x0314;\n  t[\"commareversedmod\"] = 0x02bd;\n  t[\"commasmall\"] = 0xfe50;\n  t[\"commasuperior\"] = 0xf6e2;\n  t[\"commaturnedabovecmb\"] = 0x0312;\n  t[\"commaturnedmod\"] = 0x02bb;\n  t[\"compass\"] = 0x263c;\n  t[\"congruent\"] = 0x2245;\n  t[\"contourintegral\"] = 0x222e;\n  t[\"control\"] = 0x2303;\n  t[\"controlACK\"] = 0x0006;\n  t[\"controlBEL\"] = 0x0007;\n  t[\"controlBS\"] = 0x0008;\n  t[\"controlCAN\"] = 0x0018;\n  t[\"controlCR\"] = 0x000d;\n  t[\"controlDC1\"] = 0x0011;\n  t[\"controlDC2\"] = 0x0012;\n  t[\"controlDC3\"] = 0x0013;\n  t[\"controlDC4\"] = 0x0014;\n  t[\"controlDEL\"] = 0x007f;\n  t[\"controlDLE\"] = 0x0010;\n  t[\"controlEM\"] = 0x0019;\n  t[\"controlENQ\"] = 0x0005;\n  t[\"controlEOT\"] = 0x0004;\n  t[\"controlESC\"] = 0x001b;\n  t[\"controlETB\"] = 0x0017;\n  t[\"controlETX\"] = 0x0003;\n  t[\"controlFF\"] = 0x000c;\n  t[\"controlFS\"] = 0x001c;\n  t[\"controlGS\"] = 0x001d;\n  t[\"controlHT\"] = 0x0009;\n  t[\"controlLF\"] = 0x000a;\n  t[\"controlNAK\"] = 0x0015;\n  t[\"controlNULL\"] = 0x0000; // Glyph is missing from Adobe's original list.\n  t[\"controlRS\"] = 0x001e;\n  t[\"controlSI\"] = 0x000f;\n  t[\"controlSO\"] = 0x000e;\n  t[\"controlSOT\"] = 0x0002;\n  t[\"controlSTX\"] = 0x0001;\n  t[\"controlSUB\"] = 0x001a;\n  t[\"controlSYN\"] = 0x0016;\n  t[\"controlUS\"] = 0x001f;\n  t[\"controlVT\"] = 0x000b;\n  t[\"copyright\"] = 0x00a9;\n  t[\"copyrightsans\"] = 0xf8e9;\n  t[\"copyrightserif\"] = 0xf6d9;\n  t[\"cornerbracketleft\"] = 0x300c;\n  t[\"cornerbracketlefthalfwidth\"] = 0xff62;\n  t[\"cornerbracketleftvertical\"] = 0xfe41;\n  t[\"cornerbracketright\"] = 0x300d;\n  t[\"cornerbracketrighthalfwidth\"] = 0xff63;\n  t[\"cornerbracketrightvertical\"] = 0xfe42;\n  t[\"corporationsquare\"] = 0x337f;\n  t[\"cosquare\"] = 0x33c7;\n  t[\"coverkgsquare\"] = 0x33c6;\n  t[\"cparen\"] = 0x249e;\n  t[\"cruzeiro\"] = 0x20a2;\n  t[\"cstretched\"] = 0x0297;\n  t[\"curlyand\"] = 0x22cf;\n  t[\"curlyor\"] = 0x22ce;\n  t[\"currency\"] = 0x00a4;\n  t[\"cyrBreve\"] = 0xf6d1;\n  t[\"cyrFlex\"] = 0xf6d2;\n  t[\"cyrbreve\"] = 0xf6d4;\n  t[\"cyrflex\"] = 0xf6d5;\n  t[\"d\"] = 0x0064;\n  t[\"daarmenian\"] = 0x0564;\n  t[\"dabengali\"] = 0x09a6;\n  t[\"dadarabic\"] = 0x0636;\n  t[\"dadeva\"] = 0x0926;\n  t[\"dadfinalarabic\"] = 0xfebe;\n  t[\"dadinitialarabic\"] = 0xfebf;\n  t[\"dadmedialarabic\"] = 0xfec0;\n  t[\"dagesh\"] = 0x05bc;\n  t[\"dageshhebrew\"] = 0x05bc;\n  t[\"dagger\"] = 0x2020;\n  t[\"daggerdbl\"] = 0x2021;\n  t[\"dagujarati\"] = 0x0aa6;\n  t[\"dagurmukhi\"] = 0x0a26;\n  t[\"dahiragana\"] = 0x3060;\n  t[\"dakatakana\"] = 0x30c0;\n  t[\"dalarabic\"] = 0x062f;\n  t[\"dalet\"] = 0x05d3;\n  t[\"daletdagesh\"] = 0xfb33;\n  t[\"daletdageshhebrew\"] = 0xfb33;\n  t[\"dalethebrew\"] = 0x05d3;\n  t[\"dalfinalarabic\"] = 0xfeaa;\n  t[\"dammaarabic\"] = 0x064f;\n  t[\"dammalowarabic\"] = 0x064f;\n  t[\"dammatanaltonearabic\"] = 0x064c;\n  t[\"dammatanarabic\"] = 0x064c;\n  t[\"danda\"] = 0x0964;\n  t[\"dargahebrew\"] = 0x05a7;\n  t[\"dargalefthebrew\"] = 0x05a7;\n  t[\"dasiapneumatacyrilliccmb\"] = 0x0485;\n  t[\"dblGrave\"] = 0xf6d3;\n  t[\"dblanglebracketleft\"] = 0x300a;\n  t[\"dblanglebracketleftvertical\"] = 0xfe3d;\n  t[\"dblanglebracketright\"] = 0x300b;\n  t[\"dblanglebracketrightvertical\"] = 0xfe3e;\n  t[\"dblarchinvertedbelowcmb\"] = 0x032b;\n  t[\"dblarrowleft\"] = 0x21d4;\n  t[\"dblarrowright\"] = 0x21d2;\n  t[\"dbldanda\"] = 0x0965;\n  t[\"dblgrave\"] = 0xf6d6;\n  t[\"dblgravecmb\"] = 0x030f;\n  t[\"dblintegral\"] = 0x222c;\n  t[\"dbllowline\"] = 0x2017;\n  t[\"dbllowlinecmb\"] = 0x0333;\n  t[\"dbloverlinecmb\"] = 0x033f;\n  t[\"dblprimemod\"] = 0x02ba;\n  t[\"dblverticalbar\"] = 0x2016;\n  t[\"dblverticallineabovecmb\"] = 0x030e;\n  t[\"dbopomofo\"] = 0x3109;\n  t[\"dbsquare\"] = 0x33c8;\n  t[\"dcaron\"] = 0x010f;\n  t[\"dcedilla\"] = 0x1e11;\n  t[\"dcircle\"] = 0x24d3;\n  t[\"dcircumflexbelow\"] = 0x1e13;\n  t[\"dcroat\"] = 0x0111;\n  t[\"ddabengali\"] = 0x09a1;\n  t[\"ddadeva\"] = 0x0921;\n  t[\"ddagujarati\"] = 0x0aa1;\n  t[\"ddagurmukhi\"] = 0x0a21;\n  t[\"ddalarabic\"] = 0x0688;\n  t[\"ddalfinalarabic\"] = 0xfb89;\n  t[\"dddhadeva\"] = 0x095c;\n  t[\"ddhabengali\"] = 0x09a2;\n  t[\"ddhadeva\"] = 0x0922;\n  t[\"ddhagujarati\"] = 0x0aa2;\n  t[\"ddhagurmukhi\"] = 0x0a22;\n  t[\"ddotaccent\"] = 0x1e0b;\n  t[\"ddotbelow\"] = 0x1e0d;\n  t[\"decimalseparatorarabic\"] = 0x066b;\n  t[\"decimalseparatorpersian\"] = 0x066b;\n  t[\"decyrillic\"] = 0x0434;\n  t[\"degree\"] = 0x00b0;\n  t[\"dehihebrew\"] = 0x05ad;\n  t[\"dehiragana\"] = 0x3067;\n  t[\"deicoptic\"] = 0x03ef;\n  t[\"dekatakana\"] = 0x30c7;\n  t[\"deleteleft\"] = 0x232b;\n  t[\"deleteright\"] = 0x2326;\n  t[\"delta\"] = 0x03b4;\n  t[\"deltaturned\"] = 0x018d;\n  t[\"denominatorminusonenumeratorbengali\"] = 0x09f8;\n  t[\"dezh\"] = 0x02a4;\n  t[\"dhabengali\"] = 0x09a7;\n  t[\"dhadeva\"] = 0x0927;\n  t[\"dhagujarati\"] = 0x0aa7;\n  t[\"dhagurmukhi\"] = 0x0a27;\n  t[\"dhook\"] = 0x0257;\n  t[\"dialytikatonos\"] = 0x0385;\n  t[\"dialytikatonoscmb\"] = 0x0344;\n  t[\"diamond\"] = 0x2666;\n  t[\"diamondsuitwhite\"] = 0x2662;\n  t[\"dieresis\"] = 0x00a8;\n  t[\"dieresisacute\"] = 0xf6d7;\n  t[\"dieresisbelowcmb\"] = 0x0324;\n  t[\"dieresiscmb\"] = 0x0308;\n  t[\"dieresisgrave\"] = 0xf6d8;\n  t[\"dieresistonos\"] = 0x0385;\n  t[\"dihiragana\"] = 0x3062;\n  t[\"dikatakana\"] = 0x30c2;\n  t[\"dittomark\"] = 0x3003;\n  t[\"divide\"] = 0x00f7;\n  t[\"divides\"] = 0x2223;\n  t[\"divisionslash\"] = 0x2215;\n  t[\"djecyrillic\"] = 0x0452;\n  t[\"dkshade\"] = 0x2593;\n  t[\"dlinebelow\"] = 0x1e0f;\n  t[\"dlsquare\"] = 0x3397;\n  t[\"dmacron\"] = 0x0111;\n  t[\"dmonospace\"] = 0xff44;\n  t[\"dnblock\"] = 0x2584;\n  t[\"dochadathai\"] = 0x0e0e;\n  t[\"dodekthai\"] = 0x0e14;\n  t[\"dohiragana\"] = 0x3069;\n  t[\"dokatakana\"] = 0x30c9;\n  t[\"dollar\"] = 0x0024;\n  t[\"dollarinferior\"] = 0xf6e3;\n  t[\"dollarmonospace\"] = 0xff04;\n  t[\"dollaroldstyle\"] = 0xf724;\n  t[\"dollarsmall\"] = 0xfe69;\n  t[\"dollarsuperior\"] = 0xf6e4;\n  t[\"dong\"] = 0x20ab;\n  t[\"dorusquare\"] = 0x3326;\n  t[\"dotaccent\"] = 0x02d9;\n  t[\"dotaccentcmb\"] = 0x0307;\n  t[\"dotbelowcmb\"] = 0x0323;\n  t[\"dotbelowcomb\"] = 0x0323;\n  t[\"dotkatakana\"] = 0x30fb;\n  t[\"dotlessi\"] = 0x0131;\n  t[\"dotlessj\"] = 0xf6be;\n  t[\"dotlessjstrokehook\"] = 0x0284;\n  t[\"dotmath\"] = 0x22c5;\n  t[\"dottedcircle\"] = 0x25cc;\n  t[\"doubleyodpatah\"] = 0xfb1f;\n  t[\"doubleyodpatahhebrew\"] = 0xfb1f;\n  t[\"downtackbelowcmb\"] = 0x031e;\n  t[\"downtackmod\"] = 0x02d5;\n  t[\"dparen\"] = 0x249f;\n  t[\"dsuperior\"] = 0xf6eb;\n  t[\"dtail\"] = 0x0256;\n  t[\"dtopbar\"] = 0x018c;\n  t[\"duhiragana\"] = 0x3065;\n  t[\"dukatakana\"] = 0x30c5;\n  t[\"dz\"] = 0x01f3;\n  t[\"dzaltone\"] = 0x02a3;\n  t[\"dzcaron\"] = 0x01c6;\n  t[\"dzcurl\"] = 0x02a5;\n  t[\"dzeabkhasiancyrillic\"] = 0x04e1;\n  t[\"dzecyrillic\"] = 0x0455;\n  t[\"dzhecyrillic\"] = 0x045f;\n  t[\"e\"] = 0x0065;\n  t[\"eacute\"] = 0x00e9;\n  t[\"earth\"] = 0x2641;\n  t[\"ebengali\"] = 0x098f;\n  t[\"ebopomofo\"] = 0x311c;\n  t[\"ebreve\"] = 0x0115;\n  t[\"ecandradeva\"] = 0x090d;\n  t[\"ecandragujarati\"] = 0x0a8d;\n  t[\"ecandravowelsigndeva\"] = 0x0945;\n  t[\"ecandravowelsigngujarati\"] = 0x0ac5;\n  t[\"ecaron\"] = 0x011b;\n  t[\"ecedillabreve\"] = 0x1e1d;\n  t[\"echarmenian\"] = 0x0565;\n  t[\"echyiwnarmenian\"] = 0x0587;\n  t[\"ecircle\"] = 0x24d4;\n  t[\"ecircumflex\"] = 0x00ea;\n  t[\"ecircumflexacute\"] = 0x1ebf;\n  t[\"ecircumflexbelow\"] = 0x1e19;\n  t[\"ecircumflexdotbelow\"] = 0x1ec7;\n  t[\"ecircumflexgrave\"] = 0x1ec1;\n  t[\"ecircumflexhookabove\"] = 0x1ec3;\n  t[\"ecircumflextilde\"] = 0x1ec5;\n  t[\"ecyrillic\"] = 0x0454;\n  t[\"edblgrave\"] = 0x0205;\n  t[\"edeva\"] = 0x090f;\n  t[\"edieresis\"] = 0x00eb;\n  t[\"edot\"] = 0x0117;\n  t[\"edotaccent\"] = 0x0117;\n  t[\"edotbelow\"] = 0x1eb9;\n  t[\"eegurmukhi\"] = 0x0a0f;\n  t[\"eematragurmukhi\"] = 0x0a47;\n  t[\"efcyrillic\"] = 0x0444;\n  t[\"egrave\"] = 0x00e8;\n  t[\"egujarati\"] = 0x0a8f;\n  t[\"eharmenian\"] = 0x0567;\n  t[\"ehbopomofo\"] = 0x311d;\n  t[\"ehiragana\"] = 0x3048;\n  t[\"ehookabove\"] = 0x1ebb;\n  t[\"eibopomofo\"] = 0x311f;\n  t[\"eight\"] = 0x0038;\n  t[\"eightarabic\"] = 0x0668;\n  t[\"eightbengali\"] = 0x09ee;\n  t[\"eightcircle\"] = 0x2467;\n  t[\"eightcircleinversesansserif\"] = 0x2791;\n  t[\"eightdeva\"] = 0x096e;\n  t[\"eighteencircle\"] = 0x2471;\n  t[\"eighteenparen\"] = 0x2485;\n  t[\"eighteenperiod\"] = 0x2499;\n  t[\"eightgujarati\"] = 0x0aee;\n  t[\"eightgurmukhi\"] = 0x0a6e;\n  t[\"eighthackarabic\"] = 0x0668;\n  t[\"eighthangzhou\"] = 0x3028;\n  t[\"eighthnotebeamed\"] = 0x266b;\n  t[\"eightideographicparen\"] = 0x3227;\n  t[\"eightinferior\"] = 0x2088;\n  t[\"eightmonospace\"] = 0xff18;\n  t[\"eightoldstyle\"] = 0xf738;\n  t[\"eightparen\"] = 0x247b;\n  t[\"eightperiod\"] = 0x248f;\n  t[\"eightpersian\"] = 0x06f8;\n  t[\"eightroman\"] = 0x2177;\n  t[\"eightsuperior\"] = 0x2078;\n  t[\"eightthai\"] = 0x0e58;\n  t[\"einvertedbreve\"] = 0x0207;\n  t[\"eiotifiedcyrillic\"] = 0x0465;\n  t[\"ekatakana\"] = 0x30a8;\n  t[\"ekatakanahalfwidth\"] = 0xff74;\n  t[\"ekonkargurmukhi\"] = 0x0a74;\n  t[\"ekorean\"] = 0x3154;\n  t[\"elcyrillic\"] = 0x043b;\n  t[\"element\"] = 0x2208;\n  t[\"elevencircle\"] = 0x246a;\n  t[\"elevenparen\"] = 0x247e;\n  t[\"elevenperiod\"] = 0x2492;\n  t[\"elevenroman\"] = 0x217a;\n  t[\"ellipsis\"] = 0x2026;\n  t[\"ellipsisvertical\"] = 0x22ee;\n  t[\"emacron\"] = 0x0113;\n  t[\"emacronacute\"] = 0x1e17;\n  t[\"emacrongrave\"] = 0x1e15;\n  t[\"emcyrillic\"] = 0x043c;\n  t[\"emdash\"] = 0x2014;\n  t[\"emdashvertical\"] = 0xfe31;\n  t[\"emonospace\"] = 0xff45;\n  t[\"emphasismarkarmenian\"] = 0x055b;\n  t[\"emptyset\"] = 0x2205;\n  t[\"enbopomofo\"] = 0x3123;\n  t[\"encyrillic\"] = 0x043d;\n  t[\"endash\"] = 0x2013;\n  t[\"endashvertical\"] = 0xfe32;\n  t[\"endescendercyrillic\"] = 0x04a3;\n  t[\"eng\"] = 0x014b;\n  t[\"engbopomofo\"] = 0x3125;\n  t[\"enghecyrillic\"] = 0x04a5;\n  t[\"enhookcyrillic\"] = 0x04c8;\n  t[\"enspace\"] = 0x2002;\n  t[\"eogonek\"] = 0x0119;\n  t[\"eokorean\"] = 0x3153;\n  t[\"eopen\"] = 0x025b;\n  t[\"eopenclosed\"] = 0x029a;\n  t[\"eopenreversed\"] = 0x025c;\n  t[\"eopenreversedclosed\"] = 0x025e;\n  t[\"eopenreversedhook\"] = 0x025d;\n  t[\"eparen\"] = 0x24a0;\n  t[\"epsilon\"] = 0x03b5;\n  t[\"epsilontonos\"] = 0x03ad;\n  t[\"equal\"] = 0x003d;\n  t[\"equalmonospace\"] = 0xff1d;\n  t[\"equalsmall\"] = 0xfe66;\n  t[\"equalsuperior\"] = 0x207c;\n  t[\"equivalence\"] = 0x2261;\n  t[\"erbopomofo\"] = 0x3126;\n  t[\"ercyrillic\"] = 0x0440;\n  t[\"ereversed\"] = 0x0258;\n  t[\"ereversedcyrillic\"] = 0x044d;\n  t[\"escyrillic\"] = 0x0441;\n  t[\"esdescendercyrillic\"] = 0x04ab;\n  t[\"esh\"] = 0x0283;\n  t[\"eshcurl\"] = 0x0286;\n  t[\"eshortdeva\"] = 0x090e;\n  t[\"eshortvowelsigndeva\"] = 0x0946;\n  t[\"eshreversedloop\"] = 0x01aa;\n  t[\"eshsquatreversed\"] = 0x0285;\n  t[\"esmallhiragana\"] = 0x3047;\n  t[\"esmallkatakana\"] = 0x30a7;\n  t[\"esmallkatakanahalfwidth\"] = 0xff6a;\n  t[\"estimated\"] = 0x212e;\n  t[\"esuperior\"] = 0xf6ec;\n  t[\"eta\"] = 0x03b7;\n  t[\"etarmenian\"] = 0x0568;\n  t[\"etatonos\"] = 0x03ae;\n  t[\"eth\"] = 0x00f0;\n  t[\"etilde\"] = 0x1ebd;\n  t[\"etildebelow\"] = 0x1e1b;\n  t[\"etnahtafoukhhebrew\"] = 0x0591;\n  t[\"etnahtafoukhlefthebrew\"] = 0x0591;\n  t[\"etnahtahebrew\"] = 0x0591;\n  t[\"etnahtalefthebrew\"] = 0x0591;\n  t[\"eturned\"] = 0x01dd;\n  t[\"eukorean\"] = 0x3161;\n  t[\"euro\"] = 0x20ac;\n  t[\"evowelsignbengali\"] = 0x09c7;\n  t[\"evowelsigndeva\"] = 0x0947;\n  t[\"evowelsigngujarati\"] = 0x0ac7;\n  t[\"exclam\"] = 0x0021;\n  t[\"exclamarmenian\"] = 0x055c;\n  t[\"exclamdbl\"] = 0x203c;\n  t[\"exclamdown\"] = 0x00a1;\n  t[\"exclamdownsmall\"] = 0xf7a1;\n  t[\"exclammonospace\"] = 0xff01;\n  t[\"exclamsmall\"] = 0xf721;\n  t[\"existential\"] = 0x2203;\n  t[\"ezh\"] = 0x0292;\n  t[\"ezhcaron\"] = 0x01ef;\n  t[\"ezhcurl\"] = 0x0293;\n  t[\"ezhreversed\"] = 0x01b9;\n  t[\"ezhtail\"] = 0x01ba;\n  t[\"f\"] = 0x0066;\n  t[\"fadeva\"] = 0x095e;\n  t[\"fagurmukhi\"] = 0x0a5e;\n  t[\"fahrenheit\"] = 0x2109;\n  t[\"fathaarabic\"] = 0x064e;\n  t[\"fathalowarabic\"] = 0x064e;\n  t[\"fathatanarabic\"] = 0x064b;\n  t[\"fbopomofo\"] = 0x3108;\n  t[\"fcircle\"] = 0x24d5;\n  t[\"fdotaccent\"] = 0x1e1f;\n  t[\"feharabic\"] = 0x0641;\n  t[\"feharmenian\"] = 0x0586;\n  t[\"fehfinalarabic\"] = 0xfed2;\n  t[\"fehinitialarabic\"] = 0xfed3;\n  t[\"fehmedialarabic\"] = 0xfed4;\n  t[\"feicoptic\"] = 0x03e5;\n  t[\"female\"] = 0x2640;\n  t[\"ff\"] = 0xfb00;\n  t[\"f_f\"] = 0xfb00; // Fixes issue 11016.\n  t[\"ffi\"] = 0xfb03;\n  t[\"ffl\"] = 0xfb04;\n  t[\"fi\"] = 0xfb01;\n  t[\"fifteencircle\"] = 0x246e;\n  t[\"fifteenparen\"] = 0x2482;\n  t[\"fifteenperiod\"] = 0x2496;\n  t[\"figuredash\"] = 0x2012;\n  t[\"filledbox\"] = 0x25a0;\n  t[\"filledrect\"] = 0x25ac;\n  t[\"finalkaf\"] = 0x05da;\n  t[\"finalkafdagesh\"] = 0xfb3a;\n  t[\"finalkafdageshhebrew\"] = 0xfb3a;\n  t[\"finalkafhebrew\"] = 0x05da;\n  t[\"finalmem\"] = 0x05dd;\n  t[\"finalmemhebrew\"] = 0x05dd;\n  t[\"finalnun\"] = 0x05df;\n  t[\"finalnunhebrew\"] = 0x05df;\n  t[\"finalpe\"] = 0x05e3;\n  t[\"finalpehebrew\"] = 0x05e3;\n  t[\"finaltsadi\"] = 0x05e5;\n  t[\"finaltsadihebrew\"] = 0x05e5;\n  t[\"firsttonechinese\"] = 0x02c9;\n  t[\"fisheye\"] = 0x25c9;\n  t[\"fitacyrillic\"] = 0x0473;\n  t[\"five\"] = 0x0035;\n  t[\"fivearabic\"] = 0x0665;\n  t[\"fivebengali\"] = 0x09eb;\n  t[\"fivecircle\"] = 0x2464;\n  t[\"fivecircleinversesansserif\"] = 0x278e;\n  t[\"fivedeva\"] = 0x096b;\n  t[\"fiveeighths\"] = 0x215d;\n  t[\"fivegujarati\"] = 0x0aeb;\n  t[\"fivegurmukhi\"] = 0x0a6b;\n  t[\"fivehackarabic\"] = 0x0665;\n  t[\"fivehangzhou\"] = 0x3025;\n  t[\"fiveideographicparen\"] = 0x3224;\n  t[\"fiveinferior\"] = 0x2085;\n  t[\"fivemonospace\"] = 0xff15;\n  t[\"fiveoldstyle\"] = 0xf735;\n  t[\"fiveparen\"] = 0x2478;\n  t[\"fiveperiod\"] = 0x248c;\n  t[\"fivepersian\"] = 0x06f5;\n  t[\"fiveroman\"] = 0x2174;\n  t[\"fivesuperior\"] = 0x2075;\n  t[\"fivethai\"] = 0x0e55;\n  t[\"fl\"] = 0xfb02;\n  t[\"florin\"] = 0x0192;\n  t[\"fmonospace\"] = 0xff46;\n  t[\"fmsquare\"] = 0x3399;\n  t[\"fofanthai\"] = 0x0e1f;\n  t[\"fofathai\"] = 0x0e1d;\n  t[\"fongmanthai\"] = 0x0e4f;\n  t[\"forall\"] = 0x2200;\n  t[\"four\"] = 0x0034;\n  t[\"fourarabic\"] = 0x0664;\n  t[\"fourbengali\"] = 0x09ea;\n  t[\"fourcircle\"] = 0x2463;\n  t[\"fourcircleinversesansserif\"] = 0x278d;\n  t[\"fourdeva\"] = 0x096a;\n  t[\"fourgujarati\"] = 0x0aea;\n  t[\"fourgurmukhi\"] = 0x0a6a;\n  t[\"fourhackarabic\"] = 0x0664;\n  t[\"fourhangzhou\"] = 0x3024;\n  t[\"fourideographicparen\"] = 0x3223;\n  t[\"fourinferior\"] = 0x2084;\n  t[\"fourmonospace\"] = 0xff14;\n  t[\"fournumeratorbengali\"] = 0x09f7;\n  t[\"fouroldstyle\"] = 0xf734;\n  t[\"fourparen\"] = 0x2477;\n  t[\"fourperiod\"] = 0x248b;\n  t[\"fourpersian\"] = 0x06f4;\n  t[\"fourroman\"] = 0x2173;\n  t[\"foursuperior\"] = 0x2074;\n  t[\"fourteencircle\"] = 0x246d;\n  t[\"fourteenparen\"] = 0x2481;\n  t[\"fourteenperiod\"] = 0x2495;\n  t[\"fourthai\"] = 0x0e54;\n  t[\"fourthtonechinese\"] = 0x02cb;\n  t[\"fparen\"] = 0x24a1;\n  t[\"fraction\"] = 0x2044;\n  t[\"franc\"] = 0x20a3;\n  t[\"g\"] = 0x0067;\n  t[\"gabengali\"] = 0x0997;\n  t[\"gacute\"] = 0x01f5;\n  t[\"gadeva\"] = 0x0917;\n  t[\"gafarabic\"] = 0x06af;\n  t[\"gaffinalarabic\"] = 0xfb93;\n  t[\"gafinitialarabic\"] = 0xfb94;\n  t[\"gafmedialarabic\"] = 0xfb95;\n  t[\"gagujarati\"] = 0x0a97;\n  t[\"gagurmukhi\"] = 0x0a17;\n  t[\"gahiragana\"] = 0x304c;\n  t[\"gakatakana\"] = 0x30ac;\n  t[\"gamma\"] = 0x03b3;\n  t[\"gammalatinsmall\"] = 0x0263;\n  t[\"gammasuperior\"] = 0x02e0;\n  t[\"gangiacoptic\"] = 0x03eb;\n  t[\"gbopomofo\"] = 0x310d;\n  t[\"gbreve\"] = 0x011f;\n  t[\"gcaron\"] = 0x01e7;\n  t[\"gcedilla\"] = 0x0123;\n  t[\"gcircle\"] = 0x24d6;\n  t[\"gcircumflex\"] = 0x011d;\n  t[\"gcommaaccent\"] = 0x0123;\n  t[\"gdot\"] = 0x0121;\n  t[\"gdotaccent\"] = 0x0121;\n  t[\"gecyrillic\"] = 0x0433;\n  t[\"gehiragana\"] = 0x3052;\n  t[\"gekatakana\"] = 0x30b2;\n  t[\"geometricallyequal\"] = 0x2251;\n  t[\"gereshaccenthebrew\"] = 0x059c;\n  t[\"gereshhebrew\"] = 0x05f3;\n  t[\"gereshmuqdamhebrew\"] = 0x059d;\n  t[\"germandbls\"] = 0x00df;\n  t[\"gershayimaccenthebrew\"] = 0x059e;\n  t[\"gershayimhebrew\"] = 0x05f4;\n  t[\"getamark\"] = 0x3013;\n  t[\"ghabengali\"] = 0x0998;\n  t[\"ghadarmenian\"] = 0x0572;\n  t[\"ghadeva\"] = 0x0918;\n  t[\"ghagujarati\"] = 0x0a98;\n  t[\"ghagurmukhi\"] = 0x0a18;\n  t[\"ghainarabic\"] = 0x063a;\n  t[\"ghainfinalarabic\"] = 0xfece;\n  t[\"ghaininitialarabic\"] = 0xfecf;\n  t[\"ghainmedialarabic\"] = 0xfed0;\n  t[\"ghemiddlehookcyrillic\"] = 0x0495;\n  t[\"ghestrokecyrillic\"] = 0x0493;\n  t[\"gheupturncyrillic\"] = 0x0491;\n  t[\"ghhadeva\"] = 0x095a;\n  t[\"ghhagurmukhi\"] = 0x0a5a;\n  t[\"ghook\"] = 0x0260;\n  t[\"ghzsquare\"] = 0x3393;\n  t[\"gihiragana\"] = 0x304e;\n  t[\"gikatakana\"] = 0x30ae;\n  t[\"gimarmenian\"] = 0x0563;\n  t[\"gimel\"] = 0x05d2;\n  t[\"gimeldagesh\"] = 0xfb32;\n  t[\"gimeldageshhebrew\"] = 0xfb32;\n  t[\"gimelhebrew\"] = 0x05d2;\n  t[\"gjecyrillic\"] = 0x0453;\n  t[\"glottalinvertedstroke\"] = 0x01be;\n  t[\"glottalstop\"] = 0x0294;\n  t[\"glottalstopinverted\"] = 0x0296;\n  t[\"glottalstopmod\"] = 0x02c0;\n  t[\"glottalstopreversed\"] = 0x0295;\n  t[\"glottalstopreversedmod\"] = 0x02c1;\n  t[\"glottalstopreversedsuperior\"] = 0x02e4;\n  t[\"glottalstopstroke\"] = 0x02a1;\n  t[\"glottalstopstrokereversed\"] = 0x02a2;\n  t[\"gmacron\"] = 0x1e21;\n  t[\"gmonospace\"] = 0xff47;\n  t[\"gohiragana\"] = 0x3054;\n  t[\"gokatakana\"] = 0x30b4;\n  t[\"gparen\"] = 0x24a2;\n  t[\"gpasquare\"] = 0x33ac;\n  t[\"gradient\"] = 0x2207;\n  t[\"grave\"] = 0x0060;\n  t[\"gravebelowcmb\"] = 0x0316;\n  t[\"gravecmb\"] = 0x0300;\n  t[\"gravecomb\"] = 0x0300;\n  t[\"gravedeva\"] = 0x0953;\n  t[\"gravelowmod\"] = 0x02ce;\n  t[\"gravemonospace\"] = 0xff40;\n  t[\"gravetonecmb\"] = 0x0340;\n  t[\"greater\"] = 0x003e;\n  t[\"greaterequal\"] = 0x2265;\n  t[\"greaterequalorless\"] = 0x22db;\n  t[\"greatermonospace\"] = 0xff1e;\n  t[\"greaterorequivalent\"] = 0x2273;\n  t[\"greaterorless\"] = 0x2277;\n  t[\"greateroverequal\"] = 0x2267;\n  t[\"greatersmall\"] = 0xfe65;\n  t[\"gscript\"] = 0x0261;\n  t[\"gstroke\"] = 0x01e5;\n  t[\"guhiragana\"] = 0x3050;\n  t[\"guillemotleft\"] = 0x00ab;\n  t[\"guillemotright\"] = 0x00bb;\n  t[\"guilsinglleft\"] = 0x2039;\n  t[\"guilsinglright\"] = 0x203a;\n  t[\"gukatakana\"] = 0x30b0;\n  t[\"guramusquare\"] = 0x3318;\n  t[\"gysquare\"] = 0x33c9;\n  t[\"h\"] = 0x0068;\n  t[\"haabkhasiancyrillic\"] = 0x04a9;\n  t[\"haaltonearabic\"] = 0x06c1;\n  t[\"habengali\"] = 0x09b9;\n  t[\"hadescendercyrillic\"] = 0x04b3;\n  t[\"hadeva\"] = 0x0939;\n  t[\"hagujarati\"] = 0x0ab9;\n  t[\"hagurmukhi\"] = 0x0a39;\n  t[\"haharabic\"] = 0x062d;\n  t[\"hahfinalarabic\"] = 0xfea2;\n  t[\"hahinitialarabic\"] = 0xfea3;\n  t[\"hahiragana\"] = 0x306f;\n  t[\"hahmedialarabic\"] = 0xfea4;\n  t[\"haitusquare\"] = 0x332a;\n  t[\"hakatakana\"] = 0x30cf;\n  t[\"hakatakanahalfwidth\"] = 0xff8a;\n  t[\"halantgurmukhi\"] = 0x0a4d;\n  t[\"hamzaarabic\"] = 0x0621;\n  t[\"hamzalowarabic\"] = 0x0621;\n  t[\"hangulfiller\"] = 0x3164;\n  t[\"hardsigncyrillic\"] = 0x044a;\n  t[\"harpoonleftbarbup\"] = 0x21bc;\n  t[\"harpoonrightbarbup\"] = 0x21c0;\n  t[\"hasquare\"] = 0x33ca;\n  t[\"hatafpatah\"] = 0x05b2;\n  t[\"hatafpatah16\"] = 0x05b2;\n  t[\"hatafpatah23\"] = 0x05b2;\n  t[\"hatafpatah2f\"] = 0x05b2;\n  t[\"hatafpatahhebrew\"] = 0x05b2;\n  t[\"hatafpatahnarrowhebrew\"] = 0x05b2;\n  t[\"hatafpatahquarterhebrew\"] = 0x05b2;\n  t[\"hatafpatahwidehebrew\"] = 0x05b2;\n  t[\"hatafqamats\"] = 0x05b3;\n  t[\"hatafqamats1b\"] = 0x05b3;\n  t[\"hatafqamats28\"] = 0x05b3;\n  t[\"hatafqamats34\"] = 0x05b3;\n  t[\"hatafqamatshebrew\"] = 0x05b3;\n  t[\"hatafqamatsnarrowhebrew\"] = 0x05b3;\n  t[\"hatafqamatsquarterhebrew\"] = 0x05b3;\n  t[\"hatafqamatswidehebrew\"] = 0x05b3;\n  t[\"hatafsegol\"] = 0x05b1;\n  t[\"hatafsegol17\"] = 0x05b1;\n  t[\"hatafsegol24\"] = 0x05b1;\n  t[\"hatafsegol30\"] = 0x05b1;\n  t[\"hatafsegolhebrew\"] = 0x05b1;\n  t[\"hatafsegolnarrowhebrew\"] = 0x05b1;\n  t[\"hatafsegolquarterhebrew\"] = 0x05b1;\n  t[\"hatafsegolwidehebrew\"] = 0x05b1;\n  t[\"hbar\"] = 0x0127;\n  t[\"hbopomofo\"] = 0x310f;\n  t[\"hbrevebelow\"] = 0x1e2b;\n  t[\"hcedilla\"] = 0x1e29;\n  t[\"hcircle\"] = 0x24d7;\n  t[\"hcircumflex\"] = 0x0125;\n  t[\"hdieresis\"] = 0x1e27;\n  t[\"hdotaccent\"] = 0x1e23;\n  t[\"hdotbelow\"] = 0x1e25;\n  t[\"he\"] = 0x05d4;\n  t[\"heart\"] = 0x2665;\n  t[\"heartsuitblack\"] = 0x2665;\n  t[\"heartsuitwhite\"] = 0x2661;\n  t[\"hedagesh\"] = 0xfb34;\n  t[\"hedageshhebrew\"] = 0xfb34;\n  t[\"hehaltonearabic\"] = 0x06c1;\n  t[\"heharabic\"] = 0x0647;\n  t[\"hehebrew\"] = 0x05d4;\n  t[\"hehfinalaltonearabic\"] = 0xfba7;\n  t[\"hehfinalalttwoarabic\"] = 0xfeea;\n  t[\"hehfinalarabic\"] = 0xfeea;\n  t[\"hehhamzaabovefinalarabic\"] = 0xfba5;\n  t[\"hehhamzaaboveisolatedarabic\"] = 0xfba4;\n  t[\"hehinitialaltonearabic\"] = 0xfba8;\n  t[\"hehinitialarabic\"] = 0xfeeb;\n  t[\"hehiragana\"] = 0x3078;\n  t[\"hehmedialaltonearabic\"] = 0xfba9;\n  t[\"hehmedialarabic\"] = 0xfeec;\n  t[\"heiseierasquare\"] = 0x337b;\n  t[\"hekatakana\"] = 0x30d8;\n  t[\"hekatakanahalfwidth\"] = 0xff8d;\n  t[\"hekutaarusquare\"] = 0x3336;\n  t[\"henghook\"] = 0x0267;\n  t[\"herutusquare\"] = 0x3339;\n  t[\"het\"] = 0x05d7;\n  t[\"hethebrew\"] = 0x05d7;\n  t[\"hhook\"] = 0x0266;\n  t[\"hhooksuperior\"] = 0x02b1;\n  t[\"hieuhacirclekorean\"] = 0x327b;\n  t[\"hieuhaparenkorean\"] = 0x321b;\n  t[\"hieuhcirclekorean\"] = 0x326d;\n  t[\"hieuhkorean\"] = 0x314e;\n  t[\"hieuhparenkorean\"] = 0x320d;\n  t[\"hihiragana\"] = 0x3072;\n  t[\"hikatakana\"] = 0x30d2;\n  t[\"hikatakanahalfwidth\"] = 0xff8b;\n  t[\"hiriq\"] = 0x05b4;\n  t[\"hiriq14\"] = 0x05b4;\n  t[\"hiriq21\"] = 0x05b4;\n  t[\"hiriq2d\"] = 0x05b4;\n  t[\"hiriqhebrew\"] = 0x05b4;\n  t[\"hiriqnarrowhebrew\"] = 0x05b4;\n  t[\"hiriqquarterhebrew\"] = 0x05b4;\n  t[\"hiriqwidehebrew\"] = 0x05b4;\n  t[\"hlinebelow\"] = 0x1e96;\n  t[\"hmonospace\"] = 0xff48;\n  t[\"hoarmenian\"] = 0x0570;\n  t[\"hohipthai\"] = 0x0e2b;\n  t[\"hohiragana\"] = 0x307b;\n  t[\"hokatakana\"] = 0x30db;\n  t[\"hokatakanahalfwidth\"] = 0xff8e;\n  t[\"holam\"] = 0x05b9;\n  t[\"holam19\"] = 0x05b9;\n  t[\"holam26\"] = 0x05b9;\n  t[\"holam32\"] = 0x05b9;\n  t[\"holamhebrew\"] = 0x05b9;\n  t[\"holamnarrowhebrew\"] = 0x05b9;\n  t[\"holamquarterhebrew\"] = 0x05b9;\n  t[\"holamwidehebrew\"] = 0x05b9;\n  t[\"honokhukthai\"] = 0x0e2e;\n  t[\"hookabovecomb\"] = 0x0309;\n  t[\"hookcmb\"] = 0x0309;\n  t[\"hookpalatalizedbelowcmb\"] = 0x0321;\n  t[\"hookretroflexbelowcmb\"] = 0x0322;\n  t[\"hoonsquare\"] = 0x3342;\n  t[\"horicoptic\"] = 0x03e9;\n  t[\"horizontalbar\"] = 0x2015;\n  t[\"horncmb\"] = 0x031b;\n  t[\"hotsprings\"] = 0x2668;\n  t[\"house\"] = 0x2302;\n  t[\"hparen\"] = 0x24a3;\n  t[\"hsuperior\"] = 0x02b0;\n  t[\"hturned\"] = 0x0265;\n  t[\"huhiragana\"] = 0x3075;\n  t[\"huiitosquare\"] = 0x3333;\n  t[\"hukatakana\"] = 0x30d5;\n  t[\"hukatakanahalfwidth\"] = 0xff8c;\n  t[\"hungarumlaut\"] = 0x02dd;\n  t[\"hungarumlautcmb\"] = 0x030b;\n  t[\"hv\"] = 0x0195;\n  t[\"hyphen\"] = 0x002d;\n  t[\"hypheninferior\"] = 0xf6e5;\n  t[\"hyphenmonospace\"] = 0xff0d;\n  t[\"hyphensmall\"] = 0xfe63;\n  t[\"hyphensuperior\"] = 0xf6e6;\n  t[\"hyphentwo\"] = 0x2010;\n  t[\"i\"] = 0x0069;\n  t[\"iacute\"] = 0x00ed;\n  t[\"iacyrillic\"] = 0x044f;\n  t[\"ibengali\"] = 0x0987;\n  t[\"ibopomofo\"] = 0x3127;\n  t[\"ibreve\"] = 0x012d;\n  t[\"icaron\"] = 0x01d0;\n  t[\"icircle\"] = 0x24d8;\n  t[\"icircumflex\"] = 0x00ee;\n  t[\"icyrillic\"] = 0x0456;\n  t[\"idblgrave\"] = 0x0209;\n  t[\"ideographearthcircle\"] = 0x328f;\n  t[\"ideographfirecircle\"] = 0x328b;\n  t[\"ideographicallianceparen\"] = 0x323f;\n  t[\"ideographiccallparen\"] = 0x323a;\n  t[\"ideographiccentrecircle\"] = 0x32a5;\n  t[\"ideographicclose\"] = 0x3006;\n  t[\"ideographiccomma\"] = 0x3001;\n  t[\"ideographiccommaleft\"] = 0xff64;\n  t[\"ideographiccongratulationparen\"] = 0x3237;\n  t[\"ideographiccorrectcircle\"] = 0x32a3;\n  t[\"ideographicearthparen\"] = 0x322f;\n  t[\"ideographicenterpriseparen\"] = 0x323d;\n  t[\"ideographicexcellentcircle\"] = 0x329d;\n  t[\"ideographicfestivalparen\"] = 0x3240;\n  t[\"ideographicfinancialcircle\"] = 0x3296;\n  t[\"ideographicfinancialparen\"] = 0x3236;\n  t[\"ideographicfireparen\"] = 0x322b;\n  t[\"ideographichaveparen\"] = 0x3232;\n  t[\"ideographichighcircle\"] = 0x32a4;\n  t[\"ideographiciterationmark\"] = 0x3005;\n  t[\"ideographiclaborcircle\"] = 0x3298;\n  t[\"ideographiclaborparen\"] = 0x3238;\n  t[\"ideographicleftcircle\"] = 0x32a7;\n  t[\"ideographiclowcircle\"] = 0x32a6;\n  t[\"ideographicmedicinecircle\"] = 0x32a9;\n  t[\"ideographicmetalparen\"] = 0x322e;\n  t[\"ideographicmoonparen\"] = 0x322a;\n  t[\"ideographicnameparen\"] = 0x3234;\n  t[\"ideographicperiod\"] = 0x3002;\n  t[\"ideographicprintcircle\"] = 0x329e;\n  t[\"ideographicreachparen\"] = 0x3243;\n  t[\"ideographicrepresentparen\"] = 0x3239;\n  t[\"ideographicresourceparen\"] = 0x323e;\n  t[\"ideographicrightcircle\"] = 0x32a8;\n  t[\"ideographicsecretcircle\"] = 0x3299;\n  t[\"ideographicselfparen\"] = 0x3242;\n  t[\"ideographicsocietyparen\"] = 0x3233;\n  t[\"ideographicspace\"] = 0x3000;\n  t[\"ideographicspecialparen\"] = 0x3235;\n  t[\"ideographicstockparen\"] = 0x3231;\n  t[\"ideographicstudyparen\"] = 0x323b;\n  t[\"ideographicsunparen\"] = 0x3230;\n  t[\"ideographicsuperviseparen\"] = 0x323c;\n  t[\"ideographicwaterparen\"] = 0x322c;\n  t[\"ideographicwoodparen\"] = 0x322d;\n  t[\"ideographiczero\"] = 0x3007;\n  t[\"ideographmetalcircle\"] = 0x328e;\n  t[\"ideographmooncircle\"] = 0x328a;\n  t[\"ideographnamecircle\"] = 0x3294;\n  t[\"ideographsuncircle\"] = 0x3290;\n  t[\"ideographwatercircle\"] = 0x328c;\n  t[\"ideographwoodcircle\"] = 0x328d;\n  t[\"ideva\"] = 0x0907;\n  t[\"idieresis\"] = 0x00ef;\n  t[\"idieresisacute\"] = 0x1e2f;\n  t[\"idieresiscyrillic\"] = 0x04e5;\n  t[\"idotbelow\"] = 0x1ecb;\n  t[\"iebrevecyrillic\"] = 0x04d7;\n  t[\"iecyrillic\"] = 0x0435;\n  t[\"ieungacirclekorean\"] = 0x3275;\n  t[\"ieungaparenkorean\"] = 0x3215;\n  t[\"ieungcirclekorean\"] = 0x3267;\n  t[\"ieungkorean\"] = 0x3147;\n  t[\"ieungparenkorean\"] = 0x3207;\n  t[\"igrave\"] = 0x00ec;\n  t[\"igujarati\"] = 0x0a87;\n  t[\"igurmukhi\"] = 0x0a07;\n  t[\"ihiragana\"] = 0x3044;\n  t[\"ihookabove\"] = 0x1ec9;\n  t[\"iibengali\"] = 0x0988;\n  t[\"iicyrillic\"] = 0x0438;\n  t[\"iideva\"] = 0x0908;\n  t[\"iigujarati\"] = 0x0a88;\n  t[\"iigurmukhi\"] = 0x0a08;\n  t[\"iimatragurmukhi\"] = 0x0a40;\n  t[\"iinvertedbreve\"] = 0x020b;\n  t[\"iishortcyrillic\"] = 0x0439;\n  t[\"iivowelsignbengali\"] = 0x09c0;\n  t[\"iivowelsigndeva\"] = 0x0940;\n  t[\"iivowelsigngujarati\"] = 0x0ac0;\n  t[\"ij\"] = 0x0133;\n  t[\"ikatakana\"] = 0x30a4;\n  t[\"ikatakanahalfwidth\"] = 0xff72;\n  t[\"ikorean\"] = 0x3163;\n  t[\"ilde\"] = 0x02dc;\n  t[\"iluyhebrew\"] = 0x05ac;\n  t[\"imacron\"] = 0x012b;\n  t[\"imacroncyrillic\"] = 0x04e3;\n  t[\"imageorapproximatelyequal\"] = 0x2253;\n  t[\"imatragurmukhi\"] = 0x0a3f;\n  t[\"imonospace\"] = 0xff49;\n  t[\"increment\"] = 0x2206;\n  t[\"infinity\"] = 0x221e;\n  t[\"iniarmenian\"] = 0x056b;\n  t[\"integral\"] = 0x222b;\n  t[\"integralbottom\"] = 0x2321;\n  t[\"integralbt\"] = 0x2321;\n  t[\"integralex\"] = 0xf8f5;\n  t[\"integraltop\"] = 0x2320;\n  t[\"integraltp\"] = 0x2320;\n  t[\"intersection\"] = 0x2229;\n  t[\"intisquare\"] = 0x3305;\n  t[\"invbullet\"] = 0x25d8;\n  t[\"invcircle\"] = 0x25d9;\n  t[\"invsmileface\"] = 0x263b;\n  t[\"iocyrillic\"] = 0x0451;\n  t[\"iogonek\"] = 0x012f;\n  t[\"iota\"] = 0x03b9;\n  t[\"iotadieresis\"] = 0x03ca;\n  t[\"iotadieresistonos\"] = 0x0390;\n  t[\"iotalatin\"] = 0x0269;\n  t[\"iotatonos\"] = 0x03af;\n  t[\"iparen\"] = 0x24a4;\n  t[\"irigurmukhi\"] = 0x0a72;\n  t[\"ismallhiragana\"] = 0x3043;\n  t[\"ismallkatakana\"] = 0x30a3;\n  t[\"ismallkatakanahalfwidth\"] = 0xff68;\n  t[\"issharbengali\"] = 0x09fa;\n  t[\"istroke\"] = 0x0268;\n  t[\"isuperior\"] = 0xf6ed;\n  t[\"iterationhiragana\"] = 0x309d;\n  t[\"iterationkatakana\"] = 0x30fd;\n  t[\"itilde\"] = 0x0129;\n  t[\"itildebelow\"] = 0x1e2d;\n  t[\"iubopomofo\"] = 0x3129;\n  t[\"iucyrillic\"] = 0x044e;\n  t[\"ivowelsignbengali\"] = 0x09bf;\n  t[\"ivowelsigndeva\"] = 0x093f;\n  t[\"ivowelsigngujarati\"] = 0x0abf;\n  t[\"izhitsacyrillic\"] = 0x0475;\n  t[\"izhitsadblgravecyrillic\"] = 0x0477;\n  t[\"j\"] = 0x006a;\n  t[\"jaarmenian\"] = 0x0571;\n  t[\"jabengali\"] = 0x099c;\n  t[\"jadeva\"] = 0x091c;\n  t[\"jagujarati\"] = 0x0a9c;\n  t[\"jagurmukhi\"] = 0x0a1c;\n  t[\"jbopomofo\"] = 0x3110;\n  t[\"jcaron\"] = 0x01f0;\n  t[\"jcircle\"] = 0x24d9;\n  t[\"jcircumflex\"] = 0x0135;\n  t[\"jcrossedtail\"] = 0x029d;\n  t[\"jdotlessstroke\"] = 0x025f;\n  t[\"jecyrillic\"] = 0x0458;\n  t[\"jeemarabic\"] = 0x062c;\n  t[\"jeemfinalarabic\"] = 0xfe9e;\n  t[\"jeeminitialarabic\"] = 0xfe9f;\n  t[\"jeemmedialarabic\"] = 0xfea0;\n  t[\"jeharabic\"] = 0x0698;\n  t[\"jehfinalarabic\"] = 0xfb8b;\n  t[\"jhabengali\"] = 0x099d;\n  t[\"jhadeva\"] = 0x091d;\n  t[\"jhagujarati\"] = 0x0a9d;\n  t[\"jhagurmukhi\"] = 0x0a1d;\n  t[\"jheharmenian\"] = 0x057b;\n  t[\"jis\"] = 0x3004;\n  t[\"jmonospace\"] = 0xff4a;\n  t[\"jparen\"] = 0x24a5;\n  t[\"jsuperior\"] = 0x02b2;\n  t[\"k\"] = 0x006b;\n  t[\"kabashkircyrillic\"] = 0x04a1;\n  t[\"kabengali\"] = 0x0995;\n  t[\"kacute\"] = 0x1e31;\n  t[\"kacyrillic\"] = 0x043a;\n  t[\"kadescendercyrillic\"] = 0x049b;\n  t[\"kadeva\"] = 0x0915;\n  t[\"kaf\"] = 0x05db;\n  t[\"kafarabic\"] = 0x0643;\n  t[\"kafdagesh\"] = 0xfb3b;\n  t[\"kafdageshhebrew\"] = 0xfb3b;\n  t[\"kaffinalarabic\"] = 0xfeda;\n  t[\"kafhebrew\"] = 0x05db;\n  t[\"kafinitialarabic\"] = 0xfedb;\n  t[\"kafmedialarabic\"] = 0xfedc;\n  t[\"kafrafehebrew\"] = 0xfb4d;\n  t[\"kagujarati\"] = 0x0a95;\n  t[\"kagurmukhi\"] = 0x0a15;\n  t[\"kahiragana\"] = 0x304b;\n  t[\"kahookcyrillic\"] = 0x04c4;\n  t[\"kakatakana\"] = 0x30ab;\n  t[\"kakatakanahalfwidth\"] = 0xff76;\n  t[\"kappa\"] = 0x03ba;\n  t[\"kappasymbolgreek\"] = 0x03f0;\n  t[\"kapyeounmieumkorean\"] = 0x3171;\n  t[\"kapyeounphieuphkorean\"] = 0x3184;\n  t[\"kapyeounpieupkorean\"] = 0x3178;\n  t[\"kapyeounssangpieupkorean\"] = 0x3179;\n  t[\"karoriisquare\"] = 0x330d;\n  t[\"kashidaautoarabic\"] = 0x0640;\n  t[\"kashidaautonosidebearingarabic\"] = 0x0640;\n  t[\"kasmallkatakana\"] = 0x30f5;\n  t[\"kasquare\"] = 0x3384;\n  t[\"kasraarabic\"] = 0x0650;\n  t[\"kasratanarabic\"] = 0x064d;\n  t[\"kastrokecyrillic\"] = 0x049f;\n  t[\"katahiraprolongmarkhalfwidth\"] = 0xff70;\n  t[\"kaverticalstrokecyrillic\"] = 0x049d;\n  t[\"kbopomofo\"] = 0x310e;\n  t[\"kcalsquare\"] = 0x3389;\n  t[\"kcaron\"] = 0x01e9;\n  t[\"kcedilla\"] = 0x0137;\n  t[\"kcircle\"] = 0x24da;\n  t[\"kcommaaccent\"] = 0x0137;\n  t[\"kdotbelow\"] = 0x1e33;\n  t[\"keharmenian\"] = 0x0584;\n  t[\"kehiragana\"] = 0x3051;\n  t[\"kekatakana\"] = 0x30b1;\n  t[\"kekatakanahalfwidth\"] = 0xff79;\n  t[\"kenarmenian\"] = 0x056f;\n  t[\"kesmallkatakana\"] = 0x30f6;\n  t[\"kgreenlandic\"] = 0x0138;\n  t[\"khabengali\"] = 0x0996;\n  t[\"khacyrillic\"] = 0x0445;\n  t[\"khadeva\"] = 0x0916;\n  t[\"khagujarati\"] = 0x0a96;\n  t[\"khagurmukhi\"] = 0x0a16;\n  t[\"khaharabic\"] = 0x062e;\n  t[\"khahfinalarabic\"] = 0xfea6;\n  t[\"khahinitialarabic\"] = 0xfea7;\n  t[\"khahmedialarabic\"] = 0xfea8;\n  t[\"kheicoptic\"] = 0x03e7;\n  t[\"khhadeva\"] = 0x0959;\n  t[\"khhagurmukhi\"] = 0x0a59;\n  t[\"khieukhacirclekorean\"] = 0x3278;\n  t[\"khieukhaparenkorean\"] = 0x3218;\n  t[\"khieukhcirclekorean\"] = 0x326a;\n  t[\"khieukhkorean\"] = 0x314b;\n  t[\"khieukhparenkorean\"] = 0x320a;\n  t[\"khokhaithai\"] = 0x0e02;\n  t[\"khokhonthai\"] = 0x0e05;\n  t[\"khokhuatthai\"] = 0x0e03;\n  t[\"khokhwaithai\"] = 0x0e04;\n  t[\"khomutthai\"] = 0x0e5b;\n  t[\"khook\"] = 0x0199;\n  t[\"khorakhangthai\"] = 0x0e06;\n  t[\"khzsquare\"] = 0x3391;\n  t[\"kihiragana\"] = 0x304d;\n  t[\"kikatakana\"] = 0x30ad;\n  t[\"kikatakanahalfwidth\"] = 0xff77;\n  t[\"kiroguramusquare\"] = 0x3315;\n  t[\"kiromeetorusquare\"] = 0x3316;\n  t[\"kirosquare\"] = 0x3314;\n  t[\"kiyeokacirclekorean\"] = 0x326e;\n  t[\"kiyeokaparenkorean\"] = 0x320e;\n  t[\"kiyeokcirclekorean\"] = 0x3260;\n  t[\"kiyeokkorean\"] = 0x3131;\n  t[\"kiyeokparenkorean\"] = 0x3200;\n  t[\"kiyeoksioskorean\"] = 0x3133;\n  t[\"kjecyrillic\"] = 0x045c;\n  t[\"klinebelow\"] = 0x1e35;\n  t[\"klsquare\"] = 0x3398;\n  t[\"kmcubedsquare\"] = 0x33a6;\n  t[\"kmonospace\"] = 0xff4b;\n  t[\"kmsquaredsquare\"] = 0x33a2;\n  t[\"kohiragana\"] = 0x3053;\n  t[\"kohmsquare\"] = 0x33c0;\n  t[\"kokaithai\"] = 0x0e01;\n  t[\"kokatakana\"] = 0x30b3;\n  t[\"kokatakanahalfwidth\"] = 0xff7a;\n  t[\"kooposquare\"] = 0x331e;\n  t[\"koppacyrillic\"] = 0x0481;\n  t[\"koreanstandardsymbol\"] = 0x327f;\n  t[\"koroniscmb\"] = 0x0343;\n  t[\"kparen\"] = 0x24a6;\n  t[\"kpasquare\"] = 0x33aa;\n  t[\"ksicyrillic\"] = 0x046f;\n  t[\"ktsquare\"] = 0x33cf;\n  t[\"kturned\"] = 0x029e;\n  t[\"kuhiragana\"] = 0x304f;\n  t[\"kukatakana\"] = 0x30af;\n  t[\"kukatakanahalfwidth\"] = 0xff78;\n  t[\"kvsquare\"] = 0x33b8;\n  t[\"kwsquare\"] = 0x33be;\n  t[\"l\"] = 0x006c;\n  t[\"labengali\"] = 0x09b2;\n  t[\"lacute\"] = 0x013a;\n  t[\"ladeva\"] = 0x0932;\n  t[\"lagujarati\"] = 0x0ab2;\n  t[\"lagurmukhi\"] = 0x0a32;\n  t[\"lakkhangyaothai\"] = 0x0e45;\n  t[\"lamaleffinalarabic\"] = 0xfefc;\n  t[\"lamalefhamzaabovefinalarabic\"] = 0xfef8;\n  t[\"lamalefhamzaaboveisolatedarabic\"] = 0xfef7;\n  t[\"lamalefhamzabelowfinalarabic\"] = 0xfefa;\n  t[\"lamalefhamzabelowisolatedarabic\"] = 0xfef9;\n  t[\"lamalefisolatedarabic\"] = 0xfefb;\n  t[\"lamalefmaddaabovefinalarabic\"] = 0xfef6;\n  t[\"lamalefmaddaaboveisolatedarabic\"] = 0xfef5;\n  t[\"lamarabic\"] = 0x0644;\n  t[\"lambda\"] = 0x03bb;\n  t[\"lambdastroke\"] = 0x019b;\n  t[\"lamed\"] = 0x05dc;\n  t[\"lameddagesh\"] = 0xfb3c;\n  t[\"lameddageshhebrew\"] = 0xfb3c;\n  t[\"lamedhebrew\"] = 0x05dc;\n  t[\"lamfinalarabic\"] = 0xfede;\n  t[\"lamhahinitialarabic\"] = 0xfcca;\n  t[\"laminitialarabic\"] = 0xfedf;\n  t[\"lamjeeminitialarabic\"] = 0xfcc9;\n  t[\"lamkhahinitialarabic\"] = 0xfccb;\n  t[\"lamlamhehisolatedarabic\"] = 0xfdf2;\n  t[\"lammedialarabic\"] = 0xfee0;\n  t[\"lammeemhahinitialarabic\"] = 0xfd88;\n  t[\"lammeeminitialarabic\"] = 0xfccc;\n  t[\"largecircle\"] = 0x25ef;\n  t[\"lbar\"] = 0x019a;\n  t[\"lbelt\"] = 0x026c;\n  t[\"lbopomofo\"] = 0x310c;\n  t[\"lcaron\"] = 0x013e;\n  t[\"lcedilla\"] = 0x013c;\n  t[\"lcircle\"] = 0x24db;\n  t[\"lcircumflexbelow\"] = 0x1e3d;\n  t[\"lcommaaccent\"] = 0x013c;\n  t[\"ldot\"] = 0x0140;\n  t[\"ldotaccent\"] = 0x0140;\n  t[\"ldotbelow\"] = 0x1e37;\n  t[\"ldotbelowmacron\"] = 0x1e39;\n  t[\"leftangleabovecmb\"] = 0x031a;\n  t[\"lefttackbelowcmb\"] = 0x0318;\n  t[\"less\"] = 0x003c;\n  t[\"lessequal\"] = 0x2264;\n  t[\"lessequalorgreater\"] = 0x22da;\n  t[\"lessmonospace\"] = 0xff1c;\n  t[\"lessorequivalent\"] = 0x2272;\n  t[\"lessorgreater\"] = 0x2276;\n  t[\"lessoverequal\"] = 0x2266;\n  t[\"lesssmall\"] = 0xfe64;\n  t[\"lezh\"] = 0x026e;\n  t[\"lfblock\"] = 0x258c;\n  t[\"lhookretroflex\"] = 0x026d;\n  t[\"lira\"] = 0x20a4;\n  t[\"liwnarmenian\"] = 0x056c;\n  t[\"lj\"] = 0x01c9;\n  t[\"ljecyrillic\"] = 0x0459;\n  t[\"ll\"] = 0xf6c0;\n  t[\"lladeva\"] = 0x0933;\n  t[\"llagujarati\"] = 0x0ab3;\n  t[\"llinebelow\"] = 0x1e3b;\n  t[\"llladeva\"] = 0x0934;\n  t[\"llvocalicbengali\"] = 0x09e1;\n  t[\"llvocalicdeva\"] = 0x0961;\n  t[\"llvocalicvowelsignbengali\"] = 0x09e3;\n  t[\"llvocalicvowelsigndeva\"] = 0x0963;\n  t[\"lmiddletilde\"] = 0x026b;\n  t[\"lmonospace\"] = 0xff4c;\n  t[\"lmsquare\"] = 0x33d0;\n  t[\"lochulathai\"] = 0x0e2c;\n  t[\"logicaland\"] = 0x2227;\n  t[\"logicalnot\"] = 0x00ac;\n  t[\"logicalnotreversed\"] = 0x2310;\n  t[\"logicalor\"] = 0x2228;\n  t[\"lolingthai\"] = 0x0e25;\n  t[\"longs\"] = 0x017f;\n  t[\"lowlinecenterline\"] = 0xfe4e;\n  t[\"lowlinecmb\"] = 0x0332;\n  t[\"lowlinedashed\"] = 0xfe4d;\n  t[\"lozenge\"] = 0x25ca;\n  t[\"lparen\"] = 0x24a7;\n  t[\"lslash\"] = 0x0142;\n  t[\"lsquare\"] = 0x2113;\n  t[\"lsuperior\"] = 0xf6ee;\n  t[\"ltshade\"] = 0x2591;\n  t[\"luthai\"] = 0x0e26;\n  t[\"lvocalicbengali\"] = 0x098c;\n  t[\"lvocalicdeva\"] = 0x090c;\n  t[\"lvocalicvowelsignbengali\"] = 0x09e2;\n  t[\"lvocalicvowelsigndeva\"] = 0x0962;\n  t[\"lxsquare\"] = 0x33d3;\n  t[\"m\"] = 0x006d;\n  t[\"mabengali\"] = 0x09ae;\n  t[\"macron\"] = 0x00af;\n  t[\"macronbelowcmb\"] = 0x0331;\n  t[\"macroncmb\"] = 0x0304;\n  t[\"macronlowmod\"] = 0x02cd;\n  t[\"macronmonospace\"] = 0xffe3;\n  t[\"macute\"] = 0x1e3f;\n  t[\"madeva\"] = 0x092e;\n  t[\"magujarati\"] = 0x0aae;\n  t[\"magurmukhi\"] = 0x0a2e;\n  t[\"mahapakhhebrew\"] = 0x05a4;\n  t[\"mahapakhlefthebrew\"] = 0x05a4;\n  t[\"mahiragana\"] = 0x307e;\n  t[\"maichattawalowleftthai\"] = 0xf895;\n  t[\"maichattawalowrightthai\"] = 0xf894;\n  t[\"maichattawathai\"] = 0x0e4b;\n  t[\"maichattawaupperleftthai\"] = 0xf893;\n  t[\"maieklowleftthai\"] = 0xf88c;\n  t[\"maieklowrightthai\"] = 0xf88b;\n  t[\"maiekthai\"] = 0x0e48;\n  t[\"maiekupperleftthai\"] = 0xf88a;\n  t[\"maihanakatleftthai\"] = 0xf884;\n  t[\"maihanakatthai\"] = 0x0e31;\n  t[\"maitaikhuleftthai\"] = 0xf889;\n  t[\"maitaikhuthai\"] = 0x0e47;\n  t[\"maitholowleftthai\"] = 0xf88f;\n  t[\"maitholowrightthai\"] = 0xf88e;\n  t[\"maithothai\"] = 0x0e49;\n  t[\"maithoupperleftthai\"] = 0xf88d;\n  t[\"maitrilowleftthai\"] = 0xf892;\n  t[\"maitrilowrightthai\"] = 0xf891;\n  t[\"maitrithai\"] = 0x0e4a;\n  t[\"maitriupperleftthai\"] = 0xf890;\n  t[\"maiyamokthai\"] = 0x0e46;\n  t[\"makatakana\"] = 0x30de;\n  t[\"makatakanahalfwidth\"] = 0xff8f;\n  t[\"male\"] = 0x2642;\n  t[\"mansyonsquare\"] = 0x3347;\n  t[\"maqafhebrew\"] = 0x05be;\n  t[\"mars\"] = 0x2642;\n  t[\"masoracirclehebrew\"] = 0x05af;\n  t[\"masquare\"] = 0x3383;\n  t[\"mbopomofo\"] = 0x3107;\n  t[\"mbsquare\"] = 0x33d4;\n  t[\"mcircle\"] = 0x24dc;\n  t[\"mcubedsquare\"] = 0x33a5;\n  t[\"mdotaccent\"] = 0x1e41;\n  t[\"mdotbelow\"] = 0x1e43;\n  t[\"meemarabic\"] = 0x0645;\n  t[\"meemfinalarabic\"] = 0xfee2;\n  t[\"meeminitialarabic\"] = 0xfee3;\n  t[\"meemmedialarabic\"] = 0xfee4;\n  t[\"meemmeeminitialarabic\"] = 0xfcd1;\n  t[\"meemmeemisolatedarabic\"] = 0xfc48;\n  t[\"meetorusquare\"] = 0x334d;\n  t[\"mehiragana\"] = 0x3081;\n  t[\"meizierasquare\"] = 0x337e;\n  t[\"mekatakana\"] = 0x30e1;\n  t[\"mekatakanahalfwidth\"] = 0xff92;\n  t[\"mem\"] = 0x05de;\n  t[\"memdagesh\"] = 0xfb3e;\n  t[\"memdageshhebrew\"] = 0xfb3e;\n  t[\"memhebrew\"] = 0x05de;\n  t[\"menarmenian\"] = 0x0574;\n  t[\"merkhahebrew\"] = 0x05a5;\n  t[\"merkhakefulahebrew\"] = 0x05a6;\n  t[\"merkhakefulalefthebrew\"] = 0x05a6;\n  t[\"merkhalefthebrew\"] = 0x05a5;\n  t[\"mhook\"] = 0x0271;\n  t[\"mhzsquare\"] = 0x3392;\n  t[\"middledotkatakanahalfwidth\"] = 0xff65;\n  t[\"middot\"] = 0x00b7;\n  t[\"mieumacirclekorean\"] = 0x3272;\n  t[\"mieumaparenkorean\"] = 0x3212;\n  t[\"mieumcirclekorean\"] = 0x3264;\n  t[\"mieumkorean\"] = 0x3141;\n  t[\"mieumpansioskorean\"] = 0x3170;\n  t[\"mieumparenkorean\"] = 0x3204;\n  t[\"mieumpieupkorean\"] = 0x316e;\n  t[\"mieumsioskorean\"] = 0x316f;\n  t[\"mihiragana\"] = 0x307f;\n  t[\"mikatakana\"] = 0x30df;\n  t[\"mikatakanahalfwidth\"] = 0xff90;\n  t[\"minus\"] = 0x2212;\n  t[\"minusbelowcmb\"] = 0x0320;\n  t[\"minuscircle\"] = 0x2296;\n  t[\"minusmod\"] = 0x02d7;\n  t[\"minusplus\"] = 0x2213;\n  t[\"minute\"] = 0x2032;\n  t[\"miribaarusquare\"] = 0x334a;\n  t[\"mirisquare\"] = 0x3349;\n  t[\"mlonglegturned\"] = 0x0270;\n  t[\"mlsquare\"] = 0x3396;\n  t[\"mmcubedsquare\"] = 0x33a3;\n  t[\"mmonospace\"] = 0xff4d;\n  t[\"mmsquaredsquare\"] = 0x339f;\n  t[\"mohiragana\"] = 0x3082;\n  t[\"mohmsquare\"] = 0x33c1;\n  t[\"mokatakana\"] = 0x30e2;\n  t[\"mokatakanahalfwidth\"] = 0xff93;\n  t[\"molsquare\"] = 0x33d6;\n  t[\"momathai\"] = 0x0e21;\n  t[\"moverssquare\"] = 0x33a7;\n  t[\"moverssquaredsquare\"] = 0x33a8;\n  t[\"mparen\"] = 0x24a8;\n  t[\"mpasquare\"] = 0x33ab;\n  t[\"mssquare\"] = 0x33b3;\n  t[\"msuperior\"] = 0xf6ef;\n  t[\"mturned\"] = 0x026f;\n  t[\"mu\"] = 0x00b5;\n  t[\"mu1\"] = 0x00b5;\n  t[\"muasquare\"] = 0x3382;\n  t[\"muchgreater\"] = 0x226b;\n  t[\"muchless\"] = 0x226a;\n  t[\"mufsquare\"] = 0x338c;\n  t[\"mugreek\"] = 0x03bc;\n  t[\"mugsquare\"] = 0x338d;\n  t[\"muhiragana\"] = 0x3080;\n  t[\"mukatakana\"] = 0x30e0;\n  t[\"mukatakanahalfwidth\"] = 0xff91;\n  t[\"mulsquare\"] = 0x3395;\n  t[\"multiply\"] = 0x00d7;\n  t[\"mumsquare\"] = 0x339b;\n  t[\"munahhebrew\"] = 0x05a3;\n  t[\"munahlefthebrew\"] = 0x05a3;\n  t[\"musicalnote\"] = 0x266a;\n  t[\"musicalnotedbl\"] = 0x266b;\n  t[\"musicflatsign\"] = 0x266d;\n  t[\"musicsharpsign\"] = 0x266f;\n  t[\"mussquare\"] = 0x33b2;\n  t[\"muvsquare\"] = 0x33b6;\n  t[\"muwsquare\"] = 0x33bc;\n  t[\"mvmegasquare\"] = 0x33b9;\n  t[\"mvsquare\"] = 0x33b7;\n  t[\"mwmegasquare\"] = 0x33bf;\n  t[\"mwsquare\"] = 0x33bd;\n  t[\"n\"] = 0x006e;\n  t[\"nabengali\"] = 0x09a8;\n  t[\"nabla\"] = 0x2207;\n  t[\"nacute\"] = 0x0144;\n  t[\"nadeva\"] = 0x0928;\n  t[\"nagujarati\"] = 0x0aa8;\n  t[\"nagurmukhi\"] = 0x0a28;\n  t[\"nahiragana\"] = 0x306a;\n  t[\"nakatakana\"] = 0x30ca;\n  t[\"nakatakanahalfwidth\"] = 0xff85;\n  t[\"napostrophe\"] = 0x0149;\n  t[\"nasquare\"] = 0x3381;\n  t[\"nbopomofo\"] = 0x310b;\n  t[\"nbspace\"] = 0x00a0;\n  t[\"ncaron\"] = 0x0148;\n  t[\"ncedilla\"] = 0x0146;\n  t[\"ncircle\"] = 0x24dd;\n  t[\"ncircumflexbelow\"] = 0x1e4b;\n  t[\"ncommaaccent\"] = 0x0146;\n  t[\"ndotaccent\"] = 0x1e45;\n  t[\"ndotbelow\"] = 0x1e47;\n  t[\"nehiragana\"] = 0x306d;\n  t[\"nekatakana\"] = 0x30cd;\n  t[\"nekatakanahalfwidth\"] = 0xff88;\n  t[\"newsheqelsign\"] = 0x20aa;\n  t[\"nfsquare\"] = 0x338b;\n  t[\"ngabengali\"] = 0x0999;\n  t[\"ngadeva\"] = 0x0919;\n  t[\"ngagujarati\"] = 0x0a99;\n  t[\"ngagurmukhi\"] = 0x0a19;\n  t[\"ngonguthai\"] = 0x0e07;\n  t[\"nhiragana\"] = 0x3093;\n  t[\"nhookleft\"] = 0x0272;\n  t[\"nhookretroflex\"] = 0x0273;\n  t[\"nieunacirclekorean\"] = 0x326f;\n  t[\"nieunaparenkorean\"] = 0x320f;\n  t[\"nieuncieuckorean\"] = 0x3135;\n  t[\"nieuncirclekorean\"] = 0x3261;\n  t[\"nieunhieuhkorean\"] = 0x3136;\n  t[\"nieunkorean\"] = 0x3134;\n  t[\"nieunpansioskorean\"] = 0x3168;\n  t[\"nieunparenkorean\"] = 0x3201;\n  t[\"nieunsioskorean\"] = 0x3167;\n  t[\"nieuntikeutkorean\"] = 0x3166;\n  t[\"nihiragana\"] = 0x306b;\n  t[\"nikatakana\"] = 0x30cb;\n  t[\"nikatakanahalfwidth\"] = 0xff86;\n  t[\"nikhahitleftthai\"] = 0xf899;\n  t[\"nikhahitthai\"] = 0x0e4d;\n  t[\"nine\"] = 0x0039;\n  t[\"ninearabic\"] = 0x0669;\n  t[\"ninebengali\"] = 0x09ef;\n  t[\"ninecircle\"] = 0x2468;\n  t[\"ninecircleinversesansserif\"] = 0x2792;\n  t[\"ninedeva\"] = 0x096f;\n  t[\"ninegujarati\"] = 0x0aef;\n  t[\"ninegurmukhi\"] = 0x0a6f;\n  t[\"ninehackarabic\"] = 0x0669;\n  t[\"ninehangzhou\"] = 0x3029;\n  t[\"nineideographicparen\"] = 0x3228;\n  t[\"nineinferior\"] = 0x2089;\n  t[\"ninemonospace\"] = 0xff19;\n  t[\"nineoldstyle\"] = 0xf739;\n  t[\"nineparen\"] = 0x247c;\n  t[\"nineperiod\"] = 0x2490;\n  t[\"ninepersian\"] = 0x06f9;\n  t[\"nineroman\"] = 0x2178;\n  t[\"ninesuperior\"] = 0x2079;\n  t[\"nineteencircle\"] = 0x2472;\n  t[\"nineteenparen\"] = 0x2486;\n  t[\"nineteenperiod\"] = 0x249a;\n  t[\"ninethai\"] = 0x0e59;\n  t[\"nj\"] = 0x01cc;\n  t[\"njecyrillic\"] = 0x045a;\n  t[\"nkatakana\"] = 0x30f3;\n  t[\"nkatakanahalfwidth\"] = 0xff9d;\n  t[\"nlegrightlong\"] = 0x019e;\n  t[\"nlinebelow\"] = 0x1e49;\n  t[\"nmonospace\"] = 0xff4e;\n  t[\"nmsquare\"] = 0x339a;\n  t[\"nnabengali\"] = 0x09a3;\n  t[\"nnadeva\"] = 0x0923;\n  t[\"nnagujarati\"] = 0x0aa3;\n  t[\"nnagurmukhi\"] = 0x0a23;\n  t[\"nnnadeva\"] = 0x0929;\n  t[\"nohiragana\"] = 0x306e;\n  t[\"nokatakana\"] = 0x30ce;\n  t[\"nokatakanahalfwidth\"] = 0xff89;\n  t[\"nonbreakingspace\"] = 0x00a0;\n  t[\"nonenthai\"] = 0x0e13;\n  t[\"nonuthai\"] = 0x0e19;\n  t[\"noonarabic\"] = 0x0646;\n  t[\"noonfinalarabic\"] = 0xfee6;\n  t[\"noonghunnaarabic\"] = 0x06ba;\n  t[\"noonghunnafinalarabic\"] = 0xfb9f;\n  t[\"nooninitialarabic\"] = 0xfee7;\n  t[\"noonjeeminitialarabic\"] = 0xfcd2;\n  t[\"noonjeemisolatedarabic\"] = 0xfc4b;\n  t[\"noonmedialarabic\"] = 0xfee8;\n  t[\"noonmeeminitialarabic\"] = 0xfcd5;\n  t[\"noonmeemisolatedarabic\"] = 0xfc4e;\n  t[\"noonnoonfinalarabic\"] = 0xfc8d;\n  t[\"notcontains\"] = 0x220c;\n  t[\"notelement\"] = 0x2209;\n  t[\"notelementof\"] = 0x2209;\n  t[\"notequal\"] = 0x2260;\n  t[\"notgreater\"] = 0x226f;\n  t[\"notgreaternorequal\"] = 0x2271;\n  t[\"notgreaternorless\"] = 0x2279;\n  t[\"notidentical\"] = 0x2262;\n  t[\"notless\"] = 0x226e;\n  t[\"notlessnorequal\"] = 0x2270;\n  t[\"notparallel\"] = 0x2226;\n  t[\"notprecedes\"] = 0x2280;\n  t[\"notsubset\"] = 0x2284;\n  t[\"notsucceeds\"] = 0x2281;\n  t[\"notsuperset\"] = 0x2285;\n  t[\"nowarmenian\"] = 0x0576;\n  t[\"nparen\"] = 0x24a9;\n  t[\"nssquare\"] = 0x33b1;\n  t[\"nsuperior\"] = 0x207f;\n  t[\"ntilde\"] = 0x00f1;\n  t[\"nu\"] = 0x03bd;\n  t[\"nuhiragana\"] = 0x306c;\n  t[\"nukatakana\"] = 0x30cc;\n  t[\"nukatakanahalfwidth\"] = 0xff87;\n  t[\"nuktabengali\"] = 0x09bc;\n  t[\"nuktadeva\"] = 0x093c;\n  t[\"nuktagujarati\"] = 0x0abc;\n  t[\"nuktagurmukhi\"] = 0x0a3c;\n  t[\"numbersign\"] = 0x0023;\n  t[\"numbersignmonospace\"] = 0xff03;\n  t[\"numbersignsmall\"] = 0xfe5f;\n  t[\"numeralsigngreek\"] = 0x0374;\n  t[\"numeralsignlowergreek\"] = 0x0375;\n  t[\"numero\"] = 0x2116;\n  t[\"nun\"] = 0x05e0;\n  t[\"nundagesh\"] = 0xfb40;\n  t[\"nundageshhebrew\"] = 0xfb40;\n  t[\"nunhebrew\"] = 0x05e0;\n  t[\"nvsquare\"] = 0x33b5;\n  t[\"nwsquare\"] = 0x33bb;\n  t[\"nyabengali\"] = 0x099e;\n  t[\"nyadeva\"] = 0x091e;\n  t[\"nyagujarati\"] = 0x0a9e;\n  t[\"nyagurmukhi\"] = 0x0a1e;\n  t[\"o\"] = 0x006f;\n  t[\"oacute\"] = 0x00f3;\n  t[\"oangthai\"] = 0x0e2d;\n  t[\"obarred\"] = 0x0275;\n  t[\"obarredcyrillic\"] = 0x04e9;\n  t[\"obarreddieresiscyrillic\"] = 0x04eb;\n  t[\"obengali\"] = 0x0993;\n  t[\"obopomofo\"] = 0x311b;\n  t[\"obreve\"] = 0x014f;\n  t[\"ocandradeva\"] = 0x0911;\n  t[\"ocandragujarati\"] = 0x0a91;\n  t[\"ocandravowelsigndeva\"] = 0x0949;\n  t[\"ocandravowelsigngujarati\"] = 0x0ac9;\n  t[\"ocaron\"] = 0x01d2;\n  t[\"ocircle\"] = 0x24de;\n  t[\"ocircumflex\"] = 0x00f4;\n  t[\"ocircumflexacute\"] = 0x1ed1;\n  t[\"ocircumflexdotbelow\"] = 0x1ed9;\n  t[\"ocircumflexgrave\"] = 0x1ed3;\n  t[\"ocircumflexhookabove\"] = 0x1ed5;\n  t[\"ocircumflextilde\"] = 0x1ed7;\n  t[\"ocyrillic\"] = 0x043e;\n  t[\"odblacute\"] = 0x0151;\n  t[\"odblgrave\"] = 0x020d;\n  t[\"odeva\"] = 0x0913;\n  t[\"odieresis\"] = 0x00f6;\n  t[\"odieresiscyrillic\"] = 0x04e7;\n  t[\"odotbelow\"] = 0x1ecd;\n  t[\"oe\"] = 0x0153;\n  t[\"oekorean\"] = 0x315a;\n  t[\"ogonek\"] = 0x02db;\n  t[\"ogonekcmb\"] = 0x0328;\n  t[\"ograve\"] = 0x00f2;\n  t[\"ogujarati\"] = 0x0a93;\n  t[\"oharmenian\"] = 0x0585;\n  t[\"ohiragana\"] = 0x304a;\n  t[\"ohookabove\"] = 0x1ecf;\n  t[\"ohorn\"] = 0x01a1;\n  t[\"ohornacute\"] = 0x1edb;\n  t[\"ohorndotbelow\"] = 0x1ee3;\n  t[\"ohorngrave\"] = 0x1edd;\n  t[\"ohornhookabove\"] = 0x1edf;\n  t[\"ohorntilde\"] = 0x1ee1;\n  t[\"ohungarumlaut\"] = 0x0151;\n  t[\"oi\"] = 0x01a3;\n  t[\"oinvertedbreve\"] = 0x020f;\n  t[\"okatakana\"] = 0x30aa;\n  t[\"okatakanahalfwidth\"] = 0xff75;\n  t[\"okorean\"] = 0x3157;\n  t[\"olehebrew\"] = 0x05ab;\n  t[\"omacron\"] = 0x014d;\n  t[\"omacronacute\"] = 0x1e53;\n  t[\"omacrongrave\"] = 0x1e51;\n  t[\"omdeva\"] = 0x0950;\n  t[\"omega\"] = 0x03c9;\n  t[\"omega1\"] = 0x03d6;\n  t[\"omegacyrillic\"] = 0x0461;\n  t[\"omegalatinclosed\"] = 0x0277;\n  t[\"omegaroundcyrillic\"] = 0x047b;\n  t[\"omegatitlocyrillic\"] = 0x047d;\n  t[\"omegatonos\"] = 0x03ce;\n  t[\"omgujarati\"] = 0x0ad0;\n  t[\"omicron\"] = 0x03bf;\n  t[\"omicrontonos\"] = 0x03cc;\n  t[\"omonospace\"] = 0xff4f;\n  t[\"one\"] = 0x0031;\n  t[\"onearabic\"] = 0x0661;\n  t[\"onebengali\"] = 0x09e7;\n  t[\"onecircle\"] = 0x2460;\n  t[\"onecircleinversesansserif\"] = 0x278a;\n  t[\"onedeva\"] = 0x0967;\n  t[\"onedotenleader\"] = 0x2024;\n  t[\"oneeighth\"] = 0x215b;\n  t[\"onefitted\"] = 0xf6dc;\n  t[\"onegujarati\"] = 0x0ae7;\n  t[\"onegurmukhi\"] = 0x0a67;\n  t[\"onehackarabic\"] = 0x0661;\n  t[\"onehalf\"] = 0x00bd;\n  t[\"onehangzhou\"] = 0x3021;\n  t[\"oneideographicparen\"] = 0x3220;\n  t[\"oneinferior\"] = 0x2081;\n  t[\"onemonospace\"] = 0xff11;\n  t[\"onenumeratorbengali\"] = 0x09f4;\n  t[\"oneoldstyle\"] = 0xf731;\n  t[\"oneparen\"] = 0x2474;\n  t[\"oneperiod\"] = 0x2488;\n  t[\"onepersian\"] = 0x06f1;\n  t[\"onequarter\"] = 0x00bc;\n  t[\"oneroman\"] = 0x2170;\n  t[\"onesuperior\"] = 0x00b9;\n  t[\"onethai\"] = 0x0e51;\n  t[\"onethird\"] = 0x2153;\n  t[\"oogonek\"] = 0x01eb;\n  t[\"oogonekmacron\"] = 0x01ed;\n  t[\"oogurmukhi\"] = 0x0a13;\n  t[\"oomatragurmukhi\"] = 0x0a4b;\n  t[\"oopen\"] = 0x0254;\n  t[\"oparen\"] = 0x24aa;\n  t[\"openbullet\"] = 0x25e6;\n  t[\"option\"] = 0x2325;\n  t[\"ordfeminine\"] = 0x00aa;\n  t[\"ordmasculine\"] = 0x00ba;\n  t[\"orthogonal\"] = 0x221f;\n  t[\"oshortdeva\"] = 0x0912;\n  t[\"oshortvowelsigndeva\"] = 0x094a;\n  t[\"oslash\"] = 0x00f8;\n  t[\"oslashacute\"] = 0x01ff;\n  t[\"osmallhiragana\"] = 0x3049;\n  t[\"osmallkatakana\"] = 0x30a9;\n  t[\"osmallkatakanahalfwidth\"] = 0xff6b;\n  t[\"ostrokeacute\"] = 0x01ff;\n  t[\"osuperior\"] = 0xf6f0;\n  t[\"otcyrillic\"] = 0x047f;\n  t[\"otilde\"] = 0x00f5;\n  t[\"otildeacute\"] = 0x1e4d;\n  t[\"otildedieresis\"] = 0x1e4f;\n  t[\"oubopomofo\"] = 0x3121;\n  t[\"overline\"] = 0x203e;\n  t[\"overlinecenterline\"] = 0xfe4a;\n  t[\"overlinecmb\"] = 0x0305;\n  t[\"overlinedashed\"] = 0xfe49;\n  t[\"overlinedblwavy\"] = 0xfe4c;\n  t[\"overlinewavy\"] = 0xfe4b;\n  t[\"overscore\"] = 0x00af;\n  t[\"ovowelsignbengali\"] = 0x09cb;\n  t[\"ovowelsigndeva\"] = 0x094b;\n  t[\"ovowelsigngujarati\"] = 0x0acb;\n  t[\"p\"] = 0x0070;\n  t[\"paampssquare\"] = 0x3380;\n  t[\"paasentosquare\"] = 0x332b;\n  t[\"pabengali\"] = 0x09aa;\n  t[\"pacute\"] = 0x1e55;\n  t[\"padeva\"] = 0x092a;\n  t[\"pagedown\"] = 0x21df;\n  t[\"pageup\"] = 0x21de;\n  t[\"pagujarati\"] = 0x0aaa;\n  t[\"pagurmukhi\"] = 0x0a2a;\n  t[\"pahiragana\"] = 0x3071;\n  t[\"paiyannoithai\"] = 0x0e2f;\n  t[\"pakatakana\"] = 0x30d1;\n  t[\"palatalizationcyrilliccmb\"] = 0x0484;\n  t[\"palochkacyrillic\"] = 0x04c0;\n  t[\"pansioskorean\"] = 0x317f;\n  t[\"paragraph\"] = 0x00b6;\n  t[\"parallel\"] = 0x2225;\n  t[\"parenleft\"] = 0x0028;\n  t[\"parenleftaltonearabic\"] = 0xfd3e;\n  t[\"parenleftbt\"] = 0xf8ed;\n  t[\"parenleftex\"] = 0xf8ec;\n  t[\"parenleftinferior\"] = 0x208d;\n  t[\"parenleftmonospace\"] = 0xff08;\n  t[\"parenleftsmall\"] = 0xfe59;\n  t[\"parenleftsuperior\"] = 0x207d;\n  t[\"parenlefttp\"] = 0xf8eb;\n  t[\"parenleftvertical\"] = 0xfe35;\n  t[\"parenright\"] = 0x0029;\n  t[\"parenrightaltonearabic\"] = 0xfd3f;\n  t[\"parenrightbt\"] = 0xf8f8;\n  t[\"parenrightex\"] = 0xf8f7;\n  t[\"parenrightinferior\"] = 0x208e;\n  t[\"parenrightmonospace\"] = 0xff09;\n  t[\"parenrightsmall\"] = 0xfe5a;\n  t[\"parenrightsuperior\"] = 0x207e;\n  t[\"parenrighttp\"] = 0xf8f6;\n  t[\"parenrightvertical\"] = 0xfe36;\n  t[\"partialdiff\"] = 0x2202;\n  t[\"paseqhebrew\"] = 0x05c0;\n  t[\"pashtahebrew\"] = 0x0599;\n  t[\"pasquare\"] = 0x33a9;\n  t[\"patah\"] = 0x05b7;\n  t[\"patah11\"] = 0x05b7;\n  t[\"patah1d\"] = 0x05b7;\n  t[\"patah2a\"] = 0x05b7;\n  t[\"patahhebrew\"] = 0x05b7;\n  t[\"patahnarrowhebrew\"] = 0x05b7;\n  t[\"patahquarterhebrew\"] = 0x05b7;\n  t[\"patahwidehebrew\"] = 0x05b7;\n  t[\"pazerhebrew\"] = 0x05a1;\n  t[\"pbopomofo\"] = 0x3106;\n  t[\"pcircle\"] = 0x24df;\n  t[\"pdotaccent\"] = 0x1e57;\n  t[\"pe\"] = 0x05e4;\n  t[\"pecyrillic\"] = 0x043f;\n  t[\"pedagesh\"] = 0xfb44;\n  t[\"pedageshhebrew\"] = 0xfb44;\n  t[\"peezisquare\"] = 0x333b;\n  t[\"pefinaldageshhebrew\"] = 0xfb43;\n  t[\"peharabic\"] = 0x067e;\n  t[\"peharmenian\"] = 0x057a;\n  t[\"pehebrew\"] = 0x05e4;\n  t[\"pehfinalarabic\"] = 0xfb57;\n  t[\"pehinitialarabic\"] = 0xfb58;\n  t[\"pehiragana\"] = 0x307a;\n  t[\"pehmedialarabic\"] = 0xfb59;\n  t[\"pekatakana\"] = 0x30da;\n  t[\"pemiddlehookcyrillic\"] = 0x04a7;\n  t[\"perafehebrew\"] = 0xfb4e;\n  t[\"percent\"] = 0x0025;\n  t[\"percentarabic\"] = 0x066a;\n  t[\"percentmonospace\"] = 0xff05;\n  t[\"percentsmall\"] = 0xfe6a;\n  t[\"period\"] = 0x002e;\n  t[\"periodarmenian\"] = 0x0589;\n  t[\"periodcentered\"] = 0x00b7;\n  t[\"periodhalfwidth\"] = 0xff61;\n  t[\"periodinferior\"] = 0xf6e7;\n  t[\"periodmonospace\"] = 0xff0e;\n  t[\"periodsmall\"] = 0xfe52;\n  t[\"periodsuperior\"] = 0xf6e8;\n  t[\"perispomenigreekcmb\"] = 0x0342;\n  t[\"perpendicular\"] = 0x22a5;\n  t[\"perthousand\"] = 0x2030;\n  t[\"peseta\"] = 0x20a7;\n  t[\"pfsquare\"] = 0x338a;\n  t[\"phabengali\"] = 0x09ab;\n  t[\"phadeva\"] = 0x092b;\n  t[\"phagujarati\"] = 0x0aab;\n  t[\"phagurmukhi\"] = 0x0a2b;\n  t[\"phi\"] = 0x03c6;\n  t[\"phi1\"] = 0x03d5;\n  t[\"phieuphacirclekorean\"] = 0x327a;\n  t[\"phieuphaparenkorean\"] = 0x321a;\n  t[\"phieuphcirclekorean\"] = 0x326c;\n  t[\"phieuphkorean\"] = 0x314d;\n  t[\"phieuphparenkorean\"] = 0x320c;\n  t[\"philatin\"] = 0x0278;\n  t[\"phinthuthai\"] = 0x0e3a;\n  t[\"phisymbolgreek\"] = 0x03d5;\n  t[\"phook\"] = 0x01a5;\n  t[\"phophanthai\"] = 0x0e1e;\n  t[\"phophungthai\"] = 0x0e1c;\n  t[\"phosamphaothai\"] = 0x0e20;\n  t[\"pi\"] = 0x03c0;\n  t[\"pieupacirclekorean\"] = 0x3273;\n  t[\"pieupaparenkorean\"] = 0x3213;\n  t[\"pieupcieuckorean\"] = 0x3176;\n  t[\"pieupcirclekorean\"] = 0x3265;\n  t[\"pieupkiyeokkorean\"] = 0x3172;\n  t[\"pieupkorean\"] = 0x3142;\n  t[\"pieupparenkorean\"] = 0x3205;\n  t[\"pieupsioskiyeokkorean\"] = 0x3174;\n  t[\"pieupsioskorean\"] = 0x3144;\n  t[\"pieupsiostikeutkorean\"] = 0x3175;\n  t[\"pieupthieuthkorean\"] = 0x3177;\n  t[\"pieuptikeutkorean\"] = 0x3173;\n  t[\"pihiragana\"] = 0x3074;\n  t[\"pikatakana\"] = 0x30d4;\n  t[\"pisymbolgreek\"] = 0x03d6;\n  t[\"piwrarmenian\"] = 0x0583;\n  t[\"plus\"] = 0x002b;\n  t[\"plusbelowcmb\"] = 0x031f;\n  t[\"pluscircle\"] = 0x2295;\n  t[\"plusminus\"] = 0x00b1;\n  t[\"plusmod\"] = 0x02d6;\n  t[\"plusmonospace\"] = 0xff0b;\n  t[\"plussmall\"] = 0xfe62;\n  t[\"plussuperior\"] = 0x207a;\n  t[\"pmonospace\"] = 0xff50;\n  t[\"pmsquare\"] = 0x33d8;\n  t[\"pohiragana\"] = 0x307d;\n  t[\"pointingindexdownwhite\"] = 0x261f;\n  t[\"pointingindexleftwhite\"] = 0x261c;\n  t[\"pointingindexrightwhite\"] = 0x261e;\n  t[\"pointingindexupwhite\"] = 0x261d;\n  t[\"pokatakana\"] = 0x30dd;\n  t[\"poplathai\"] = 0x0e1b;\n  t[\"postalmark\"] = 0x3012;\n  t[\"postalmarkface\"] = 0x3020;\n  t[\"pparen\"] = 0x24ab;\n  t[\"precedes\"] = 0x227a;\n  t[\"prescription\"] = 0x211e;\n  t[\"primemod\"] = 0x02b9;\n  t[\"primereversed\"] = 0x2035;\n  t[\"product\"] = 0x220f;\n  t[\"projective\"] = 0x2305;\n  t[\"prolongedkana\"] = 0x30fc;\n  t[\"propellor\"] = 0x2318;\n  t[\"propersubset\"] = 0x2282;\n  t[\"propersuperset\"] = 0x2283;\n  t[\"proportion\"] = 0x2237;\n  t[\"proportional\"] = 0x221d;\n  t[\"psi\"] = 0x03c8;\n  t[\"psicyrillic\"] = 0x0471;\n  t[\"psilipneumatacyrilliccmb\"] = 0x0486;\n  t[\"pssquare\"] = 0x33b0;\n  t[\"puhiragana\"] = 0x3077;\n  t[\"pukatakana\"] = 0x30d7;\n  t[\"pvsquare\"] = 0x33b4;\n  t[\"pwsquare\"] = 0x33ba;\n  t[\"q\"] = 0x0071;\n  t[\"qadeva\"] = 0x0958;\n  t[\"qadmahebrew\"] = 0x05a8;\n  t[\"qafarabic\"] = 0x0642;\n  t[\"qaffinalarabic\"] = 0xfed6;\n  t[\"qafinitialarabic\"] = 0xfed7;\n  t[\"qafmedialarabic\"] = 0xfed8;\n  t[\"qamats\"] = 0x05b8;\n  t[\"qamats10\"] = 0x05b8;\n  t[\"qamats1a\"] = 0x05b8;\n  t[\"qamats1c\"] = 0x05b8;\n  t[\"qamats27\"] = 0x05b8;\n  t[\"qamats29\"] = 0x05b8;\n  t[\"qamats33\"] = 0x05b8;\n  t[\"qamatsde\"] = 0x05b8;\n  t[\"qamatshebrew\"] = 0x05b8;\n  t[\"qamatsnarrowhebrew\"] = 0x05b8;\n  t[\"qamatsqatanhebrew\"] = 0x05b8;\n  t[\"qamatsqatannarrowhebrew\"] = 0x05b8;\n  t[\"qamatsqatanquarterhebrew\"] = 0x05b8;\n  t[\"qamatsqatanwidehebrew\"] = 0x05b8;\n  t[\"qamatsquarterhebrew\"] = 0x05b8;\n  t[\"qamatswidehebrew\"] = 0x05b8;\n  t[\"qarneyparahebrew\"] = 0x059f;\n  t[\"qbopomofo\"] = 0x3111;\n  t[\"qcircle\"] = 0x24e0;\n  t[\"qhook\"] = 0x02a0;\n  t[\"qmonospace\"] = 0xff51;\n  t[\"qof\"] = 0x05e7;\n  t[\"qofdagesh\"] = 0xfb47;\n  t[\"qofdageshhebrew\"] = 0xfb47;\n  t[\"qofhebrew\"] = 0x05e7;\n  t[\"qparen\"] = 0x24ac;\n  t[\"quarternote\"] = 0x2669;\n  t[\"qubuts\"] = 0x05bb;\n  t[\"qubuts18\"] = 0x05bb;\n  t[\"qubuts25\"] = 0x05bb;\n  t[\"qubuts31\"] = 0x05bb;\n  t[\"qubutshebrew\"] = 0x05bb;\n  t[\"qubutsnarrowhebrew\"] = 0x05bb;\n  t[\"qubutsquarterhebrew\"] = 0x05bb;\n  t[\"qubutswidehebrew\"] = 0x05bb;\n  t[\"question\"] = 0x003f;\n  t[\"questionarabic\"] = 0x061f;\n  t[\"questionarmenian\"] = 0x055e;\n  t[\"questiondown\"] = 0x00bf;\n  t[\"questiondownsmall\"] = 0xf7bf;\n  t[\"questiongreek\"] = 0x037e;\n  t[\"questionmonospace\"] = 0xff1f;\n  t[\"questionsmall\"] = 0xf73f;\n  t[\"quotedbl\"] = 0x0022;\n  t[\"quotedblbase\"] = 0x201e;\n  t[\"quotedblleft\"] = 0x201c;\n  t[\"quotedblmonospace\"] = 0xff02;\n  t[\"quotedblprime\"] = 0x301e;\n  t[\"quotedblprimereversed\"] = 0x301d;\n  t[\"quotedblright\"] = 0x201d;\n  t[\"quoteleft\"] = 0x2018;\n  t[\"quoteleftreversed\"] = 0x201b;\n  t[\"quotereversed\"] = 0x201b;\n  t[\"quoteright\"] = 0x2019;\n  t[\"quoterightn\"] = 0x0149;\n  t[\"quotesinglbase\"] = 0x201a;\n  t[\"quotesingle\"] = 0x0027;\n  t[\"quotesinglemonospace\"] = 0xff07;\n  t[\"r\"] = 0x0072;\n  t[\"raarmenian\"] = 0x057c;\n  t[\"rabengali\"] = 0x09b0;\n  t[\"racute\"] = 0x0155;\n  t[\"radeva\"] = 0x0930;\n  t[\"radical\"] = 0x221a;\n  t[\"radicalex\"] = 0xf8e5;\n  t[\"radoverssquare\"] = 0x33ae;\n  t[\"radoverssquaredsquare\"] = 0x33af;\n  t[\"radsquare\"] = 0x33ad;\n  t[\"rafe\"] = 0x05bf;\n  t[\"rafehebrew\"] = 0x05bf;\n  t[\"ragujarati\"] = 0x0ab0;\n  t[\"ragurmukhi\"] = 0x0a30;\n  t[\"rahiragana\"] = 0x3089;\n  t[\"rakatakana\"] = 0x30e9;\n  t[\"rakatakanahalfwidth\"] = 0xff97;\n  t[\"ralowerdiagonalbengali\"] = 0x09f1;\n  t[\"ramiddlediagonalbengali\"] = 0x09f0;\n  t[\"ramshorn\"] = 0x0264;\n  t[\"ratio\"] = 0x2236;\n  t[\"rbopomofo\"] = 0x3116;\n  t[\"rcaron\"] = 0x0159;\n  t[\"rcedilla\"] = 0x0157;\n  t[\"rcircle\"] = 0x24e1;\n  t[\"rcommaaccent\"] = 0x0157;\n  t[\"rdblgrave\"] = 0x0211;\n  t[\"rdotaccent\"] = 0x1e59;\n  t[\"rdotbelow\"] = 0x1e5b;\n  t[\"rdotbelowmacron\"] = 0x1e5d;\n  t[\"referencemark\"] = 0x203b;\n  t[\"reflexsubset\"] = 0x2286;\n  t[\"reflexsuperset\"] = 0x2287;\n  t[\"registered\"] = 0x00ae;\n  t[\"registersans\"] = 0xf8e8;\n  t[\"registerserif\"] = 0xf6da;\n  t[\"reharabic\"] = 0x0631;\n  t[\"reharmenian\"] = 0x0580;\n  t[\"rehfinalarabic\"] = 0xfeae;\n  t[\"rehiragana\"] = 0x308c;\n  t[\"rekatakana\"] = 0x30ec;\n  t[\"rekatakanahalfwidth\"] = 0xff9a;\n  t[\"resh\"] = 0x05e8;\n  t[\"reshdageshhebrew\"] = 0xfb48;\n  t[\"reshhebrew\"] = 0x05e8;\n  t[\"reversedtilde\"] = 0x223d;\n  t[\"reviahebrew\"] = 0x0597;\n  t[\"reviamugrashhebrew\"] = 0x0597;\n  t[\"revlogicalnot\"] = 0x2310;\n  t[\"rfishhook\"] = 0x027e;\n  t[\"rfishhookreversed\"] = 0x027f;\n  t[\"rhabengali\"] = 0x09dd;\n  t[\"rhadeva\"] = 0x095d;\n  t[\"rho\"] = 0x03c1;\n  t[\"rhook\"] = 0x027d;\n  t[\"rhookturned\"] = 0x027b;\n  t[\"rhookturnedsuperior\"] = 0x02b5;\n  t[\"rhosymbolgreek\"] = 0x03f1;\n  t[\"rhotichookmod\"] = 0x02de;\n  t[\"rieulacirclekorean\"] = 0x3271;\n  t[\"rieulaparenkorean\"] = 0x3211;\n  t[\"rieulcirclekorean\"] = 0x3263;\n  t[\"rieulhieuhkorean\"] = 0x3140;\n  t[\"rieulkiyeokkorean\"] = 0x313a;\n  t[\"rieulkiyeoksioskorean\"] = 0x3169;\n  t[\"rieulkorean\"] = 0x3139;\n  t[\"rieulmieumkorean\"] = 0x313b;\n  t[\"rieulpansioskorean\"] = 0x316c;\n  t[\"rieulparenkorean\"] = 0x3203;\n  t[\"rieulphieuphkorean\"] = 0x313f;\n  t[\"rieulpieupkorean\"] = 0x313c;\n  t[\"rieulpieupsioskorean\"] = 0x316b;\n  t[\"rieulsioskorean\"] = 0x313d;\n  t[\"rieulthieuthkorean\"] = 0x313e;\n  t[\"rieultikeutkorean\"] = 0x316a;\n  t[\"rieulyeorinhieuhkorean\"] = 0x316d;\n  t[\"rightangle\"] = 0x221f;\n  t[\"righttackbelowcmb\"] = 0x0319;\n  t[\"righttriangle\"] = 0x22bf;\n  t[\"rihiragana\"] = 0x308a;\n  t[\"rikatakana\"] = 0x30ea;\n  t[\"rikatakanahalfwidth\"] = 0xff98;\n  t[\"ring\"] = 0x02da;\n  t[\"ringbelowcmb\"] = 0x0325;\n  t[\"ringcmb\"] = 0x030a;\n  t[\"ringhalfleft\"] = 0x02bf;\n  t[\"ringhalfleftarmenian\"] = 0x0559;\n  t[\"ringhalfleftbelowcmb\"] = 0x031c;\n  t[\"ringhalfleftcentered\"] = 0x02d3;\n  t[\"ringhalfright\"] = 0x02be;\n  t[\"ringhalfrightbelowcmb\"] = 0x0339;\n  t[\"ringhalfrightcentered\"] = 0x02d2;\n  t[\"rinvertedbreve\"] = 0x0213;\n  t[\"rittorusquare\"] = 0x3351;\n  t[\"rlinebelow\"] = 0x1e5f;\n  t[\"rlongleg\"] = 0x027c;\n  t[\"rlonglegturned\"] = 0x027a;\n  t[\"rmonospace\"] = 0xff52;\n  t[\"rohiragana\"] = 0x308d;\n  t[\"rokatakana\"] = 0x30ed;\n  t[\"rokatakanahalfwidth\"] = 0xff9b;\n  t[\"roruathai\"] = 0x0e23;\n  t[\"rparen\"] = 0x24ad;\n  t[\"rrabengali\"] = 0x09dc;\n  t[\"rradeva\"] = 0x0931;\n  t[\"rragurmukhi\"] = 0x0a5c;\n  t[\"rreharabic\"] = 0x0691;\n  t[\"rrehfinalarabic\"] = 0xfb8d;\n  t[\"rrvocalicbengali\"] = 0x09e0;\n  t[\"rrvocalicdeva\"] = 0x0960;\n  t[\"rrvocalicgujarati\"] = 0x0ae0;\n  t[\"rrvocalicvowelsignbengali\"] = 0x09c4;\n  t[\"rrvocalicvowelsigndeva\"] = 0x0944;\n  t[\"rrvocalicvowelsigngujarati\"] = 0x0ac4;\n  t[\"rsuperior\"] = 0xf6f1;\n  t[\"rtblock\"] = 0x2590;\n  t[\"rturned\"] = 0x0279;\n  t[\"rturnedsuperior\"] = 0x02b4;\n  t[\"ruhiragana\"] = 0x308b;\n  t[\"rukatakana\"] = 0x30eb;\n  t[\"rukatakanahalfwidth\"] = 0xff99;\n  t[\"rupeemarkbengali\"] = 0x09f2;\n  t[\"rupeesignbengali\"] = 0x09f3;\n  t[\"rupiah\"] = 0xf6dd;\n  t[\"ruthai\"] = 0x0e24;\n  t[\"rvocalicbengali\"] = 0x098b;\n  t[\"rvocalicdeva\"] = 0x090b;\n  t[\"rvocalicgujarati\"] = 0x0a8b;\n  t[\"rvocalicvowelsignbengali\"] = 0x09c3;\n  t[\"rvocalicvowelsigndeva\"] = 0x0943;\n  t[\"rvocalicvowelsigngujarati\"] = 0x0ac3;\n  t[\"s\"] = 0x0073;\n  t[\"sabengali\"] = 0x09b8;\n  t[\"sacute\"] = 0x015b;\n  t[\"sacutedotaccent\"] = 0x1e65;\n  t[\"sadarabic\"] = 0x0635;\n  t[\"sadeva\"] = 0x0938;\n  t[\"sadfinalarabic\"] = 0xfeba;\n  t[\"sadinitialarabic\"] = 0xfebb;\n  t[\"sadmedialarabic\"] = 0xfebc;\n  t[\"sagujarati\"] = 0x0ab8;\n  t[\"sagurmukhi\"] = 0x0a38;\n  t[\"sahiragana\"] = 0x3055;\n  t[\"sakatakana\"] = 0x30b5;\n  t[\"sakatakanahalfwidth\"] = 0xff7b;\n  t[\"sallallahoualayhewasallamarabic\"] = 0xfdfa;\n  t[\"samekh\"] = 0x05e1;\n  t[\"samekhdagesh\"] = 0xfb41;\n  t[\"samekhdageshhebrew\"] = 0xfb41;\n  t[\"samekhhebrew\"] = 0x05e1;\n  t[\"saraaathai\"] = 0x0e32;\n  t[\"saraaethai\"] = 0x0e41;\n  t[\"saraaimaimalaithai\"] = 0x0e44;\n  t[\"saraaimaimuanthai\"] = 0x0e43;\n  t[\"saraamthai\"] = 0x0e33;\n  t[\"saraathai\"] = 0x0e30;\n  t[\"saraethai\"] = 0x0e40;\n  t[\"saraiileftthai\"] = 0xf886;\n  t[\"saraiithai\"] = 0x0e35;\n  t[\"saraileftthai\"] = 0xf885;\n  t[\"saraithai\"] = 0x0e34;\n  t[\"saraothai\"] = 0x0e42;\n  t[\"saraueeleftthai\"] = 0xf888;\n  t[\"saraueethai\"] = 0x0e37;\n  t[\"saraueleftthai\"] = 0xf887;\n  t[\"sarauethai\"] = 0x0e36;\n  t[\"sarauthai\"] = 0x0e38;\n  t[\"sarauuthai\"] = 0x0e39;\n  t[\"sbopomofo\"] = 0x3119;\n  t[\"scaron\"] = 0x0161;\n  t[\"scarondotaccent\"] = 0x1e67;\n  t[\"scedilla\"] = 0x015f;\n  t[\"schwa\"] = 0x0259;\n  t[\"schwacyrillic\"] = 0x04d9;\n  t[\"schwadieresiscyrillic\"] = 0x04db;\n  t[\"schwahook\"] = 0x025a;\n  t[\"scircle\"] = 0x24e2;\n  t[\"scircumflex\"] = 0x015d;\n  t[\"scommaaccent\"] = 0x0219;\n  t[\"sdotaccent\"] = 0x1e61;\n  t[\"sdotbelow\"] = 0x1e63;\n  t[\"sdotbelowdotaccent\"] = 0x1e69;\n  t[\"seagullbelowcmb\"] = 0x033c;\n  t[\"second\"] = 0x2033;\n  t[\"secondtonechinese\"] = 0x02ca;\n  t[\"section\"] = 0x00a7;\n  t[\"seenarabic\"] = 0x0633;\n  t[\"seenfinalarabic\"] = 0xfeb2;\n  t[\"seeninitialarabic\"] = 0xfeb3;\n  t[\"seenmedialarabic\"] = 0xfeb4;\n  t[\"segol\"] = 0x05b6;\n  t[\"segol13\"] = 0x05b6;\n  t[\"segol1f\"] = 0x05b6;\n  t[\"segol2c\"] = 0x05b6;\n  t[\"segolhebrew\"] = 0x05b6;\n  t[\"segolnarrowhebrew\"] = 0x05b6;\n  t[\"segolquarterhebrew\"] = 0x05b6;\n  t[\"segoltahebrew\"] = 0x0592;\n  t[\"segolwidehebrew\"] = 0x05b6;\n  t[\"seharmenian\"] = 0x057d;\n  t[\"sehiragana\"] = 0x305b;\n  t[\"sekatakana\"] = 0x30bb;\n  t[\"sekatakanahalfwidth\"] = 0xff7e;\n  t[\"semicolon\"] = 0x003b;\n  t[\"semicolonarabic\"] = 0x061b;\n  t[\"semicolonmonospace\"] = 0xff1b;\n  t[\"semicolonsmall\"] = 0xfe54;\n  t[\"semivoicedmarkkana\"] = 0x309c;\n  t[\"semivoicedmarkkanahalfwidth\"] = 0xff9f;\n  t[\"sentisquare\"] = 0x3322;\n  t[\"sentosquare\"] = 0x3323;\n  t[\"seven\"] = 0x0037;\n  t[\"sevenarabic\"] = 0x0667;\n  t[\"sevenbengali\"] = 0x09ed;\n  t[\"sevencircle\"] = 0x2466;\n  t[\"sevencircleinversesansserif\"] = 0x2790;\n  t[\"sevendeva\"] = 0x096d;\n  t[\"seveneighths\"] = 0x215e;\n  t[\"sevengujarati\"] = 0x0aed;\n  t[\"sevengurmukhi\"] = 0x0a6d;\n  t[\"sevenhackarabic\"] = 0x0667;\n  t[\"sevenhangzhou\"] = 0x3027;\n  t[\"sevenideographicparen\"] = 0x3226;\n  t[\"seveninferior\"] = 0x2087;\n  t[\"sevenmonospace\"] = 0xff17;\n  t[\"sevenoldstyle\"] = 0xf737;\n  t[\"sevenparen\"] = 0x247a;\n  t[\"sevenperiod\"] = 0x248e;\n  t[\"sevenpersian\"] = 0x06f7;\n  t[\"sevenroman\"] = 0x2176;\n  t[\"sevensuperior\"] = 0x2077;\n  t[\"seventeencircle\"] = 0x2470;\n  t[\"seventeenparen\"] = 0x2484;\n  t[\"seventeenperiod\"] = 0x2498;\n  t[\"seventhai\"] = 0x0e57;\n  t[\"sfthyphen\"] = 0x00ad;\n  t[\"shaarmenian\"] = 0x0577;\n  t[\"shabengali\"] = 0x09b6;\n  t[\"shacyrillic\"] = 0x0448;\n  t[\"shaddaarabic\"] = 0x0651;\n  t[\"shaddadammaarabic\"] = 0xfc61;\n  t[\"shaddadammatanarabic\"] = 0xfc5e;\n  t[\"shaddafathaarabic\"] = 0xfc60;\n  t[\"shaddakasraarabic\"] = 0xfc62;\n  t[\"shaddakasratanarabic\"] = 0xfc5f;\n  t[\"shade\"] = 0x2592;\n  t[\"shadedark\"] = 0x2593;\n  t[\"shadelight\"] = 0x2591;\n  t[\"shademedium\"] = 0x2592;\n  t[\"shadeva\"] = 0x0936;\n  t[\"shagujarati\"] = 0x0ab6;\n  t[\"shagurmukhi\"] = 0x0a36;\n  t[\"shalshelethebrew\"] = 0x0593;\n  t[\"shbopomofo\"] = 0x3115;\n  t[\"shchacyrillic\"] = 0x0449;\n  t[\"sheenarabic\"] = 0x0634;\n  t[\"sheenfinalarabic\"] = 0xfeb6;\n  t[\"sheeninitialarabic\"] = 0xfeb7;\n  t[\"sheenmedialarabic\"] = 0xfeb8;\n  t[\"sheicoptic\"] = 0x03e3;\n  t[\"sheqel\"] = 0x20aa;\n  t[\"sheqelhebrew\"] = 0x20aa;\n  t[\"sheva\"] = 0x05b0;\n  t[\"sheva115\"] = 0x05b0;\n  t[\"sheva15\"] = 0x05b0;\n  t[\"sheva22\"] = 0x05b0;\n  t[\"sheva2e\"] = 0x05b0;\n  t[\"shevahebrew\"] = 0x05b0;\n  t[\"shevanarrowhebrew\"] = 0x05b0;\n  t[\"shevaquarterhebrew\"] = 0x05b0;\n  t[\"shevawidehebrew\"] = 0x05b0;\n  t[\"shhacyrillic\"] = 0x04bb;\n  t[\"shimacoptic\"] = 0x03ed;\n  t[\"shin\"] = 0x05e9;\n  t[\"shindagesh\"] = 0xfb49;\n  t[\"shindageshhebrew\"] = 0xfb49;\n  t[\"shindageshshindot\"] = 0xfb2c;\n  t[\"shindageshshindothebrew\"] = 0xfb2c;\n  t[\"shindageshsindot\"] = 0xfb2d;\n  t[\"shindageshsindothebrew\"] = 0xfb2d;\n  t[\"shindothebrew\"] = 0x05c1;\n  t[\"shinhebrew\"] = 0x05e9;\n  t[\"shinshindot\"] = 0xfb2a;\n  t[\"shinshindothebrew\"] = 0xfb2a;\n  t[\"shinsindot\"] = 0xfb2b;\n  t[\"shinsindothebrew\"] = 0xfb2b;\n  t[\"shook\"] = 0x0282;\n  t[\"sigma\"] = 0x03c3;\n  t[\"sigma1\"] = 0x03c2;\n  t[\"sigmafinal\"] = 0x03c2;\n  t[\"sigmalunatesymbolgreek\"] = 0x03f2;\n  t[\"sihiragana\"] = 0x3057;\n  t[\"sikatakana\"] = 0x30b7;\n  t[\"sikatakanahalfwidth\"] = 0xff7c;\n  t[\"siluqhebrew\"] = 0x05bd;\n  t[\"siluqlefthebrew\"] = 0x05bd;\n  t[\"similar\"] = 0x223c;\n  t[\"sindothebrew\"] = 0x05c2;\n  t[\"siosacirclekorean\"] = 0x3274;\n  t[\"siosaparenkorean\"] = 0x3214;\n  t[\"sioscieuckorean\"] = 0x317e;\n  t[\"sioscirclekorean\"] = 0x3266;\n  t[\"sioskiyeokkorean\"] = 0x317a;\n  t[\"sioskorean\"] = 0x3145;\n  t[\"siosnieunkorean\"] = 0x317b;\n  t[\"siosparenkorean\"] = 0x3206;\n  t[\"siospieupkorean\"] = 0x317d;\n  t[\"siostikeutkorean\"] = 0x317c;\n  t[\"six\"] = 0x0036;\n  t[\"sixarabic\"] = 0x0666;\n  t[\"sixbengali\"] = 0x09ec;\n  t[\"sixcircle\"] = 0x2465;\n  t[\"sixcircleinversesansserif\"] = 0x278f;\n  t[\"sixdeva\"] = 0x096c;\n  t[\"sixgujarati\"] = 0x0aec;\n  t[\"sixgurmukhi\"] = 0x0a6c;\n  t[\"sixhackarabic\"] = 0x0666;\n  t[\"sixhangzhou\"] = 0x3026;\n  t[\"sixideographicparen\"] = 0x3225;\n  t[\"sixinferior\"] = 0x2086;\n  t[\"sixmonospace\"] = 0xff16;\n  t[\"sixoldstyle\"] = 0xf736;\n  t[\"sixparen\"] = 0x2479;\n  t[\"sixperiod\"] = 0x248d;\n  t[\"sixpersian\"] = 0x06f6;\n  t[\"sixroman\"] = 0x2175;\n  t[\"sixsuperior\"] = 0x2076;\n  t[\"sixteencircle\"] = 0x246f;\n  t[\"sixteencurrencydenominatorbengali\"] = 0x09f9;\n  t[\"sixteenparen\"] = 0x2483;\n  t[\"sixteenperiod\"] = 0x2497;\n  t[\"sixthai\"] = 0x0e56;\n  t[\"slash\"] = 0x002f;\n  t[\"slashmonospace\"] = 0xff0f;\n  t[\"slong\"] = 0x017f;\n  t[\"slongdotaccent\"] = 0x1e9b;\n  t[\"smileface\"] = 0x263a;\n  t[\"smonospace\"] = 0xff53;\n  t[\"sofpasuqhebrew\"] = 0x05c3;\n  t[\"softhyphen\"] = 0x00ad;\n  t[\"softsigncyrillic\"] = 0x044c;\n  t[\"sohiragana\"] = 0x305d;\n  t[\"sokatakana\"] = 0x30bd;\n  t[\"sokatakanahalfwidth\"] = 0xff7f;\n  t[\"soliduslongoverlaycmb\"] = 0x0338;\n  t[\"solidusshortoverlaycmb\"] = 0x0337;\n  t[\"sorusithai\"] = 0x0e29;\n  t[\"sosalathai\"] = 0x0e28;\n  t[\"sosothai\"] = 0x0e0b;\n  t[\"sosuathai\"] = 0x0e2a;\n  t[\"space\"] = 0x0020;\n  t[\"spacehackarabic\"] = 0x0020;\n  t[\"spade\"] = 0x2660;\n  t[\"spadesuitblack\"] = 0x2660;\n  t[\"spadesuitwhite\"] = 0x2664;\n  t[\"sparen\"] = 0x24ae;\n  t[\"squarebelowcmb\"] = 0x033b;\n  t[\"squarecc\"] = 0x33c4;\n  t[\"squarecm\"] = 0x339d;\n  t[\"squarediagonalcrosshatchfill\"] = 0x25a9;\n  t[\"squarehorizontalfill\"] = 0x25a4;\n  t[\"squarekg\"] = 0x338f;\n  t[\"squarekm\"] = 0x339e;\n  t[\"squarekmcapital\"] = 0x33ce;\n  t[\"squareln\"] = 0x33d1;\n  t[\"squarelog\"] = 0x33d2;\n  t[\"squaremg\"] = 0x338e;\n  t[\"squaremil\"] = 0x33d5;\n  t[\"squaremm\"] = 0x339c;\n  t[\"squaremsquared\"] = 0x33a1;\n  t[\"squareorthogonalcrosshatchfill\"] = 0x25a6;\n  t[\"squareupperlefttolowerrightfill\"] = 0x25a7;\n  t[\"squareupperrighttolowerleftfill\"] = 0x25a8;\n  t[\"squareverticalfill\"] = 0x25a5;\n  t[\"squarewhitewithsmallblack\"] = 0x25a3;\n  t[\"srsquare\"] = 0x33db;\n  t[\"ssabengali\"] = 0x09b7;\n  t[\"ssadeva\"] = 0x0937;\n  t[\"ssagujarati\"] = 0x0ab7;\n  t[\"ssangcieuckorean\"] = 0x3149;\n  t[\"ssanghieuhkorean\"] = 0x3185;\n  t[\"ssangieungkorean\"] = 0x3180;\n  t[\"ssangkiyeokkorean\"] = 0x3132;\n  t[\"ssangnieunkorean\"] = 0x3165;\n  t[\"ssangpieupkorean\"] = 0x3143;\n  t[\"ssangsioskorean\"] = 0x3146;\n  t[\"ssangtikeutkorean\"] = 0x3138;\n  t[\"ssuperior\"] = 0xf6f2;\n  t[\"sterling\"] = 0x00a3;\n  t[\"sterlingmonospace\"] = 0xffe1;\n  t[\"strokelongoverlaycmb\"] = 0x0336;\n  t[\"strokeshortoverlaycmb\"] = 0x0335;\n  t[\"subset\"] = 0x2282;\n  t[\"subsetnotequal\"] = 0x228a;\n  t[\"subsetorequal\"] = 0x2286;\n  t[\"succeeds\"] = 0x227b;\n  t[\"suchthat\"] = 0x220b;\n  t[\"suhiragana\"] = 0x3059;\n  t[\"sukatakana\"] = 0x30b9;\n  t[\"sukatakanahalfwidth\"] = 0xff7d;\n  t[\"sukunarabic\"] = 0x0652;\n  t[\"summation\"] = 0x2211;\n  t[\"sun\"] = 0x263c;\n  t[\"superset\"] = 0x2283;\n  t[\"supersetnotequal\"] = 0x228b;\n  t[\"supersetorequal\"] = 0x2287;\n  t[\"svsquare\"] = 0x33dc;\n  t[\"syouwaerasquare\"] = 0x337c;\n  t[\"t\"] = 0x0074;\n  t[\"tabengali\"] = 0x09a4;\n  t[\"tackdown\"] = 0x22a4;\n  t[\"tackleft\"] = 0x22a3;\n  t[\"tadeva\"] = 0x0924;\n  t[\"tagujarati\"] = 0x0aa4;\n  t[\"tagurmukhi\"] = 0x0a24;\n  t[\"taharabic\"] = 0x0637;\n  t[\"tahfinalarabic\"] = 0xfec2;\n  t[\"tahinitialarabic\"] = 0xfec3;\n  t[\"tahiragana\"] = 0x305f;\n  t[\"tahmedialarabic\"] = 0xfec4;\n  t[\"taisyouerasquare\"] = 0x337d;\n  t[\"takatakana\"] = 0x30bf;\n  t[\"takatakanahalfwidth\"] = 0xff80;\n  t[\"tatweelarabic\"] = 0x0640;\n  t[\"tau\"] = 0x03c4;\n  t[\"tav\"] = 0x05ea;\n  t[\"tavdages\"] = 0xfb4a;\n  t[\"tavdagesh\"] = 0xfb4a;\n  t[\"tavdageshhebrew\"] = 0xfb4a;\n  t[\"tavhebrew\"] = 0x05ea;\n  t[\"tbar\"] = 0x0167;\n  t[\"tbopomofo\"] = 0x310a;\n  t[\"tcaron\"] = 0x0165;\n  t[\"tccurl\"] = 0x02a8;\n  t[\"tcedilla\"] = 0x0163;\n  t[\"tcheharabic\"] = 0x0686;\n  t[\"tchehfinalarabic\"] = 0xfb7b;\n  t[\"tchehinitialarabic\"] = 0xfb7c;\n  t[\"tchehmedialarabic\"] = 0xfb7d;\n  t[\"tcircle\"] = 0x24e3;\n  t[\"tcircumflexbelow\"] = 0x1e71;\n  t[\"tcommaaccent\"] = 0x0163;\n  t[\"tdieresis\"] = 0x1e97;\n  t[\"tdotaccent\"] = 0x1e6b;\n  t[\"tdotbelow\"] = 0x1e6d;\n  t[\"tecyrillic\"] = 0x0442;\n  t[\"tedescendercyrillic\"] = 0x04ad;\n  t[\"teharabic\"] = 0x062a;\n  t[\"tehfinalarabic\"] = 0xfe96;\n  t[\"tehhahinitialarabic\"] = 0xfca2;\n  t[\"tehhahisolatedarabic\"] = 0xfc0c;\n  t[\"tehinitialarabic\"] = 0xfe97;\n  t[\"tehiragana\"] = 0x3066;\n  t[\"tehjeeminitialarabic\"] = 0xfca1;\n  t[\"tehjeemisolatedarabic\"] = 0xfc0b;\n  t[\"tehmarbutaarabic\"] = 0x0629;\n  t[\"tehmarbutafinalarabic\"] = 0xfe94;\n  t[\"tehmedialarabic\"] = 0xfe98;\n  t[\"tehmeeminitialarabic\"] = 0xfca4;\n  t[\"tehmeemisolatedarabic\"] = 0xfc0e;\n  t[\"tehnoonfinalarabic\"] = 0xfc73;\n  t[\"tekatakana\"] = 0x30c6;\n  t[\"tekatakanahalfwidth\"] = 0xff83;\n  t[\"telephone\"] = 0x2121;\n  t[\"telephoneblack\"] = 0x260e;\n  t[\"telishagedolahebrew\"] = 0x05a0;\n  t[\"telishaqetanahebrew\"] = 0x05a9;\n  t[\"tencircle\"] = 0x2469;\n  t[\"tenideographicparen\"] = 0x3229;\n  t[\"tenparen\"] = 0x247d;\n  t[\"tenperiod\"] = 0x2491;\n  t[\"tenroman\"] = 0x2179;\n  t[\"tesh\"] = 0x02a7;\n  t[\"tet\"] = 0x05d8;\n  t[\"tetdagesh\"] = 0xfb38;\n  t[\"tetdageshhebrew\"] = 0xfb38;\n  t[\"tethebrew\"] = 0x05d8;\n  t[\"tetsecyrillic\"] = 0x04b5;\n  t[\"tevirhebrew\"] = 0x059b;\n  t[\"tevirlefthebrew\"] = 0x059b;\n  t[\"thabengali\"] = 0x09a5;\n  t[\"thadeva\"] = 0x0925;\n  t[\"thagujarati\"] = 0x0aa5;\n  t[\"thagurmukhi\"] = 0x0a25;\n  t[\"thalarabic\"] = 0x0630;\n  t[\"thalfinalarabic\"] = 0xfeac;\n  t[\"thanthakhatlowleftthai\"] = 0xf898;\n  t[\"thanthakhatlowrightthai\"] = 0xf897;\n  t[\"thanthakhatthai\"] = 0x0e4c;\n  t[\"thanthakhatupperleftthai\"] = 0xf896;\n  t[\"theharabic\"] = 0x062b;\n  t[\"thehfinalarabic\"] = 0xfe9a;\n  t[\"thehinitialarabic\"] = 0xfe9b;\n  t[\"thehmedialarabic\"] = 0xfe9c;\n  t[\"thereexists\"] = 0x2203;\n  t[\"therefore\"] = 0x2234;\n  t[\"theta\"] = 0x03b8;\n  t[\"theta1\"] = 0x03d1;\n  t[\"thetasymbolgreek\"] = 0x03d1;\n  t[\"thieuthacirclekorean\"] = 0x3279;\n  t[\"thieuthaparenkorean\"] = 0x3219;\n  t[\"thieuthcirclekorean\"] = 0x326b;\n  t[\"thieuthkorean\"] = 0x314c;\n  t[\"thieuthparenkorean\"] = 0x320b;\n  t[\"thirteencircle\"] = 0x246c;\n  t[\"thirteenparen\"] = 0x2480;\n  t[\"thirteenperiod\"] = 0x2494;\n  t[\"thonangmonthothai\"] = 0x0e11;\n  t[\"thook\"] = 0x01ad;\n  t[\"thophuthaothai\"] = 0x0e12;\n  t[\"thorn\"] = 0x00fe;\n  t[\"thothahanthai\"] = 0x0e17;\n  t[\"thothanthai\"] = 0x0e10;\n  t[\"thothongthai\"] = 0x0e18;\n  t[\"thothungthai\"] = 0x0e16;\n  t[\"thousandcyrillic\"] = 0x0482;\n  t[\"thousandsseparatorarabic\"] = 0x066c;\n  t[\"thousandsseparatorpersian\"] = 0x066c;\n  t[\"three\"] = 0x0033;\n  t[\"threearabic\"] = 0x0663;\n  t[\"threebengali\"] = 0x09e9;\n  t[\"threecircle\"] = 0x2462;\n  t[\"threecircleinversesansserif\"] = 0x278c;\n  t[\"threedeva\"] = 0x0969;\n  t[\"threeeighths\"] = 0x215c;\n  t[\"threegujarati\"] = 0x0ae9;\n  t[\"threegurmukhi\"] = 0x0a69;\n  t[\"threehackarabic\"] = 0x0663;\n  t[\"threehangzhou\"] = 0x3023;\n  t[\"threeideographicparen\"] = 0x3222;\n  t[\"threeinferior\"] = 0x2083;\n  t[\"threemonospace\"] = 0xff13;\n  t[\"threenumeratorbengali\"] = 0x09f6;\n  t[\"threeoldstyle\"] = 0xf733;\n  t[\"threeparen\"] = 0x2476;\n  t[\"threeperiod\"] = 0x248a;\n  t[\"threepersian\"] = 0x06f3;\n  t[\"threequarters\"] = 0x00be;\n  t[\"threequartersemdash\"] = 0xf6de;\n  t[\"threeroman\"] = 0x2172;\n  t[\"threesuperior\"] = 0x00b3;\n  t[\"threethai\"] = 0x0e53;\n  t[\"thzsquare\"] = 0x3394;\n  t[\"tihiragana\"] = 0x3061;\n  t[\"tikatakana\"] = 0x30c1;\n  t[\"tikatakanahalfwidth\"] = 0xff81;\n  t[\"tikeutacirclekorean\"] = 0x3270;\n  t[\"tikeutaparenkorean\"] = 0x3210;\n  t[\"tikeutcirclekorean\"] = 0x3262;\n  t[\"tikeutkorean\"] = 0x3137;\n  t[\"tikeutparenkorean\"] = 0x3202;\n  t[\"tilde\"] = 0x02dc;\n  t[\"tildebelowcmb\"] = 0x0330;\n  t[\"tildecmb\"] = 0x0303;\n  t[\"tildecomb\"] = 0x0303;\n  t[\"tildedoublecmb\"] = 0x0360;\n  t[\"tildeoperator\"] = 0x223c;\n  t[\"tildeoverlaycmb\"] = 0x0334;\n  t[\"tildeverticalcmb\"] = 0x033e;\n  t[\"timescircle\"] = 0x2297;\n  t[\"tipehahebrew\"] = 0x0596;\n  t[\"tipehalefthebrew\"] = 0x0596;\n  t[\"tippigurmukhi\"] = 0x0a70;\n  t[\"titlocyrilliccmb\"] = 0x0483;\n  t[\"tiwnarmenian\"] = 0x057f;\n  t[\"tlinebelow\"] = 0x1e6f;\n  t[\"tmonospace\"] = 0xff54;\n  t[\"toarmenian\"] = 0x0569;\n  t[\"tohiragana\"] = 0x3068;\n  t[\"tokatakana\"] = 0x30c8;\n  t[\"tokatakanahalfwidth\"] = 0xff84;\n  t[\"tonebarextrahighmod\"] = 0x02e5;\n  t[\"tonebarextralowmod\"] = 0x02e9;\n  t[\"tonebarhighmod\"] = 0x02e6;\n  t[\"tonebarlowmod\"] = 0x02e8;\n  t[\"tonebarmidmod\"] = 0x02e7;\n  t[\"tonefive\"] = 0x01bd;\n  t[\"tonesix\"] = 0x0185;\n  t[\"tonetwo\"] = 0x01a8;\n  t[\"tonos\"] = 0x0384;\n  t[\"tonsquare\"] = 0x3327;\n  t[\"topatakthai\"] = 0x0e0f;\n  t[\"tortoiseshellbracketleft\"] = 0x3014;\n  t[\"tortoiseshellbracketleftsmall\"] = 0xfe5d;\n  t[\"tortoiseshellbracketleftvertical\"] = 0xfe39;\n  t[\"tortoiseshellbracketright\"] = 0x3015;\n  t[\"tortoiseshellbracketrightsmall\"] = 0xfe5e;\n  t[\"tortoiseshellbracketrightvertical\"] = 0xfe3a;\n  t[\"totaothai\"] = 0x0e15;\n  t[\"tpalatalhook\"] = 0x01ab;\n  t[\"tparen\"] = 0x24af;\n  t[\"trademark\"] = 0x2122;\n  t[\"trademarksans\"] = 0xf8ea;\n  t[\"trademarkserif\"] = 0xf6db;\n  t[\"tretroflexhook\"] = 0x0288;\n  t[\"triagdn\"] = 0x25bc;\n  t[\"triaglf\"] = 0x25c4;\n  t[\"triagrt\"] = 0x25ba;\n  t[\"triagup\"] = 0x25b2;\n  t[\"ts\"] = 0x02a6;\n  t[\"tsadi\"] = 0x05e6;\n  t[\"tsadidagesh\"] = 0xfb46;\n  t[\"tsadidageshhebrew\"] = 0xfb46;\n  t[\"tsadihebrew\"] = 0x05e6;\n  t[\"tsecyrillic\"] = 0x0446;\n  t[\"tsere\"] = 0x05b5;\n  t[\"tsere12\"] = 0x05b5;\n  t[\"tsere1e\"] = 0x05b5;\n  t[\"tsere2b\"] = 0x05b5;\n  t[\"tserehebrew\"] = 0x05b5;\n  t[\"tserenarrowhebrew\"] = 0x05b5;\n  t[\"tserequarterhebrew\"] = 0x05b5;\n  t[\"tserewidehebrew\"] = 0x05b5;\n  t[\"tshecyrillic\"] = 0x045b;\n  t[\"tsuperior\"] = 0xf6f3;\n  t[\"ttabengali\"] = 0x099f;\n  t[\"ttadeva\"] = 0x091f;\n  t[\"ttagujarati\"] = 0x0a9f;\n  t[\"ttagurmukhi\"] = 0x0a1f;\n  t[\"tteharabic\"] = 0x0679;\n  t[\"ttehfinalarabic\"] = 0xfb67;\n  t[\"ttehinitialarabic\"] = 0xfb68;\n  t[\"ttehmedialarabic\"] = 0xfb69;\n  t[\"tthabengali\"] = 0x09a0;\n  t[\"tthadeva\"] = 0x0920;\n  t[\"tthagujarati\"] = 0x0aa0;\n  t[\"tthagurmukhi\"] = 0x0a20;\n  t[\"tturned\"] = 0x0287;\n  t[\"tuhiragana\"] = 0x3064;\n  t[\"tukatakana\"] = 0x30c4;\n  t[\"tukatakanahalfwidth\"] = 0xff82;\n  t[\"tusmallhiragana\"] = 0x3063;\n  t[\"tusmallkatakana\"] = 0x30c3;\n  t[\"tusmallkatakanahalfwidth\"] = 0xff6f;\n  t[\"twelvecircle\"] = 0x246b;\n  t[\"twelveparen\"] = 0x247f;\n  t[\"twelveperiod\"] = 0x2493;\n  t[\"twelveroman\"] = 0x217b;\n  t[\"twentycircle\"] = 0x2473;\n  t[\"twentyhangzhou\"] = 0x5344;\n  t[\"twentyparen\"] = 0x2487;\n  t[\"twentyperiod\"] = 0x249b;\n  t[\"two\"] = 0x0032;\n  t[\"twoarabic\"] = 0x0662;\n  t[\"twobengali\"] = 0x09e8;\n  t[\"twocircle\"] = 0x2461;\n  t[\"twocircleinversesansserif\"] = 0x278b;\n  t[\"twodeva\"] = 0x0968;\n  t[\"twodotenleader\"] = 0x2025;\n  t[\"twodotleader\"] = 0x2025;\n  t[\"twodotleadervertical\"] = 0xfe30;\n  t[\"twogujarati\"] = 0x0ae8;\n  t[\"twogurmukhi\"] = 0x0a68;\n  t[\"twohackarabic\"] = 0x0662;\n  t[\"twohangzhou\"] = 0x3022;\n  t[\"twoideographicparen\"] = 0x3221;\n  t[\"twoinferior\"] = 0x2082;\n  t[\"twomonospace\"] = 0xff12;\n  t[\"twonumeratorbengali\"] = 0x09f5;\n  t[\"twooldstyle\"] = 0xf732;\n  t[\"twoparen\"] = 0x2475;\n  t[\"twoperiod\"] = 0x2489;\n  t[\"twopersian\"] = 0x06f2;\n  t[\"tworoman\"] = 0x2171;\n  t[\"twostroke\"] = 0x01bb;\n  t[\"twosuperior\"] = 0x00b2;\n  t[\"twothai\"] = 0x0e52;\n  t[\"twothirds\"] = 0x2154;\n  t[\"u\"] = 0x0075;\n  t[\"uacute\"] = 0x00fa;\n  t[\"ubar\"] = 0x0289;\n  t[\"ubengali\"] = 0x0989;\n  t[\"ubopomofo\"] = 0x3128;\n  t[\"ubreve\"] = 0x016d;\n  t[\"ucaron\"] = 0x01d4;\n  t[\"ucircle\"] = 0x24e4;\n  t[\"ucircumflex\"] = 0x00fb;\n  t[\"ucircumflexbelow\"] = 0x1e77;\n  t[\"ucyrillic\"] = 0x0443;\n  t[\"udattadeva\"] = 0x0951;\n  t[\"udblacute\"] = 0x0171;\n  t[\"udblgrave\"] = 0x0215;\n  t[\"udeva\"] = 0x0909;\n  t[\"udieresis\"] = 0x00fc;\n  t[\"udieresisacute\"] = 0x01d8;\n  t[\"udieresisbelow\"] = 0x1e73;\n  t[\"udieresiscaron\"] = 0x01da;\n  t[\"udieresiscyrillic\"] = 0x04f1;\n  t[\"udieresisgrave\"] = 0x01dc;\n  t[\"udieresismacron\"] = 0x01d6;\n  t[\"udotbelow\"] = 0x1ee5;\n  t[\"ugrave\"] = 0x00f9;\n  t[\"ugujarati\"] = 0x0a89;\n  t[\"ugurmukhi\"] = 0x0a09;\n  t[\"uhiragana\"] = 0x3046;\n  t[\"uhookabove\"] = 0x1ee7;\n  t[\"uhorn\"] = 0x01b0;\n  t[\"uhornacute\"] = 0x1ee9;\n  t[\"uhorndotbelow\"] = 0x1ef1;\n  t[\"uhorngrave\"] = 0x1eeb;\n  t[\"uhornhookabove\"] = 0x1eed;\n  t[\"uhorntilde\"] = 0x1eef;\n  t[\"uhungarumlaut\"] = 0x0171;\n  t[\"uhungarumlautcyrillic\"] = 0x04f3;\n  t[\"uinvertedbreve\"] = 0x0217;\n  t[\"ukatakana\"] = 0x30a6;\n  t[\"ukatakanahalfwidth\"] = 0xff73;\n  t[\"ukcyrillic\"] = 0x0479;\n  t[\"ukorean\"] = 0x315c;\n  t[\"umacron\"] = 0x016b;\n  t[\"umacroncyrillic\"] = 0x04ef;\n  t[\"umacrondieresis\"] = 0x1e7b;\n  t[\"umatragurmukhi\"] = 0x0a41;\n  t[\"umonospace\"] = 0xff55;\n  t[\"underscore\"] = 0x005f;\n  t[\"underscoredbl\"] = 0x2017;\n  t[\"underscoremonospace\"] = 0xff3f;\n  t[\"underscorevertical\"] = 0xfe33;\n  t[\"underscorewavy\"] = 0xfe4f;\n  t[\"union\"] = 0x222a;\n  t[\"universal\"] = 0x2200;\n  t[\"uogonek\"] = 0x0173;\n  t[\"uparen\"] = 0x24b0;\n  t[\"upblock\"] = 0x2580;\n  t[\"upperdothebrew\"] = 0x05c4;\n  t[\"upsilon\"] = 0x03c5;\n  t[\"upsilondieresis\"] = 0x03cb;\n  t[\"upsilondieresistonos\"] = 0x03b0;\n  t[\"upsilonlatin\"] = 0x028a;\n  t[\"upsilontonos\"] = 0x03cd;\n  t[\"uptackbelowcmb\"] = 0x031d;\n  t[\"uptackmod\"] = 0x02d4;\n  t[\"uragurmukhi\"] = 0x0a73;\n  t[\"uring\"] = 0x016f;\n  t[\"ushortcyrillic\"] = 0x045e;\n  t[\"usmallhiragana\"] = 0x3045;\n  t[\"usmallkatakana\"] = 0x30a5;\n  t[\"usmallkatakanahalfwidth\"] = 0xff69;\n  t[\"ustraightcyrillic\"] = 0x04af;\n  t[\"ustraightstrokecyrillic\"] = 0x04b1;\n  t[\"utilde\"] = 0x0169;\n  t[\"utildeacute\"] = 0x1e79;\n  t[\"utildebelow\"] = 0x1e75;\n  t[\"uubengali\"] = 0x098a;\n  t[\"uudeva\"] = 0x090a;\n  t[\"uugujarati\"] = 0x0a8a;\n  t[\"uugurmukhi\"] = 0x0a0a;\n  t[\"uumatragurmukhi\"] = 0x0a42;\n  t[\"uuvowelsignbengali\"] = 0x09c2;\n  t[\"uuvowelsigndeva\"] = 0x0942;\n  t[\"uuvowelsigngujarati\"] = 0x0ac2;\n  t[\"uvowelsignbengali\"] = 0x09c1;\n  t[\"uvowelsigndeva\"] = 0x0941;\n  t[\"uvowelsigngujarati\"] = 0x0ac1;\n  t[\"v\"] = 0x0076;\n  t[\"vadeva\"] = 0x0935;\n  t[\"vagujarati\"] = 0x0ab5;\n  t[\"vagurmukhi\"] = 0x0a35;\n  t[\"vakatakana\"] = 0x30f7;\n  t[\"vav\"] = 0x05d5;\n  t[\"vavdagesh\"] = 0xfb35;\n  t[\"vavdagesh65\"] = 0xfb35;\n  t[\"vavdageshhebrew\"] = 0xfb35;\n  t[\"vavhebrew\"] = 0x05d5;\n  t[\"vavholam\"] = 0xfb4b;\n  t[\"vavholamhebrew\"] = 0xfb4b;\n  t[\"vavvavhebrew\"] = 0x05f0;\n  t[\"vavyodhebrew\"] = 0x05f1;\n  t[\"vcircle\"] = 0x24e5;\n  t[\"vdotbelow\"] = 0x1e7f;\n  t[\"vecyrillic\"] = 0x0432;\n  t[\"veharabic\"] = 0x06a4;\n  t[\"vehfinalarabic\"] = 0xfb6b;\n  t[\"vehinitialarabic\"] = 0xfb6c;\n  t[\"vehmedialarabic\"] = 0xfb6d;\n  t[\"vekatakana\"] = 0x30f9;\n  t[\"venus\"] = 0x2640;\n  t[\"verticalbar\"] = 0x007c;\n  t[\"verticallineabovecmb\"] = 0x030d;\n  t[\"verticallinebelowcmb\"] = 0x0329;\n  t[\"verticallinelowmod\"] = 0x02cc;\n  t[\"verticallinemod\"] = 0x02c8;\n  t[\"vewarmenian\"] = 0x057e;\n  t[\"vhook\"] = 0x028b;\n  t[\"vikatakana\"] = 0x30f8;\n  t[\"viramabengali\"] = 0x09cd;\n  t[\"viramadeva\"] = 0x094d;\n  t[\"viramagujarati\"] = 0x0acd;\n  t[\"visargabengali\"] = 0x0983;\n  t[\"visargadeva\"] = 0x0903;\n  t[\"visargagujarati\"] = 0x0a83;\n  t[\"vmonospace\"] = 0xff56;\n  t[\"voarmenian\"] = 0x0578;\n  t[\"voicediterationhiragana\"] = 0x309e;\n  t[\"voicediterationkatakana\"] = 0x30fe;\n  t[\"voicedmarkkana\"] = 0x309b;\n  t[\"voicedmarkkanahalfwidth\"] = 0xff9e;\n  t[\"vokatakana\"] = 0x30fa;\n  t[\"vparen\"] = 0x24b1;\n  t[\"vtilde\"] = 0x1e7d;\n  t[\"vturned\"] = 0x028c;\n  t[\"vuhiragana\"] = 0x3094;\n  t[\"vukatakana\"] = 0x30f4;\n  t[\"w\"] = 0x0077;\n  t[\"wacute\"] = 0x1e83;\n  t[\"waekorean\"] = 0x3159;\n  t[\"wahiragana\"] = 0x308f;\n  t[\"wakatakana\"] = 0x30ef;\n  t[\"wakatakanahalfwidth\"] = 0xff9c;\n  t[\"wakorean\"] = 0x3158;\n  t[\"wasmallhiragana\"] = 0x308e;\n  t[\"wasmallkatakana\"] = 0x30ee;\n  t[\"wattosquare\"] = 0x3357;\n  t[\"wavedash\"] = 0x301c;\n  t[\"wavyunderscorevertical\"] = 0xfe34;\n  t[\"wawarabic\"] = 0x0648;\n  t[\"wawfinalarabic\"] = 0xfeee;\n  t[\"wawhamzaabovearabic\"] = 0x0624;\n  t[\"wawhamzaabovefinalarabic\"] = 0xfe86;\n  t[\"wbsquare\"] = 0x33dd;\n  t[\"wcircle\"] = 0x24e6;\n  t[\"wcircumflex\"] = 0x0175;\n  t[\"wdieresis\"] = 0x1e85;\n  t[\"wdotaccent\"] = 0x1e87;\n  t[\"wdotbelow\"] = 0x1e89;\n  t[\"wehiragana\"] = 0x3091;\n  t[\"weierstrass\"] = 0x2118;\n  t[\"wekatakana\"] = 0x30f1;\n  t[\"wekorean\"] = 0x315e;\n  t[\"weokorean\"] = 0x315d;\n  t[\"wgrave\"] = 0x1e81;\n  t[\"whitebullet\"] = 0x25e6;\n  t[\"whitecircle\"] = 0x25cb;\n  t[\"whitecircleinverse\"] = 0x25d9;\n  t[\"whitecornerbracketleft\"] = 0x300e;\n  t[\"whitecornerbracketleftvertical\"] = 0xfe43;\n  t[\"whitecornerbracketright\"] = 0x300f;\n  t[\"whitecornerbracketrightvertical\"] = 0xfe44;\n  t[\"whitediamond\"] = 0x25c7;\n  t[\"whitediamondcontainingblacksmalldiamond\"] = 0x25c8;\n  t[\"whitedownpointingsmalltriangle\"] = 0x25bf;\n  t[\"whitedownpointingtriangle\"] = 0x25bd;\n  t[\"whiteleftpointingsmalltriangle\"] = 0x25c3;\n  t[\"whiteleftpointingtriangle\"] = 0x25c1;\n  t[\"whitelenticularbracketleft\"] = 0x3016;\n  t[\"whitelenticularbracketright\"] = 0x3017;\n  t[\"whiterightpointingsmalltriangle\"] = 0x25b9;\n  t[\"whiterightpointingtriangle\"] = 0x25b7;\n  t[\"whitesmallsquare\"] = 0x25ab;\n  t[\"whitesmilingface\"] = 0x263a;\n  t[\"whitesquare\"] = 0x25a1;\n  t[\"whitestar\"] = 0x2606;\n  t[\"whitetelephone\"] = 0x260f;\n  t[\"whitetortoiseshellbracketleft\"] = 0x3018;\n  t[\"whitetortoiseshellbracketright\"] = 0x3019;\n  t[\"whiteuppointingsmalltriangle\"] = 0x25b5;\n  t[\"whiteuppointingtriangle\"] = 0x25b3;\n  t[\"wihiragana\"] = 0x3090;\n  t[\"wikatakana\"] = 0x30f0;\n  t[\"wikorean\"] = 0x315f;\n  t[\"wmonospace\"] = 0xff57;\n  t[\"wohiragana\"] = 0x3092;\n  t[\"wokatakana\"] = 0x30f2;\n  t[\"wokatakanahalfwidth\"] = 0xff66;\n  t[\"won\"] = 0x20a9;\n  t[\"wonmonospace\"] = 0xffe6;\n  t[\"wowaenthai\"] = 0x0e27;\n  t[\"wparen\"] = 0x24b2;\n  t[\"wring\"] = 0x1e98;\n  t[\"wsuperior\"] = 0x02b7;\n  t[\"wturned\"] = 0x028d;\n  t[\"wynn\"] = 0x01bf;\n  t[\"x\"] = 0x0078;\n  t[\"xabovecmb\"] = 0x033d;\n  t[\"xbopomofo\"] = 0x3112;\n  t[\"xcircle\"] = 0x24e7;\n  t[\"xdieresis\"] = 0x1e8d;\n  t[\"xdotaccent\"] = 0x1e8b;\n  t[\"xeharmenian\"] = 0x056d;\n  t[\"xi\"] = 0x03be;\n  t[\"xmonospace\"] = 0xff58;\n  t[\"xparen\"] = 0x24b3;\n  t[\"xsuperior\"] = 0x02e3;\n  t[\"y\"] = 0x0079;\n  t[\"yaadosquare\"] = 0x334e;\n  t[\"yabengali\"] = 0x09af;\n  t[\"yacute\"] = 0x00fd;\n  t[\"yadeva\"] = 0x092f;\n  t[\"yaekorean\"] = 0x3152;\n  t[\"yagujarati\"] = 0x0aaf;\n  t[\"yagurmukhi\"] = 0x0a2f;\n  t[\"yahiragana\"] = 0x3084;\n  t[\"yakatakana\"] = 0x30e4;\n  t[\"yakatakanahalfwidth\"] = 0xff94;\n  t[\"yakorean\"] = 0x3151;\n  t[\"yamakkanthai\"] = 0x0e4e;\n  t[\"yasmallhiragana\"] = 0x3083;\n  t[\"yasmallkatakana\"] = 0x30e3;\n  t[\"yasmallkatakanahalfwidth\"] = 0xff6c;\n  t[\"yatcyrillic\"] = 0x0463;\n  t[\"ycircle\"] = 0x24e8;\n  t[\"ycircumflex\"] = 0x0177;\n  t[\"ydieresis\"] = 0x00ff;\n  t[\"ydotaccent\"] = 0x1e8f;\n  t[\"ydotbelow\"] = 0x1ef5;\n  t[\"yeharabic\"] = 0x064a;\n  t[\"yehbarreearabic\"] = 0x06d2;\n  t[\"yehbarreefinalarabic\"] = 0xfbaf;\n  t[\"yehfinalarabic\"] = 0xfef2;\n  t[\"yehhamzaabovearabic\"] = 0x0626;\n  t[\"yehhamzaabovefinalarabic\"] = 0xfe8a;\n  t[\"yehhamzaaboveinitialarabic\"] = 0xfe8b;\n  t[\"yehhamzaabovemedialarabic\"] = 0xfe8c;\n  t[\"yehinitialarabic\"] = 0xfef3;\n  t[\"yehmedialarabic\"] = 0xfef4;\n  t[\"yehmeeminitialarabic\"] = 0xfcdd;\n  t[\"yehmeemisolatedarabic\"] = 0xfc58;\n  t[\"yehnoonfinalarabic\"] = 0xfc94;\n  t[\"yehthreedotsbelowarabic\"] = 0x06d1;\n  t[\"yekorean\"] = 0x3156;\n  t[\"yen\"] = 0x00a5;\n  t[\"yenmonospace\"] = 0xffe5;\n  t[\"yeokorean\"] = 0x3155;\n  t[\"yeorinhieuhkorean\"] = 0x3186;\n  t[\"yerahbenyomohebrew\"] = 0x05aa;\n  t[\"yerahbenyomolefthebrew\"] = 0x05aa;\n  t[\"yericyrillic\"] = 0x044b;\n  t[\"yerudieresiscyrillic\"] = 0x04f9;\n  t[\"yesieungkorean\"] = 0x3181;\n  t[\"yesieungpansioskorean\"] = 0x3183;\n  t[\"yesieungsioskorean\"] = 0x3182;\n  t[\"yetivhebrew\"] = 0x059a;\n  t[\"ygrave\"] = 0x1ef3;\n  t[\"yhook\"] = 0x01b4;\n  t[\"yhookabove\"] = 0x1ef7;\n  t[\"yiarmenian\"] = 0x0575;\n  t[\"yicyrillic\"] = 0x0457;\n  t[\"yikorean\"] = 0x3162;\n  t[\"yinyang\"] = 0x262f;\n  t[\"yiwnarmenian\"] = 0x0582;\n  t[\"ymonospace\"] = 0xff59;\n  t[\"yod\"] = 0x05d9;\n  t[\"yoddagesh\"] = 0xfb39;\n  t[\"yoddageshhebrew\"] = 0xfb39;\n  t[\"yodhebrew\"] = 0x05d9;\n  t[\"yodyodhebrew\"] = 0x05f2;\n  t[\"yodyodpatahhebrew\"] = 0xfb1f;\n  t[\"yohiragana\"] = 0x3088;\n  t[\"yoikorean\"] = 0x3189;\n  t[\"yokatakana\"] = 0x30e8;\n  t[\"yokatakanahalfwidth\"] = 0xff96;\n  t[\"yokorean\"] = 0x315b;\n  t[\"yosmallhiragana\"] = 0x3087;\n  t[\"yosmallkatakana\"] = 0x30e7;\n  t[\"yosmallkatakanahalfwidth\"] = 0xff6e;\n  t[\"yotgreek\"] = 0x03f3;\n  t[\"yoyaekorean\"] = 0x3188;\n  t[\"yoyakorean\"] = 0x3187;\n  t[\"yoyakthai\"] = 0x0e22;\n  t[\"yoyingthai\"] = 0x0e0d;\n  t[\"yparen\"] = 0x24b4;\n  t[\"ypogegrammeni\"] = 0x037a;\n  t[\"ypogegrammenigreekcmb\"] = 0x0345;\n  t[\"yr\"] = 0x01a6;\n  t[\"yring\"] = 0x1e99;\n  t[\"ysuperior\"] = 0x02b8;\n  t[\"ytilde\"] = 0x1ef9;\n  t[\"yturned\"] = 0x028e;\n  t[\"yuhiragana\"] = 0x3086;\n  t[\"yuikorean\"] = 0x318c;\n  t[\"yukatakana\"] = 0x30e6;\n  t[\"yukatakanahalfwidth\"] = 0xff95;\n  t[\"yukorean\"] = 0x3160;\n  t[\"yusbigcyrillic\"] = 0x046b;\n  t[\"yusbigiotifiedcyrillic\"] = 0x046d;\n  t[\"yuslittlecyrillic\"] = 0x0467;\n  t[\"yuslittleiotifiedcyrillic\"] = 0x0469;\n  t[\"yusmallhiragana\"] = 0x3085;\n  t[\"yusmallkatakana\"] = 0x30e5;\n  t[\"yusmallkatakanahalfwidth\"] = 0xff6d;\n  t[\"yuyekorean\"] = 0x318b;\n  t[\"yuyeokorean\"] = 0x318a;\n  t[\"yyabengali\"] = 0x09df;\n  t[\"yyadeva\"] = 0x095f;\n  t[\"z\"] = 0x007a;\n  t[\"zaarmenian\"] = 0x0566;\n  t[\"zacute\"] = 0x017a;\n  t[\"zadeva\"] = 0x095b;\n  t[\"zagurmukhi\"] = 0x0a5b;\n  t[\"zaharabic\"] = 0x0638;\n  t[\"zahfinalarabic\"] = 0xfec6;\n  t[\"zahinitialarabic\"] = 0xfec7;\n  t[\"zahiragana\"] = 0x3056;\n  t[\"zahmedialarabic\"] = 0xfec8;\n  t[\"zainarabic\"] = 0x0632;\n  t[\"zainfinalarabic\"] = 0xfeb0;\n  t[\"zakatakana\"] = 0x30b6;\n  t[\"zaqefgadolhebrew\"] = 0x0595;\n  t[\"zaqefqatanhebrew\"] = 0x0594;\n  t[\"zarqahebrew\"] = 0x0598;\n  t[\"zayin\"] = 0x05d6;\n  t[\"zayindagesh\"] = 0xfb36;\n  t[\"zayindageshhebrew\"] = 0xfb36;\n  t[\"zayinhebrew\"] = 0x05d6;\n  t[\"zbopomofo\"] = 0x3117;\n  t[\"zcaron\"] = 0x017e;\n  t[\"zcircle\"] = 0x24e9;\n  t[\"zcircumflex\"] = 0x1e91;\n  t[\"zcurl\"] = 0x0291;\n  t[\"zdot\"] = 0x017c;\n  t[\"zdotaccent\"] = 0x017c;\n  t[\"zdotbelow\"] = 0x1e93;\n  t[\"zecyrillic\"] = 0x0437;\n  t[\"zedescendercyrillic\"] = 0x0499;\n  t[\"zedieresiscyrillic\"] = 0x04df;\n  t[\"zehiragana\"] = 0x305c;\n  t[\"zekatakana\"] = 0x30bc;\n  t[\"zero\"] = 0x0030;\n  t[\"zeroarabic\"] = 0x0660;\n  t[\"zerobengali\"] = 0x09e6;\n  t[\"zerodeva\"] = 0x0966;\n  t[\"zerogujarati\"] = 0x0ae6;\n  t[\"zerogurmukhi\"] = 0x0a66;\n  t[\"zerohackarabic\"] = 0x0660;\n  t[\"zeroinferior\"] = 0x2080;\n  t[\"zeromonospace\"] = 0xff10;\n  t[\"zerooldstyle\"] = 0xf730;\n  t[\"zeropersian\"] = 0x06f0;\n  t[\"zerosuperior\"] = 0x2070;\n  t[\"zerothai\"] = 0x0e50;\n  t[\"zerowidthjoiner\"] = 0xfeff;\n  t[\"zerowidthnonjoiner\"] = 0x200c;\n  t[\"zerowidthspace\"] = 0x200b;\n  t[\"zeta\"] = 0x03b6;\n  t[\"zhbopomofo\"] = 0x3113;\n  t[\"zhearmenian\"] = 0x056a;\n  t[\"zhebrevecyrillic\"] = 0x04c2;\n  t[\"zhecyrillic\"] = 0x0436;\n  t[\"zhedescendercyrillic\"] = 0x0497;\n  t[\"zhedieresiscyrillic\"] = 0x04dd;\n  t[\"zihiragana\"] = 0x3058;\n  t[\"zikatakana\"] = 0x30b8;\n  t[\"zinorhebrew\"] = 0x05ae;\n  t[\"zlinebelow\"] = 0x1e95;\n  t[\"zmonospace\"] = 0xff5a;\n  t[\"zohiragana\"] = 0x305e;\n  t[\"zokatakana\"] = 0x30be;\n  t[\"zparen\"] = 0x24b5;\n  t[\"zretroflexhook\"] = 0x0290;\n  t[\"zstroke\"] = 0x01b6;\n  t[\"zuhiragana\"] = 0x305a;\n  t[\"zukatakana\"] = 0x30ba;\n  t[\".notdef\"] = 0x0000;\n\n  // TeX-specific glyph names.\n  t[\"angbracketleftbig\"] = 0x2329;\n  t[\"angbracketleftBig\"] = 0x2329;\n  t[\"angbracketleftbigg\"] = 0x2329;\n  t[\"angbracketleftBigg\"] = 0x2329;\n  t[\"angbracketrightBig\"] = 0x232a;\n  t[\"angbracketrightbig\"] = 0x232a;\n  t[\"angbracketrightBigg\"] = 0x232a;\n  t[\"angbracketrightbigg\"] = 0x232a;\n  t[\"arrowhookleft\"] = 0x21aa;\n  t[\"arrowhookright\"] = 0x21a9;\n  t[\"arrowlefttophalf\"] = 0x21bc;\n  t[\"arrowleftbothalf\"] = 0x21bd;\n  t[\"arrownortheast\"] = 0x2197;\n  t[\"arrownorthwest\"] = 0x2196;\n  t[\"arrowrighttophalf\"] = 0x21c0;\n  t[\"arrowrightbothalf\"] = 0x21c1;\n  t[\"arrowsoutheast\"] = 0x2198;\n  t[\"arrowsouthwest\"] = 0x2199;\n  t[\"backslashbig\"] = 0x2216;\n  t[\"backslashBig\"] = 0x2216;\n  t[\"backslashBigg\"] = 0x2216;\n  t[\"backslashbigg\"] = 0x2216;\n  t[\"bardbl\"] = 0x2016;\n  t[\"bracehtipdownleft\"] = 0xfe37;\n  t[\"bracehtipdownright\"] = 0xfe37;\n  t[\"bracehtipupleft\"] = 0xfe38;\n  t[\"bracehtipupright\"] = 0xfe38;\n  t[\"braceleftBig\"] = 0x007b;\n  t[\"braceleftbig\"] = 0x007b;\n  t[\"braceleftbigg\"] = 0x007b;\n  t[\"braceleftBigg\"] = 0x007b;\n  t[\"bracerightBig\"] = 0x007d;\n  t[\"bracerightbig\"] = 0x007d;\n  t[\"bracerightbigg\"] = 0x007d;\n  t[\"bracerightBigg\"] = 0x007d;\n  t[\"bracketleftbig\"] = 0x005b;\n  t[\"bracketleftBig\"] = 0x005b;\n  t[\"bracketleftbigg\"] = 0x005b;\n  t[\"bracketleftBigg\"] = 0x005b;\n  t[\"bracketrightBig\"] = 0x005d;\n  t[\"bracketrightbig\"] = 0x005d;\n  t[\"bracketrightbigg\"] = 0x005d;\n  t[\"bracketrightBigg\"] = 0x005d;\n  t[\"ceilingleftbig\"] = 0x2308;\n  t[\"ceilingleftBig\"] = 0x2308;\n  t[\"ceilingleftBigg\"] = 0x2308;\n  t[\"ceilingleftbigg\"] = 0x2308;\n  t[\"ceilingrightbig\"] = 0x2309;\n  t[\"ceilingrightBig\"] = 0x2309;\n  t[\"ceilingrightbigg\"] = 0x2309;\n  t[\"ceilingrightBigg\"] = 0x2309;\n  t[\"circledotdisplay\"] = 0x2299;\n  t[\"circledottext\"] = 0x2299;\n  t[\"circlemultiplydisplay\"] = 0x2297;\n  t[\"circlemultiplytext\"] = 0x2297;\n  t[\"circleplusdisplay\"] = 0x2295;\n  t[\"circleplustext\"] = 0x2295;\n  t[\"contintegraldisplay\"] = 0x222e;\n  t[\"contintegraltext\"] = 0x222e;\n  t[\"coproductdisplay\"] = 0x2210;\n  t[\"coproducttext\"] = 0x2210;\n  t[\"floorleftBig\"] = 0x230a;\n  t[\"floorleftbig\"] = 0x230a;\n  t[\"floorleftbigg\"] = 0x230a;\n  t[\"floorleftBigg\"] = 0x230a;\n  t[\"floorrightbig\"] = 0x230b;\n  t[\"floorrightBig\"] = 0x230b;\n  t[\"floorrightBigg\"] = 0x230b;\n  t[\"floorrightbigg\"] = 0x230b;\n  t[\"hatwide\"] = 0x0302;\n  t[\"hatwider\"] = 0x0302;\n  t[\"hatwidest\"] = 0x0302;\n  t[\"intercal\"] = 0x1d40;\n  t[\"integraldisplay\"] = 0x222b;\n  t[\"integraltext\"] = 0x222b;\n  t[\"intersectiondisplay\"] = 0x22c2;\n  t[\"intersectiontext\"] = 0x22c2;\n  t[\"logicalanddisplay\"] = 0x2227;\n  t[\"logicalandtext\"] = 0x2227;\n  t[\"logicalordisplay\"] = 0x2228;\n  t[\"logicalortext\"] = 0x2228;\n  t[\"parenleftBig\"] = 0x0028;\n  t[\"parenleftbig\"] = 0x0028;\n  t[\"parenleftBigg\"] = 0x0028;\n  t[\"parenleftbigg\"] = 0x0028;\n  t[\"parenrightBig\"] = 0x0029;\n  t[\"parenrightbig\"] = 0x0029;\n  t[\"parenrightBigg\"] = 0x0029;\n  t[\"parenrightbigg\"] = 0x0029;\n  t[\"prime\"] = 0x2032;\n  t[\"productdisplay\"] = 0x220f;\n  t[\"producttext\"] = 0x220f;\n  t[\"radicalbig\"] = 0x221a;\n  t[\"radicalBig\"] = 0x221a;\n  t[\"radicalBigg\"] = 0x221a;\n  t[\"radicalbigg\"] = 0x221a;\n  t[\"radicalbt\"] = 0x221a;\n  t[\"radicaltp\"] = 0x221a;\n  t[\"radicalvertex\"] = 0x221a;\n  t[\"slashbig\"] = 0x002f;\n  t[\"slashBig\"] = 0x002f;\n  t[\"slashBigg\"] = 0x002f;\n  t[\"slashbigg\"] = 0x002f;\n  t[\"summationdisplay\"] = 0x2211;\n  t[\"summationtext\"] = 0x2211;\n  t[\"tildewide\"] = 0x02dc;\n  t[\"tildewider\"] = 0x02dc;\n  t[\"tildewidest\"] = 0x02dc;\n  t[\"uniondisplay\"] = 0x22c3;\n  t[\"unionmultidisplay\"] = 0x228e;\n  t[\"unionmultitext\"] = 0x228e;\n  t[\"unionsqdisplay\"] = 0x2294;\n  t[\"unionsqtext\"] = 0x2294;\n  t[\"uniontext\"] = 0x22c3;\n  t[\"vextenddouble\"] = 0x2225;\n  t[\"vextendsingle\"] = 0x2223;\n});\n\nvar getDingbatsGlyphsUnicode = getLookupTableFactory(function(t) {\n  t[\"space\"] = 0x0020;\n  t[\"a1\"] = 0x2701;\n  t[\"a2\"] = 0x2702;\n  t[\"a202\"] = 0x2703;\n  t[\"a3\"] = 0x2704;\n  t[\"a4\"] = 0x260e;\n  t[\"a5\"] = 0x2706;\n  t[\"a119\"] = 0x2707;\n  t[\"a118\"] = 0x2708;\n  t[\"a117\"] = 0x2709;\n  t[\"a11\"] = 0x261b;\n  t[\"a12\"] = 0x261e;\n  t[\"a13\"] = 0x270c;\n  t[\"a14\"] = 0x270d;\n  t[\"a15\"] = 0x270e;\n  t[\"a16\"] = 0x270f;\n  t[\"a105\"] = 0x2710;\n  t[\"a17\"] = 0x2711;\n  t[\"a18\"] = 0x2712;\n  t[\"a19\"] = 0x2713;\n  t[\"a20\"] = 0x2714;\n  t[\"a21\"] = 0x2715;\n  t[\"a22\"] = 0x2716;\n  t[\"a23\"] = 0x2717;\n  t[\"a24\"] = 0x2718;\n  t[\"a25\"] = 0x2719;\n  t[\"a26\"] = 0x271a;\n  t[\"a27\"] = 0x271b;\n  t[\"a28\"] = 0x271c;\n  t[\"a6\"] = 0x271d;\n  t[\"a7\"] = 0x271e;\n  t[\"a8\"] = 0x271f;\n  t[\"a9\"] = 0x2720;\n  t[\"a10\"] = 0x2721;\n  t[\"a29\"] = 0x2722;\n  t[\"a30\"] = 0x2723;\n  t[\"a31\"] = 0x2724;\n  t[\"a32\"] = 0x2725;\n  t[\"a33\"] = 0x2726;\n  t[\"a34\"] = 0x2727;\n  t[\"a35\"] = 0x2605;\n  t[\"a36\"] = 0x2729;\n  t[\"a37\"] = 0x272a;\n  t[\"a38\"] = 0x272b;\n  t[\"a39\"] = 0x272c;\n  t[\"a40\"] = 0x272d;\n  t[\"a41\"] = 0x272e;\n  t[\"a42\"] = 0x272f;\n  t[\"a43\"] = 0x2730;\n  t[\"a44\"] = 0x2731;\n  t[\"a45\"] = 0x2732;\n  t[\"a46\"] = 0x2733;\n  t[\"a47\"] = 0x2734;\n  t[\"a48\"] = 0x2735;\n  t[\"a49\"] = 0x2736;\n  t[\"a50\"] = 0x2737;\n  t[\"a51\"] = 0x2738;\n  t[\"a52\"] = 0x2739;\n  t[\"a53\"] = 0x273a;\n  t[\"a54\"] = 0x273b;\n  t[\"a55\"] = 0x273c;\n  t[\"a56\"] = 0x273d;\n  t[\"a57\"] = 0x273e;\n  t[\"a58\"] = 0x273f;\n  t[\"a59\"] = 0x2740;\n  t[\"a60\"] = 0x2741;\n  t[\"a61\"] = 0x2742;\n  t[\"a62\"] = 0x2743;\n  t[\"a63\"] = 0x2744;\n  t[\"a64\"] = 0x2745;\n  t[\"a65\"] = 0x2746;\n  t[\"a66\"] = 0x2747;\n  t[\"a67\"] = 0x2748;\n  t[\"a68\"] = 0x2749;\n  t[\"a69\"] = 0x274a;\n  t[\"a70\"] = 0x274b;\n  t[\"a71\"] = 0x25cf;\n  t[\"a72\"] = 0x274d;\n  t[\"a73\"] = 0x25a0;\n  t[\"a74\"] = 0x274f;\n  t[\"a203\"] = 0x2750;\n  t[\"a75\"] = 0x2751;\n  t[\"a204\"] = 0x2752;\n  t[\"a76\"] = 0x25b2;\n  t[\"a77\"] = 0x25bc;\n  t[\"a78\"] = 0x25c6;\n  t[\"a79\"] = 0x2756;\n  t[\"a81\"] = 0x25d7;\n  t[\"a82\"] = 0x2758;\n  t[\"a83\"] = 0x2759;\n  t[\"a84\"] = 0x275a;\n  t[\"a97\"] = 0x275b;\n  t[\"a98\"] = 0x275c;\n  t[\"a99\"] = 0x275d;\n  t[\"a100\"] = 0x275e;\n  t[\"a101\"] = 0x2761;\n  t[\"a102\"] = 0x2762;\n  t[\"a103\"] = 0x2763;\n  t[\"a104\"] = 0x2764;\n  t[\"a106\"] = 0x2765;\n  t[\"a107\"] = 0x2766;\n  t[\"a108\"] = 0x2767;\n  t[\"a112\"] = 0x2663;\n  t[\"a111\"] = 0x2666;\n  t[\"a110\"] = 0x2665;\n  t[\"a109\"] = 0x2660;\n  t[\"a120\"] = 0x2460;\n  t[\"a121\"] = 0x2461;\n  t[\"a122\"] = 0x2462;\n  t[\"a123\"] = 0x2463;\n  t[\"a124\"] = 0x2464;\n  t[\"a125\"] = 0x2465;\n  t[\"a126\"] = 0x2466;\n  t[\"a127\"] = 0x2467;\n  t[\"a128\"] = 0x2468;\n  t[\"a129\"] = 0x2469;\n  t[\"a130\"] = 0x2776;\n  t[\"a131\"] = 0x2777;\n  t[\"a132\"] = 0x2778;\n  t[\"a133\"] = 0x2779;\n  t[\"a134\"] = 0x277a;\n  t[\"a135\"] = 0x277b;\n  t[\"a136\"] = 0x277c;\n  t[\"a137\"] = 0x277d;\n  t[\"a138\"] = 0x277e;\n  t[\"a139\"] = 0x277f;\n  t[\"a140\"] = 0x2780;\n  t[\"a141\"] = 0x2781;\n  t[\"a142\"] = 0x2782;\n  t[\"a143\"] = 0x2783;\n  t[\"a144\"] = 0x2784;\n  t[\"a145\"] = 0x2785;\n  t[\"a146\"] = 0x2786;\n  t[\"a147\"] = 0x2787;\n  t[\"a148\"] = 0x2788;\n  t[\"a149\"] = 0x2789;\n  t[\"a150\"] = 0x278a;\n  t[\"a151\"] = 0x278b;\n  t[\"a152\"] = 0x278c;\n  t[\"a153\"] = 0x278d;\n  t[\"a154\"] = 0x278e;\n  t[\"a155\"] = 0x278f;\n  t[\"a156\"] = 0x2790;\n  t[\"a157\"] = 0x2791;\n  t[\"a158\"] = 0x2792;\n  t[\"a159\"] = 0x2793;\n  t[\"a160\"] = 0x2794;\n  t[\"a161\"] = 0x2192;\n  t[\"a163\"] = 0x2194;\n  t[\"a164\"] = 0x2195;\n  t[\"a196\"] = 0x2798;\n  t[\"a165\"] = 0x2799;\n  t[\"a192\"] = 0x279a;\n  t[\"a166\"] = 0x279b;\n  t[\"a167\"] = 0x279c;\n  t[\"a168\"] = 0x279d;\n  t[\"a169\"] = 0x279e;\n  t[\"a170\"] = 0x279f;\n  t[\"a171\"] = 0x27a0;\n  t[\"a172\"] = 0x27a1;\n  t[\"a173\"] = 0x27a2;\n  t[\"a162\"] = 0x27a3;\n  t[\"a174\"] = 0x27a4;\n  t[\"a175\"] = 0x27a5;\n  t[\"a176\"] = 0x27a6;\n  t[\"a177\"] = 0x27a7;\n  t[\"a178\"] = 0x27a8;\n  t[\"a179\"] = 0x27a9;\n  t[\"a193\"] = 0x27aa;\n  t[\"a180\"] = 0x27ab;\n  t[\"a199\"] = 0x27ac;\n  t[\"a181\"] = 0x27ad;\n  t[\"a200\"] = 0x27ae;\n  t[\"a182\"] = 0x27af;\n  t[\"a201\"] = 0x27b1;\n  t[\"a183\"] = 0x27b2;\n  t[\"a184\"] = 0x27b3;\n  t[\"a197\"] = 0x27b4;\n  t[\"a185\"] = 0x27b5;\n  t[\"a194\"] = 0x27b6;\n  t[\"a198\"] = 0x27b7;\n  t[\"a186\"] = 0x27b8;\n  t[\"a195\"] = 0x27b9;\n  t[\"a187\"] = 0x27ba;\n  t[\"a188\"] = 0x27bb;\n  t[\"a189\"] = 0x27bc;\n  t[\"a190\"] = 0x27bd;\n  t[\"a191\"] = 0x27be;\n  t[\"a89\"] = 0x2768; // 0xF8D7\n  t[\"a90\"] = 0x2769; // 0xF8D8\n  t[\"a93\"] = 0x276a; // 0xF8D9\n  t[\"a94\"] = 0x276b; // 0xF8DA\n  t[\"a91\"] = 0x276c; // 0xF8DB\n  t[\"a92\"] = 0x276d; // 0xF8DC\n  t[\"a205\"] = 0x276e; // 0xF8DD\n  t[\"a85\"] = 0x276f; // 0xF8DE\n  t[\"a206\"] = 0x2770; // 0xF8DF\n  t[\"a86\"] = 0x2771; // 0xF8E0\n  t[\"a87\"] = 0x2772; // 0xF8E1\n  t[\"a88\"] = 0x2773; // 0xF8E2\n  t[\"a95\"] = 0x2774; // 0xF8E3\n  t[\"a96\"] = 0x2775; // 0xF8E4\n  t[\".notdef\"] = 0x0000;\n});\n\nexports.getGlyphsUnicode = getGlyphsUnicode;\nexports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function(t) {\n  t[\"ArialNarrow\"] = \"Helvetica\";\n  t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n  t[\"ArialBlack\"] = \"Helvetica\";\n  t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-Black\"] = \"Helvetica\";\n  t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial\"] = \"Helvetica\";\n  t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n  t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n  t[\"ArialMT\"] = \"Helvetica\";\n  t[\"Courier-Bold\"] = \"Courier-Bold\";\n  t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"Courier-Italic\"] = \"Courier-Oblique\";\n  t[\"CourierNew\"] = \"Courier\";\n  t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n  t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n  t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n  t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n  t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n  t[\"CourierNewPSMT\"] = \"Courier\";\n  t[\"Helvetica\"] = \"Helvetica\";\n  t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n  t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n  t[\"Symbol-Bold\"] = \"Symbol\";\n  t[\"Symbol-BoldItalic\"] = \"Symbol\";\n  t[\"Symbol-Italic\"] = \"Symbol\";\n  t[\"TimesNewRoman\"] = \"Times-Roman\";\n  t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n  t[\"TimesNewRomanPS\"] = \"Times-Roman\";\n  t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n  t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n  t[\"TimesNewRomanPSMT\"] = \"Times-Roman\";\n  t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function(t) {\n  t[\"Calibri\"] = \"Helvetica\";\n  t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n  t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n  t[\"CenturyGothic\"] = \"Helvetica\";\n  t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n  t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n  t[\"ComicSansMS\"] = \"Comic Sans MS\";\n  t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n  t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n  t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n  t[\"LucidaConsole\"] = \"Courier\";\n  t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n  t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n  t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n  t[\"MS-Gothic\"] = \"MS Gothic\";\n  t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n  t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n  t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n  t[\"MS-Mincho\"] = \"MS Mincho\";\n  t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n  t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n  t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n  t[\"MS-PGothic\"] = \"MS PGothic\";\n  t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n  t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n  t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n  t[\"MS-PMincho\"] = \"MS PMincho\";\n  t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n  t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n  t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n  t[\"NuptialScript\"] = \"Times-Italic\";\n  t[\"SegoeUISymbol\"] = \"Helvetica\";\n  t[\"Wingdings\"] = \"ZapfDingbats\";\n  t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function(t) {\n  t[\"Adobe Jenson\"] = true;\n  t[\"Adobe Text\"] = true;\n  t[\"Albertus\"] = true;\n  t[\"Aldus\"] = true;\n  t[\"Alexandria\"] = true;\n  t[\"Algerian\"] = true;\n  t[\"American Typewriter\"] = true;\n  t[\"Antiqua\"] = true;\n  t[\"Apex\"] = true;\n  t[\"Arno\"] = true;\n  t[\"Aster\"] = true;\n  t[\"Aurora\"] = true;\n  t[\"Baskerville\"] = true;\n  t[\"Bell\"] = true;\n  t[\"Bembo\"] = true;\n  t[\"Bembo Schoolbook\"] = true;\n  t[\"Benguiat\"] = true;\n  t[\"Berkeley Old Style\"] = true;\n  t[\"Bernhard Modern\"] = true;\n  t[\"Berthold City\"] = true;\n  t[\"Bodoni\"] = true;\n  t[\"Bauer Bodoni\"] = true;\n  t[\"Book Antiqua\"] = true;\n  t[\"Bookman\"] = true;\n  t[\"Bordeaux Roman\"] = true;\n  t[\"Californian FB\"] = true;\n  t[\"Calisto\"] = true;\n  t[\"Calvert\"] = true;\n  t[\"Capitals\"] = true;\n  t[\"Cambria\"] = true;\n  t[\"Cartier\"] = true;\n  t[\"Caslon\"] = true;\n  t[\"Catull\"] = true;\n  t[\"Centaur\"] = true;\n  t[\"Century Old Style\"] = true;\n  t[\"Century Schoolbook\"] = true;\n  t[\"Chaparral\"] = true;\n  t[\"Charis SIL\"] = true;\n  t[\"Cheltenham\"] = true;\n  t[\"Cholla Slab\"] = true;\n  t[\"Clarendon\"] = true;\n  t[\"Clearface\"] = true;\n  t[\"Cochin\"] = true;\n  t[\"Colonna\"] = true;\n  t[\"Computer Modern\"] = true;\n  t[\"Concrete Roman\"] = true;\n  t[\"Constantia\"] = true;\n  t[\"Cooper Black\"] = true;\n  t[\"Corona\"] = true;\n  t[\"Ecotype\"] = true;\n  t[\"Egyptienne\"] = true;\n  t[\"Elephant\"] = true;\n  t[\"Excelsior\"] = true;\n  t[\"Fairfield\"] = true;\n  t[\"FF Scala\"] = true;\n  t[\"Folkard\"] = true;\n  t[\"Footlight\"] = true;\n  t[\"FreeSerif\"] = true;\n  t[\"Friz Quadrata\"] = true;\n  t[\"Garamond\"] = true;\n  t[\"Gentium\"] = true;\n  t[\"Georgia\"] = true;\n  t[\"Gloucester\"] = true;\n  t[\"Goudy Old Style\"] = true;\n  t[\"Goudy Schoolbook\"] = true;\n  t[\"Goudy Pro Font\"] = true;\n  t[\"Granjon\"] = true;\n  t[\"Guardian Egyptian\"] = true;\n  t[\"Heather\"] = true;\n  t[\"Hercules\"] = true;\n  t[\"High Tower Text\"] = true;\n  t[\"Hiroshige\"] = true;\n  t[\"Hoefler Text\"] = true;\n  t[\"Humana Serif\"] = true;\n  t[\"Imprint\"] = true;\n  t[\"Ionic No. 5\"] = true;\n  t[\"Janson\"] = true;\n  t[\"Joanna\"] = true;\n  t[\"Korinna\"] = true;\n  t[\"Lexicon\"] = true;\n  t[\"Liberation Serif\"] = true;\n  t[\"Linux Libertine\"] = true;\n  t[\"Literaturnaya\"] = true;\n  t[\"Lucida\"] = true;\n  t[\"Lucida Bright\"] = true;\n  t[\"Melior\"] = true;\n  t[\"Memphis\"] = true;\n  t[\"Miller\"] = true;\n  t[\"Minion\"] = true;\n  t[\"Modern\"] = true;\n  t[\"Mona Lisa\"] = true;\n  t[\"Mrs Eaves\"] = true;\n  t[\"MS Serif\"] = true;\n  t[\"Museo Slab\"] = true;\n  t[\"New York\"] = true;\n  t[\"Nimbus Roman\"] = true;\n  t[\"NPS Rawlinson Roadway\"] = true;\n  t[\"NuptialScript\"] = true;\n  t[\"Palatino\"] = true;\n  t[\"Perpetua\"] = true;\n  t[\"Plantin\"] = true;\n  t[\"Plantin Schoolbook\"] = true;\n  t[\"Playbill\"] = true;\n  t[\"Poor Richard\"] = true;\n  t[\"Rawlinson Roadway\"] = true;\n  t[\"Renault\"] = true;\n  t[\"Requiem\"] = true;\n  t[\"Rockwell\"] = true;\n  t[\"Roman\"] = true;\n  t[\"Rotis Serif\"] = true;\n  t[\"Sabon\"] = true;\n  t[\"Scala\"] = true;\n  t[\"Seagull\"] = true;\n  t[\"Sistina\"] = true;\n  t[\"Souvenir\"] = true;\n  t[\"STIX\"] = true;\n  t[\"Stone Informal\"] = true;\n  t[\"Stone Serif\"] = true;\n  t[\"Sylfaen\"] = true;\n  t[\"Times\"] = true;\n  t[\"Trajan\"] = true;\n  t[\"Trinité\"] = true;\n  t[\"Trump Mediaeval\"] = true;\n  t[\"Utopia\"] = true;\n  t[\"Vale Type\"] = true;\n  t[\"Bitstream Vera\"] = true;\n  t[\"Vera Serif\"] = true;\n  t[\"Versailles\"] = true;\n  t[\"Wanted\"] = true;\n  t[\"Weiss\"] = true;\n  t[\"Wide Latin\"] = true;\n  t[\"Windsor\"] = true;\n  t[\"XITS\"] = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function(t) {\n  t[\"Dingbats\"] = true;\n  t[\"Symbol\"] = true;\n  t[\"ZapfDingbats\"] = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function(t) {\n  t[2] = 10;\n  t[3] = 32;\n  t[4] = 33;\n  t[5] = 34;\n  t[6] = 35;\n  t[7] = 36;\n  t[8] = 37;\n  t[9] = 38;\n  t[10] = 39;\n  t[11] = 40;\n  t[12] = 41;\n  t[13] = 42;\n  t[14] = 43;\n  t[15] = 44;\n  t[16] = 45;\n  t[17] = 46;\n  t[18] = 47;\n  t[19] = 48;\n  t[20] = 49;\n  t[21] = 50;\n  t[22] = 51;\n  t[23] = 52;\n  t[24] = 53;\n  t[25] = 54;\n  t[26] = 55;\n  t[27] = 56;\n  t[28] = 57;\n  t[29] = 58;\n  t[30] = 894;\n  t[31] = 60;\n  t[32] = 61;\n  t[33] = 62;\n  t[34] = 63;\n  t[35] = 64;\n  t[36] = 65;\n  t[37] = 66;\n  t[38] = 67;\n  t[39] = 68;\n  t[40] = 69;\n  t[41] = 70;\n  t[42] = 71;\n  t[43] = 72;\n  t[44] = 73;\n  t[45] = 74;\n  t[46] = 75;\n  t[47] = 76;\n  t[48] = 77;\n  t[49] = 78;\n  t[50] = 79;\n  t[51] = 80;\n  t[52] = 81;\n  t[53] = 82;\n  t[54] = 83;\n  t[55] = 84;\n  t[56] = 85;\n  t[57] = 86;\n  t[58] = 87;\n  t[59] = 88;\n  t[60] = 89;\n  t[61] = 90;\n  t[62] = 91;\n  t[63] = 92;\n  t[64] = 93;\n  t[65] = 94;\n  t[66] = 95;\n  t[67] = 96;\n  t[68] = 97;\n  t[69] = 98;\n  t[70] = 99;\n  t[71] = 100;\n  t[72] = 101;\n  t[73] = 102;\n  t[74] = 103;\n  t[75] = 104;\n  t[76] = 105;\n  t[77] = 106;\n  t[78] = 107;\n  t[79] = 108;\n  t[80] = 109;\n  t[81] = 110;\n  t[82] = 111;\n  t[83] = 112;\n  t[84] = 113;\n  t[85] = 114;\n  t[86] = 115;\n  t[87] = 116;\n  t[88] = 117;\n  t[89] = 118;\n  t[90] = 119;\n  t[91] = 120;\n  t[92] = 121;\n  t[93] = 122;\n  t[94] = 123;\n  t[95] = 124;\n  t[96] = 125;\n  t[97] = 126;\n  t[98] = 196;\n  t[99] = 197;\n  t[100] = 199;\n  t[101] = 201;\n  t[102] = 209;\n  t[103] = 214;\n  t[104] = 220;\n  t[105] = 225;\n  t[106] = 224;\n  t[107] = 226;\n  t[108] = 228;\n  t[109] = 227;\n  t[110] = 229;\n  t[111] = 231;\n  t[112] = 233;\n  t[113] = 232;\n  t[114] = 234;\n  t[115] = 235;\n  t[116] = 237;\n  t[117] = 236;\n  t[118] = 238;\n  t[119] = 239;\n  t[120] = 241;\n  t[121] = 243;\n  t[122] = 242;\n  t[123] = 244;\n  t[124] = 246;\n  t[125] = 245;\n  t[126] = 250;\n  t[127] = 249;\n  t[128] = 251;\n  t[129] = 252;\n  t[130] = 8224;\n  t[131] = 176;\n  t[132] = 162;\n  t[133] = 163;\n  t[134] = 167;\n  t[135] = 8226;\n  t[136] = 182;\n  t[137] = 223;\n  t[138] = 174;\n  t[139] = 169;\n  t[140] = 8482;\n  t[141] = 180;\n  t[142] = 168;\n  t[143] = 8800;\n  t[144] = 198;\n  t[145] = 216;\n  t[146] = 8734;\n  t[147] = 177;\n  t[148] = 8804;\n  t[149] = 8805;\n  t[150] = 165;\n  t[151] = 181;\n  t[152] = 8706;\n  t[153] = 8721;\n  t[154] = 8719;\n  t[156] = 8747;\n  t[157] = 170;\n  t[158] = 186;\n  t[159] = 8486;\n  t[160] = 230;\n  t[161] = 248;\n  t[162] = 191;\n  t[163] = 161;\n  t[164] = 172;\n  t[165] = 8730;\n  t[166] = 402;\n  t[167] = 8776;\n  t[168] = 8710;\n  t[169] = 171;\n  t[170] = 187;\n  t[171] = 8230;\n  t[210] = 218;\n  t[223] = 711;\n  t[224] = 321;\n  t[225] = 322;\n  t[227] = 353;\n  t[229] = 382;\n  t[234] = 253;\n  t[252] = 263;\n  t[253] = 268;\n  t[254] = 269;\n  t[258] = 258;\n  t[260] = 260;\n  t[261] = 261;\n  t[265] = 280;\n  t[266] = 281;\n  t[268] = 283;\n  t[269] = 313;\n  t[275] = 323;\n  t[276] = 324;\n  t[278] = 328;\n  t[284] = 345;\n  t[285] = 346;\n  t[286] = 347;\n  t[292] = 367;\n  t[295] = 377;\n  t[296] = 378;\n  t[298] = 380;\n  t[305] = 963;\n  t[306] = 964;\n  t[307] = 966;\n  t[308] = 8215;\n  t[309] = 8252;\n  t[310] = 8319;\n  t[311] = 8359;\n  t[312] = 8592;\n  t[313] = 8593;\n  t[337] = 9552;\n  t[493] = 1039;\n  t[494] = 1040;\n  t[705] = 1524;\n  t[706] = 8362;\n  t[710] = 64288;\n  t[711] = 64298;\n  t[759] = 1617;\n  t[761] = 1776;\n  t[763] = 1778;\n  t[775] = 1652;\n  t[777] = 1764;\n  t[778] = 1780;\n  t[779] = 1781;\n  t[780] = 1782;\n  t[782] = 771;\n  t[783] = 64726;\n  t[786] = 8363;\n  t[788] = 8532;\n  t[790] = 768;\n  t[791] = 769;\n  t[792] = 768;\n  t[795] = 803;\n  t[797] = 64336;\n  t[798] = 64337;\n  t[799] = 64342;\n  t[800] = 64343;\n  t[801] = 64344;\n  t[802] = 64345;\n  t[803] = 64362;\n  t[804] = 64363;\n  t[805] = 64364;\n  t[2424] = 7821;\n  t[2425] = 7822;\n  t[2426] = 7823;\n  t[2427] = 7824;\n  t[2428] = 7825;\n  t[2429] = 7826;\n  t[2430] = 7827;\n  t[2433] = 7682;\n  t[2678] = 8045;\n  t[2679] = 8046;\n  t[2830] = 1552;\n  t[2838] = 686;\n  t[2840] = 751;\n  t[2842] = 753;\n  t[2843] = 754;\n  t[2844] = 755;\n  t[2846] = 757;\n  t[2856] = 767;\n  t[2857] = 848;\n  t[2858] = 849;\n  t[2862] = 853;\n  t[2863] = 854;\n  t[2864] = 855;\n  t[2865] = 861;\n  t[2866] = 862;\n  t[2906] = 7460;\n  t[2908] = 7462;\n  t[2909] = 7463;\n  t[2910] = 7464;\n  t[2912] = 7466;\n  t[2913] = 7467;\n  t[2914] = 7468;\n  t[2916] = 7470;\n  t[2917] = 7471;\n  t[2918] = 7472;\n  t[2920] = 7474;\n  t[2921] = 7475;\n  t[2922] = 7476;\n  t[2924] = 7478;\n  t[2925] = 7479;\n  t[2926] = 7480;\n  t[2928] = 7482;\n  t[2929] = 7483;\n  t[2930] = 7484;\n  t[2932] = 7486;\n  t[2933] = 7487;\n  t[2934] = 7488;\n  t[2936] = 7490;\n  t[2937] = 7491;\n  t[2938] = 7492;\n  t[2940] = 7494;\n  t[2941] = 7495;\n  t[2942] = 7496;\n  t[2944] = 7498;\n  t[2946] = 7500;\n  t[2948] = 7502;\n  t[2950] = 7504;\n  t[2951] = 7505;\n  t[2952] = 7506;\n  t[2954] = 7508;\n  t[2955] = 7509;\n  t[2956] = 7510;\n  t[2958] = 7512;\n  t[2959] = 7513;\n  t[2960] = 7514;\n  t[2962] = 7516;\n  t[2963] = 7517;\n  t[2964] = 7518;\n  t[2966] = 7520;\n  t[2967] = 7521;\n  t[2968] = 7522;\n  t[2970] = 7524;\n  t[2971] = 7525;\n  t[2972] = 7526;\n  t[2974] = 7528;\n  t[2975] = 7529;\n  t[2976] = 7530;\n  t[2978] = 1537;\n  t[2979] = 1538;\n  t[2980] = 1539;\n  t[2982] = 1549;\n  t[2983] = 1551;\n  t[2984] = 1552;\n  t[2986] = 1554;\n  t[2987] = 1555;\n  t[2988] = 1556;\n  t[2990] = 1623;\n  t[2991] = 1624;\n  t[2995] = 1775;\n  t[2999] = 1791;\n  t[3002] = 64290;\n  t[3003] = 64291;\n  t[3004] = 64292;\n  t[3006] = 64294;\n  t[3007] = 64295;\n  t[3008] = 64296;\n  t[3011] = 1900;\n  t[3014] = 8223;\n  t[3015] = 8244;\n  t[3017] = 7532;\n  t[3018] = 7533;\n  t[3019] = 7534;\n  t[3075] = 7590;\n  t[3076] = 7591;\n  t[3079] = 7594;\n  t[3080] = 7595;\n  t[3083] = 7598;\n  t[3084] = 7599;\n  t[3087] = 7602;\n  t[3088] = 7603;\n  t[3091] = 7606;\n  t[3092] = 7607;\n  t[3095] = 7610;\n  t[3096] = 7611;\n  t[3099] = 7614;\n  t[3100] = 7615;\n  t[3103] = 7618;\n  t[3104] = 7619;\n  t[3107] = 8337;\n  t[3108] = 8338;\n  t[3116] = 1884;\n  t[3119] = 1885;\n  t[3120] = 1885;\n  t[3123] = 1886;\n  t[3124] = 1886;\n  t[3127] = 1887;\n  t[3128] = 1887;\n  t[3131] = 1888;\n  t[3132] = 1888;\n  t[3135] = 1889;\n  t[3136] = 1889;\n  t[3139] = 1890;\n  t[3140] = 1890;\n  t[3143] = 1891;\n  t[3144] = 1891;\n  t[3147] = 1892;\n  t[3148] = 1892;\n  t[3153] = 580;\n  t[3154] = 581;\n  t[3157] = 584;\n  t[3158] = 585;\n  t[3161] = 588;\n  t[3162] = 589;\n  t[3165] = 891;\n  t[3166] = 892;\n  t[3169] = 1274;\n  t[3170] = 1275;\n  t[3173] = 1278;\n  t[3174] = 1279;\n  t[3181] = 7622;\n  t[3182] = 7623;\n  t[3282] = 11799;\n  t[3316] = 578;\n  t[3379] = 42785;\n  t[3393] = 1159;\n  t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function(t) {\n  t[227] = 322;\n  t[264] = 261;\n  t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function(t) {\n  t[1] = 32;\n  t[4] = 65;\n  t[17] = 66;\n  t[18] = 67;\n  t[24] = 68;\n  t[28] = 69;\n  t[38] = 70;\n  t[39] = 71;\n  t[44] = 72;\n  t[47] = 73;\n  t[58] = 74;\n  t[60] = 75;\n  t[62] = 76;\n  t[68] = 77;\n  t[69] = 78;\n  t[75] = 79;\n  t[87] = 80;\n  t[89] = 81;\n  t[90] = 82;\n  t[94] = 83;\n  t[100] = 84;\n  t[104] = 85;\n  t[115] = 86;\n  t[116] = 87;\n  t[121] = 88;\n  t[122] = 89;\n  t[127] = 90;\n  t[258] = 97;\n  t[268] = 261;\n  t[271] = 98;\n  t[272] = 99;\n  t[273] = 263;\n  t[282] = 100;\n  t[286] = 101;\n  t[295] = 281;\n  t[296] = 102;\n  t[336] = 103;\n  t[346] = 104;\n  t[349] = 105;\n  t[361] = 106;\n  t[364] = 107;\n  t[367] = 108;\n  t[371] = 322;\n  t[373] = 109;\n  t[374] = 110;\n  t[381] = 111;\n  t[383] = 243;\n  t[393] = 112;\n  t[395] = 113;\n  t[396] = 114;\n  t[400] = 115;\n  t[401] = 347;\n  t[410] = 116;\n  t[437] = 117;\n  t[448] = 118;\n  t[449] = 119;\n  t[454] = 120;\n  t[455] = 121;\n  t[460] = 122;\n  t[463] = 380;\n  t[853] = 44;\n  t[855] = 58;\n  t[856] = 46;\n  t[876] = 47;\n  t[878] = 45;\n  t[882] = 45;\n  t[894] = 40;\n  t[895] = 41;\n  t[896] = 91;\n  t[897] = 93;\n  t[923] = 64;\n  t[1004] = 48;\n  t[1005] = 49;\n  t[1006] = 50;\n  t[1007] = 51;\n  t[1008] = 52;\n  t[1009] = 53;\n  t[1010] = 54;\n  t[1011] = 55;\n  t[1012] = 56;\n  t[1013] = 57;\n  t[1081] = 37;\n  t[1085] = 43;\n  t[1086] = 45;\n});\n\nexport {\n  getStdFontMap,\n  getNonStdFontMap,\n  getSerifFonts,\n  getSymbolsFonts,\n  getGlyphMapForStandardFonts,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n};\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nvar getLookupTableFactory = require(\"./core_utils.js\").getLookupTableFactory;\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nvar getSpecialPUASymbols = getLookupTableFactory(function(t) {\n  t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n  t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n  t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n  t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n  t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n  t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n  t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n  t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n  t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n  t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n  t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n  t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n  t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n  t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n  t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n  t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n  t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n  t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n  t[63723] = 0x239b; // parenlefttp (0xF8EB)\n  t[63724] = 0x239c; // parenleftex (0xF8EC)\n  t[63725] = 0x239d; // parenleftbt (0xF8ED)\n  t[63734] = 0x239e; // parenrighttp (0xF8F6)\n  t[63735] = 0x239f; // parenrightex (0xF8F7)\n  t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n  if (code >= 0xfff0 && code <= 0xffff) {\n    // Specials unicode block.\n    return 0;\n  } else if (code >= 0xf600 && code <= 0xf8ff) {\n    return getSpecialPUASymbols()[code] || code;\n  } else if (code === /* softhyphen = */ 0x00ad) {\n    return 0x002d; // hyphen\n  }\n  return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n  var unicode = glyphsUnicodeMap[name];\n  if (unicode !== undefined) {\n    return unicode;\n  }\n  if (!name) {\n    return -1;\n  }\n  // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n  if (name[0] === \"u\") {\n    var nameLen = name.length,\n      hexStr;\n\n    if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n      // 'uniXXXX'\n      hexStr = name.substring(3);\n    } else if (nameLen >= 5 && nameLen <= 7) {\n      // 'uXXXX{XX}'\n      hexStr = name.substring(1);\n    } else {\n      return -1;\n    }\n    // Check for upper-case hexadecimal characters, to avoid false positives.\n    if (hexStr === hexStr.toUpperCase()) {\n      unicode = parseInt(hexStr, 16);\n      if (unicode >= 0) {\n        return unicode;\n      }\n    }\n  }\n  return -1;\n}\n\nvar UnicodeRanges = [\n  { begin: 0x0000, end: 0x007f }, // Basic Latin\n  { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n  { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n  { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n  { begin: 0x0250, end: 0x02af }, // IPA Extensions\n  { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n  { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n  { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n  { begin: 0x2c80, end: 0x2cff }, // Coptic\n  { begin: 0x0400, end: 0x04ff }, // Cyrillic\n  { begin: 0x0530, end: 0x058f }, // Armenian\n  { begin: 0x0590, end: 0x05ff }, // Hebrew\n  { begin: 0xa500, end: 0xa63f }, // Vai\n  { begin: 0x0600, end: 0x06ff }, // Arabic\n  { begin: 0x07c0, end: 0x07ff }, // NKo\n  { begin: 0x0900, end: 0x097f }, // Devanagari\n  { begin: 0x0980, end: 0x09ff }, // Bengali\n  { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n  { begin: 0x0a80, end: 0x0aff }, // Gujarati\n  { begin: 0x0b00, end: 0x0b7f }, // Oriya\n  { begin: 0x0b80, end: 0x0bff }, // Tamil\n  { begin: 0x0c00, end: 0x0c7f }, // Telugu\n  { begin: 0x0c80, end: 0x0cff }, // Kannada\n  { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n  { begin: 0x0e00, end: 0x0e7f }, // Thai\n  { begin: 0x0e80, end: 0x0eff }, // Lao\n  { begin: 0x10a0, end: 0x10ff }, // Georgian\n  { begin: 0x1b00, end: 0x1b7f }, // Balinese\n  { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n  { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n  { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n  { begin: 0x2000, end: 0x206f }, // General Punctuation\n  { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n  { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n  { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n  { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n  { begin: 0x2150, end: 0x218f }, // Number Forms\n  { begin: 0x2190, end: 0x21ff }, // Arrows\n  { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n  { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n  { begin: 0x2400, end: 0x243f }, // Control Pictures\n  { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n  { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n  { begin: 0x2500, end: 0x257f }, // Box Drawing\n  { begin: 0x2580, end: 0x259f }, // Block Elements\n  { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n  { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n  { begin: 0x2700, end: 0x27bf }, // Dingbats\n  { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n  { begin: 0x3040, end: 0x309f }, // Hiragana\n  { begin: 0x30a0, end: 0x30ff }, // Katakana\n  { begin: 0x3100, end: 0x312f }, // Bopomofo\n  { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n  { begin: 0xa840, end: 0xa87f }, // Phags-pa\n  { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n  { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n  { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n  { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n  { begin: 0x10900, end: 0x1091f }, // Phoenicia\n  { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n  { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n  { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n  { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n  { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n  { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n  { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n  { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n  { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n  { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n  { begin: 0xfff0, end: 0xffff }, // Specials\n  { begin: 0x0f00, end: 0x0fff }, // Tibetan\n  { begin: 0x0700, end: 0x074f }, // Syriac\n  { begin: 0x0780, end: 0x07bf }, // Thaana\n  { begin: 0x0d80, end: 0x0dff }, // Sinhala\n  { begin: 0x1000, end: 0x109f }, // Myanmar\n  { begin: 0x1200, end: 0x137f }, // Ethiopic\n  { begin: 0x13a0, end: 0x13ff }, // Cherokee\n  { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n  { begin: 0x1680, end: 0x169f }, // Ogham\n  { begin: 0x16a0, end: 0x16ff }, // Runic\n  { begin: 0x1780, end: 0x17ff }, // Khmer\n  { begin: 0x1800, end: 0x18af }, // Mongolian\n  { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n  { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n  { begin: 0x1700, end: 0x171f }, // Tagalog\n  { begin: 0x10300, end: 0x1032f }, // Old Italic\n  { begin: 0x10330, end: 0x1034f }, // Gothic\n  { begin: 0x10400, end: 0x1044f }, // Deseret\n  { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n  { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n  { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n  { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n  { begin: 0xe0000, end: 0xe007f }, // Tags\n  { begin: 0x1900, end: 0x194f }, // Limbu\n  { begin: 0x1950, end: 0x197f }, // Tai Le\n  { begin: 0x1980, end: 0x19df }, // New Tai Lue\n  { begin: 0x1a00, end: 0x1a1f }, // Buginese\n  { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n  { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n  { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n  { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n  { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n  { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n  { begin: 0x10380, end: 0x1039f }, // Ugaritic\n  { begin: 0x103a0, end: 0x103df }, // Old Persian\n  { begin: 0x10450, end: 0x1047f }, // Shavian\n  { begin: 0x10480, end: 0x104af }, // Osmanya\n  { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n  { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n  { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n  { begin: 0x12000, end: 0x123ff }, // Cuneiform\n  { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n  { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n  { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n  { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n  { begin: 0xa880, end: 0xa8df }, // Saurashtra\n  { begin: 0xa900, end: 0xa92f }, // Kayah Li\n  { begin: 0xa930, end: 0xa95f }, // Rejang\n  { begin: 0xaa00, end: 0xaa5f }, // Cham\n  { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n  { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n  { begin: 0x102a0, end: 0x102df }, // Carian\n  { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n  for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n    var range = UnicodeRanges[i];\n    if (value >= range.begin && value < range.end) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction isRTLRangeFor(value) {\n  var range = UnicodeRanges[13];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  range = UnicodeRanges[11];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nvar getNormalizedUnicodes = getLookupTableFactory(function(t) {\n  t[\"\\u00A8\"] = \"\\u0020\\u0308\";\n  t[\"\\u00AF\"] = \"\\u0020\\u0304\";\n  t[\"\\u00B4\"] = \"\\u0020\\u0301\";\n  t[\"\\u00B5\"] = \"\\u03BC\";\n  t[\"\\u00B8\"] = \"\\u0020\\u0327\";\n  t[\"\\u0132\"] = \"\\u0049\\u004A\";\n  t[\"\\u0133\"] = \"\\u0069\\u006A\";\n  t[\"\\u013F\"] = \"\\u004C\\u00B7\";\n  t[\"\\u0140\"] = \"\\u006C\\u00B7\";\n  t[\"\\u0149\"] = \"\\u02BC\\u006E\";\n  t[\"\\u017F\"] = \"\\u0073\";\n  t[\"\\u01C4\"] = \"\\u0044\\u017D\";\n  t[\"\\u01C5\"] = \"\\u0044\\u017E\";\n  t[\"\\u01C6\"] = \"\\u0064\\u017E\";\n  t[\"\\u01C7\"] = \"\\u004C\\u004A\";\n  t[\"\\u01C8\"] = \"\\u004C\\u006A\";\n  t[\"\\u01C9\"] = \"\\u006C\\u006A\";\n  t[\"\\u01CA\"] = \"\\u004E\\u004A\";\n  t[\"\\u01CB\"] = \"\\u004E\\u006A\";\n  t[\"\\u01CC\"] = \"\\u006E\\u006A\";\n  t[\"\\u01F1\"] = \"\\u0044\\u005A\";\n  t[\"\\u01F2\"] = \"\\u0044\\u007A\";\n  t[\"\\u01F3\"] = \"\\u0064\\u007A\";\n  t[\"\\u02D8\"] = \"\\u0020\\u0306\";\n  t[\"\\u02D9\"] = \"\\u0020\\u0307\";\n  t[\"\\u02DA\"] = \"\\u0020\\u030A\";\n  t[\"\\u02DB\"] = \"\\u0020\\u0328\";\n  t[\"\\u02DC\"] = \"\\u0020\\u0303\";\n  t[\"\\u02DD\"] = \"\\u0020\\u030B\";\n  t[\"\\u037A\"] = \"\\u0020\\u0345\";\n  t[\"\\u0384\"] = \"\\u0020\\u0301\";\n  t[\"\\u03D0\"] = \"\\u03B2\";\n  t[\"\\u03D1\"] = \"\\u03B8\";\n  t[\"\\u03D2\"] = \"\\u03A5\";\n  t[\"\\u03D5\"] = \"\\u03C6\";\n  t[\"\\u03D6\"] = \"\\u03C0\";\n  t[\"\\u03F0\"] = \"\\u03BA\";\n  t[\"\\u03F1\"] = \"\\u03C1\";\n  t[\"\\u03F2\"] = \"\\u03C2\";\n  t[\"\\u03F4\"] = \"\\u0398\";\n  t[\"\\u03F5\"] = \"\\u03B5\";\n  t[\"\\u03F9\"] = \"\\u03A3\";\n  t[\"\\u0587\"] = \"\\u0565\\u0582\";\n  t[\"\\u0675\"] = \"\\u0627\\u0674\";\n  t[\"\\u0676\"] = \"\\u0648\\u0674\";\n  t[\"\\u0677\"] = \"\\u06C7\\u0674\";\n  t[\"\\u0678\"] = \"\\u064A\\u0674\";\n  t[\"\\u0E33\"] = \"\\u0E4D\\u0E32\";\n  t[\"\\u0EB3\"] = \"\\u0ECD\\u0EB2\";\n  t[\"\\u0EDC\"] = \"\\u0EAB\\u0E99\";\n  t[\"\\u0EDD\"] = \"\\u0EAB\\u0EA1\";\n  t[\"\\u0F77\"] = \"\\u0FB2\\u0F81\";\n  t[\"\\u0F79\"] = \"\\u0FB3\\u0F81\";\n  t[\"\\u1E9A\"] = \"\\u0061\\u02BE\";\n  t[\"\\u1FBD\"] = \"\\u0020\\u0313\";\n  t[\"\\u1FBF\"] = \"\\u0020\\u0313\";\n  t[\"\\u1FC0\"] = \"\\u0020\\u0342\";\n  t[\"\\u1FFE\"] = \"\\u0020\\u0314\";\n  t[\"\\u2002\"] = \"\\u0020\";\n  t[\"\\u2003\"] = \"\\u0020\";\n  t[\"\\u2004\"] = \"\\u0020\";\n  t[\"\\u2005\"] = \"\\u0020\";\n  t[\"\\u2006\"] = \"\\u0020\";\n  t[\"\\u2008\"] = \"\\u0020\";\n  t[\"\\u2009\"] = \"\\u0020\";\n  t[\"\\u200A\"] = \"\\u0020\";\n  t[\"\\u2017\"] = \"\\u0020\\u0333\";\n  t[\"\\u2024\"] = \"\\u002E\";\n  t[\"\\u2025\"] = \"\\u002E\\u002E\";\n  t[\"\\u2026\"] = \"\\u002E\\u002E\\u002E\";\n  t[\"\\u2033\"] = \"\\u2032\\u2032\";\n  t[\"\\u2034\"] = \"\\u2032\\u2032\\u2032\";\n  t[\"\\u2036\"] = \"\\u2035\\u2035\";\n  t[\"\\u2037\"] = \"\\u2035\\u2035\\u2035\";\n  t[\"\\u203C\"] = \"\\u0021\\u0021\";\n  t[\"\\u203E\"] = \"\\u0020\\u0305\";\n  t[\"\\u2047\"] = \"\\u003F\\u003F\";\n  t[\"\\u2048\"] = \"\\u003F\\u0021\";\n  t[\"\\u2049\"] = \"\\u0021\\u003F\";\n  t[\"\\u2057\"] = \"\\u2032\\u2032\\u2032\\u2032\";\n  t[\"\\u205F\"] = \"\\u0020\";\n  t[\"\\u20A8\"] = \"\\u0052\\u0073\";\n  t[\"\\u2100\"] = \"\\u0061\\u002F\\u0063\";\n  t[\"\\u2101\"] = \"\\u0061\\u002F\\u0073\";\n  t[\"\\u2103\"] = \"\\u00B0\\u0043\";\n  t[\"\\u2105\"] = \"\\u0063\\u002F\\u006F\";\n  t[\"\\u2106\"] = \"\\u0063\\u002F\\u0075\";\n  t[\"\\u2107\"] = \"\\u0190\";\n  t[\"\\u2109\"] = \"\\u00B0\\u0046\";\n  t[\"\\u2116\"] = \"\\u004E\\u006F\";\n  t[\"\\u2121\"] = \"\\u0054\\u0045\\u004C\";\n  t[\"\\u2135\"] = \"\\u05D0\";\n  t[\"\\u2136\"] = \"\\u05D1\";\n  t[\"\\u2137\"] = \"\\u05D2\";\n  t[\"\\u2138\"] = \"\\u05D3\";\n  t[\"\\u213B\"] = \"\\u0046\\u0041\\u0058\";\n  t[\"\\u2160\"] = \"\\u0049\";\n  t[\"\\u2161\"] = \"\\u0049\\u0049\";\n  t[\"\\u2162\"] = \"\\u0049\\u0049\\u0049\";\n  t[\"\\u2163\"] = \"\\u0049\\u0056\";\n  t[\"\\u2164\"] = \"\\u0056\";\n  t[\"\\u2165\"] = \"\\u0056\\u0049\";\n  t[\"\\u2166\"] = \"\\u0056\\u0049\\u0049\";\n  t[\"\\u2167\"] = \"\\u0056\\u0049\\u0049\\u0049\";\n  t[\"\\u2168\"] = \"\\u0049\\u0058\";\n  t[\"\\u2169\"] = \"\\u0058\";\n  t[\"\\u216A\"] = \"\\u0058\\u0049\";\n  t[\"\\u216B\"] = \"\\u0058\\u0049\\u0049\";\n  t[\"\\u216C\"] = \"\\u004C\";\n  t[\"\\u216D\"] = \"\\u0043\";\n  t[\"\\u216E\"] = \"\\u0044\";\n  t[\"\\u216F\"] = \"\\u004D\";\n  t[\"\\u2170\"] = \"\\u0069\";\n  t[\"\\u2171\"] = \"\\u0069\\u0069\";\n  t[\"\\u2172\"] = \"\\u0069\\u0069\\u0069\";\n  t[\"\\u2173\"] = \"\\u0069\\u0076\";\n  t[\"\\u2174\"] = \"\\u0076\";\n  t[\"\\u2175\"] = \"\\u0076\\u0069\";\n  t[\"\\u2176\"] = \"\\u0076\\u0069\\u0069\";\n  t[\"\\u2177\"] = \"\\u0076\\u0069\\u0069\\u0069\";\n  t[\"\\u2178\"] = \"\\u0069\\u0078\";\n  t[\"\\u2179\"] = \"\\u0078\";\n  t[\"\\u217A\"] = \"\\u0078\\u0069\";\n  t[\"\\u217B\"] = \"\\u0078\\u0069\\u0069\";\n  t[\"\\u217C\"] = \"\\u006C\";\n  t[\"\\u217D\"] = \"\\u0063\";\n  t[\"\\u217E\"] = \"\\u0064\";\n  t[\"\\u217F\"] = \"\\u006D\";\n  t[\"\\u222C\"] = \"\\u222B\\u222B\";\n  t[\"\\u222D\"] = \"\\u222B\\u222B\\u222B\";\n  t[\"\\u222F\"] = \"\\u222E\\u222E\";\n  t[\"\\u2230\"] = \"\\u222E\\u222E\\u222E\";\n  t[\"\\u2474\"] = \"\\u0028\\u0031\\u0029\";\n  t[\"\\u2475\"] = \"\\u0028\\u0032\\u0029\";\n  t[\"\\u2476\"] = \"\\u0028\\u0033\\u0029\";\n  t[\"\\u2477\"] = \"\\u0028\\u0034\\u0029\";\n  t[\"\\u2478\"] = \"\\u0028\\u0035\\u0029\";\n  t[\"\\u2479\"] = \"\\u0028\\u0036\\u0029\";\n  t[\"\\u247A\"] = \"\\u0028\\u0037\\u0029\";\n  t[\"\\u247B\"] = \"\\u0028\\u0038\\u0029\";\n  t[\"\\u247C\"] = \"\\u0028\\u0039\\u0029\";\n  t[\"\\u247D\"] = \"\\u0028\\u0031\\u0030\\u0029\";\n  t[\"\\u247E\"] = \"\\u0028\\u0031\\u0031\\u0029\";\n  t[\"\\u247F\"] = \"\\u0028\\u0031\\u0032\\u0029\";\n  t[\"\\u2480\"] = \"\\u0028\\u0031\\u0033\\u0029\";\n  t[\"\\u2481\"] = \"\\u0028\\u0031\\u0034\\u0029\";\n  t[\"\\u2482\"] = \"\\u0028\\u0031\\u0035\\u0029\";\n  t[\"\\u2483\"] = \"\\u0028\\u0031\\u0036\\u0029\";\n  t[\"\\u2484\"] = \"\\u0028\\u0031\\u0037\\u0029\";\n  t[\"\\u2485\"] = \"\\u0028\\u0031\\u0038\\u0029\";\n  t[\"\\u2486\"] = \"\\u0028\\u0031\\u0039\\u0029\";\n  t[\"\\u2487\"] = \"\\u0028\\u0032\\u0030\\u0029\";\n  t[\"\\u2488\"] = \"\\u0031\\u002E\";\n  t[\"\\u2489\"] = \"\\u0032\\u002E\";\n  t[\"\\u248A\"] = \"\\u0033\\u002E\";\n  t[\"\\u248B\"] = \"\\u0034\\u002E\";\n  t[\"\\u248C\"] = \"\\u0035\\u002E\";\n  t[\"\\u248D\"] = \"\\u0036\\u002E\";\n  t[\"\\u248E\"] = \"\\u0037\\u002E\";\n  t[\"\\u248F\"] = \"\\u0038\\u002E\";\n  t[\"\\u2490\"] = \"\\u0039\\u002E\";\n  t[\"\\u2491\"] = \"\\u0031\\u0030\\u002E\";\n  t[\"\\u2492\"] = \"\\u0031\\u0031\\u002E\";\n  t[\"\\u2493\"] = \"\\u0031\\u0032\\u002E\";\n  t[\"\\u2494\"] = \"\\u0031\\u0033\\u002E\";\n  t[\"\\u2495\"] = \"\\u0031\\u0034\\u002E\";\n  t[\"\\u2496\"] = \"\\u0031\\u0035\\u002E\";\n  t[\"\\u2497\"] = \"\\u0031\\u0036\\u002E\";\n  t[\"\\u2498\"] = \"\\u0031\\u0037\\u002E\";\n  t[\"\\u2499\"] = \"\\u0031\\u0038\\u002E\";\n  t[\"\\u249A\"] = \"\\u0031\\u0039\\u002E\";\n  t[\"\\u249B\"] = \"\\u0032\\u0030\\u002E\";\n  t[\"\\u249C\"] = \"\\u0028\\u0061\\u0029\";\n  t[\"\\u249D\"] = \"\\u0028\\u0062\\u0029\";\n  t[\"\\u249E\"] = \"\\u0028\\u0063\\u0029\";\n  t[\"\\u249F\"] = \"\\u0028\\u0064\\u0029\";\n  t[\"\\u24A0\"] = \"\\u0028\\u0065\\u0029\";\n  t[\"\\u24A1\"] = \"\\u0028\\u0066\\u0029\";\n  t[\"\\u24A2\"] = \"\\u0028\\u0067\\u0029\";\n  t[\"\\u24A3\"] = \"\\u0028\\u0068\\u0029\";\n  t[\"\\u24A4\"] = \"\\u0028\\u0069\\u0029\";\n  t[\"\\u24A5\"] = \"\\u0028\\u006A\\u0029\";\n  t[\"\\u24A6\"] = \"\\u0028\\u006B\\u0029\";\n  t[\"\\u24A7\"] = \"\\u0028\\u006C\\u0029\";\n  t[\"\\u24A8\"] = \"\\u0028\\u006D\\u0029\";\n  t[\"\\u24A9\"] = \"\\u0028\\u006E\\u0029\";\n  t[\"\\u24AA\"] = \"\\u0028\\u006F\\u0029\";\n  t[\"\\u24AB\"] = \"\\u0028\\u0070\\u0029\";\n  t[\"\\u24AC\"] = \"\\u0028\\u0071\\u0029\";\n  t[\"\\u24AD\"] = \"\\u0028\\u0072\\u0029\";\n  t[\"\\u24AE\"] = \"\\u0028\\u0073\\u0029\";\n  t[\"\\u24AF\"] = \"\\u0028\\u0074\\u0029\";\n  t[\"\\u24B0\"] = \"\\u0028\\u0075\\u0029\";\n  t[\"\\u24B1\"] = \"\\u0028\\u0076\\u0029\";\n  t[\"\\u24B2\"] = \"\\u0028\\u0077\\u0029\";\n  t[\"\\u24B3\"] = \"\\u0028\\u0078\\u0029\";\n  t[\"\\u24B4\"] = \"\\u0028\\u0079\\u0029\";\n  t[\"\\u24B5\"] = \"\\u0028\\u007A\\u0029\";\n  t[\"\\u2A0C\"] = \"\\u222B\\u222B\\u222B\\u222B\";\n  t[\"\\u2A74\"] = \"\\u003A\\u003A\\u003D\";\n  t[\"\\u2A75\"] = \"\\u003D\\u003D\";\n  t[\"\\u2A76\"] = \"\\u003D\\u003D\\u003D\";\n  t[\"\\u2E9F\"] = \"\\u6BCD\";\n  t[\"\\u2EF3\"] = \"\\u9F9F\";\n  t[\"\\u2F00\"] = \"\\u4E00\";\n  t[\"\\u2F01\"] = \"\\u4E28\";\n  t[\"\\u2F02\"] = \"\\u4E36\";\n  t[\"\\u2F03\"] = \"\\u4E3F\";\n  t[\"\\u2F04\"] = \"\\u4E59\";\n  t[\"\\u2F05\"] = \"\\u4E85\";\n  t[\"\\u2F06\"] = \"\\u4E8C\";\n  t[\"\\u2F07\"] = \"\\u4EA0\";\n  t[\"\\u2F08\"] = \"\\u4EBA\";\n  t[\"\\u2F09\"] = \"\\u513F\";\n  t[\"\\u2F0A\"] = \"\\u5165\";\n  t[\"\\u2F0B\"] = \"\\u516B\";\n  t[\"\\u2F0C\"] = \"\\u5182\";\n  t[\"\\u2F0D\"] = \"\\u5196\";\n  t[\"\\u2F0E\"] = \"\\u51AB\";\n  t[\"\\u2F0F\"] = \"\\u51E0\";\n  t[\"\\u2F10\"] = \"\\u51F5\";\n  t[\"\\u2F11\"] = \"\\u5200\";\n  t[\"\\u2F12\"] = \"\\u529B\";\n  t[\"\\u2F13\"] = \"\\u52F9\";\n  t[\"\\u2F14\"] = \"\\u5315\";\n  t[\"\\u2F15\"] = \"\\u531A\";\n  t[\"\\u2F16\"] = \"\\u5338\";\n  t[\"\\u2F17\"] = \"\\u5341\";\n  t[\"\\u2F18\"] = \"\\u535C\";\n  t[\"\\u2F19\"] = \"\\u5369\";\n  t[\"\\u2F1A\"] = \"\\u5382\";\n  t[\"\\u2F1B\"] = \"\\u53B6\";\n  t[\"\\u2F1C\"] = \"\\u53C8\";\n  t[\"\\u2F1D\"] = \"\\u53E3\";\n  t[\"\\u2F1E\"] = \"\\u56D7\";\n  t[\"\\u2F1F\"] = \"\\u571F\";\n  t[\"\\u2F20\"] = \"\\u58EB\";\n  t[\"\\u2F21\"] = \"\\u5902\";\n  t[\"\\u2F22\"] = \"\\u590A\";\n  t[\"\\u2F23\"] = \"\\u5915\";\n  t[\"\\u2F24\"] = \"\\u5927\";\n  t[\"\\u2F25\"] = \"\\u5973\";\n  t[\"\\u2F26\"] = \"\\u5B50\";\n  t[\"\\u2F27\"] = \"\\u5B80\";\n  t[\"\\u2F28\"] = \"\\u5BF8\";\n  t[\"\\u2F29\"] = \"\\u5C0F\";\n  t[\"\\u2F2A\"] = \"\\u5C22\";\n  t[\"\\u2F2B\"] = \"\\u5C38\";\n  t[\"\\u2F2C\"] = \"\\u5C6E\";\n  t[\"\\u2F2D\"] = \"\\u5C71\";\n  t[\"\\u2F2E\"] = \"\\u5DDB\";\n  t[\"\\u2F2F\"] = \"\\u5DE5\";\n  t[\"\\u2F30\"] = \"\\u5DF1\";\n  t[\"\\u2F31\"] = \"\\u5DFE\";\n  t[\"\\u2F32\"] = \"\\u5E72\";\n  t[\"\\u2F33\"] = \"\\u5E7A\";\n  t[\"\\u2F34\"] = \"\\u5E7F\";\n  t[\"\\u2F35\"] = \"\\u5EF4\";\n  t[\"\\u2F36\"] = \"\\u5EFE\";\n  t[\"\\u2F37\"] = \"\\u5F0B\";\n  t[\"\\u2F38\"] = \"\\u5F13\";\n  t[\"\\u2F39\"] = \"\\u5F50\";\n  t[\"\\u2F3A\"] = \"\\u5F61\";\n  t[\"\\u2F3B\"] = \"\\u5F73\";\n  t[\"\\u2F3C\"] = \"\\u5FC3\";\n  t[\"\\u2F3D\"] = \"\\u6208\";\n  t[\"\\u2F3E\"] = \"\\u6236\";\n  t[\"\\u2F3F\"] = \"\\u624B\";\n  t[\"\\u2F40\"] = \"\\u652F\";\n  t[\"\\u2F41\"] = \"\\u6534\";\n  t[\"\\u2F42\"] = \"\\u6587\";\n  t[\"\\u2F43\"] = \"\\u6597\";\n  t[\"\\u2F44\"] = \"\\u65A4\";\n  t[\"\\u2F45\"] = \"\\u65B9\";\n  t[\"\\u2F46\"] = \"\\u65E0\";\n  t[\"\\u2F47\"] = \"\\u65E5\";\n  t[\"\\u2F48\"] = \"\\u66F0\";\n  t[\"\\u2F49\"] = \"\\u6708\";\n  t[\"\\u2F4A\"] = \"\\u6728\";\n  t[\"\\u2F4B\"] = \"\\u6B20\";\n  t[\"\\u2F4C\"] = \"\\u6B62\";\n  t[\"\\u2F4D\"] = \"\\u6B79\";\n  t[\"\\u2F4E\"] = \"\\u6BB3\";\n  t[\"\\u2F4F\"] = \"\\u6BCB\";\n  t[\"\\u2F50\"] = \"\\u6BD4\";\n  t[\"\\u2F51\"] = \"\\u6BDB\";\n  t[\"\\u2F52\"] = \"\\u6C0F\";\n  t[\"\\u2F53\"] = \"\\u6C14\";\n  t[\"\\u2F54\"] = \"\\u6C34\";\n  t[\"\\u2F55\"] = \"\\u706B\";\n  t[\"\\u2F56\"] = \"\\u722A\";\n  t[\"\\u2F57\"] = \"\\u7236\";\n  t[\"\\u2F58\"] = \"\\u723B\";\n  t[\"\\u2F59\"] = \"\\u723F\";\n  t[\"\\u2F5A\"] = \"\\u7247\";\n  t[\"\\u2F5B\"] = \"\\u7259\";\n  t[\"\\u2F5C\"] = \"\\u725B\";\n  t[\"\\u2F5D\"] = \"\\u72AC\";\n  t[\"\\u2F5E\"] = \"\\u7384\";\n  t[\"\\u2F5F\"] = \"\\u7389\";\n  t[\"\\u2F60\"] = \"\\u74DC\";\n  t[\"\\u2F61\"] = \"\\u74E6\";\n  t[\"\\u2F62\"] = \"\\u7518\";\n  t[\"\\u2F63\"] = \"\\u751F\";\n  t[\"\\u2F64\"] = \"\\u7528\";\n  t[\"\\u2F65\"] = \"\\u7530\";\n  t[\"\\u2F66\"] = \"\\u758B\";\n  t[\"\\u2F67\"] = \"\\u7592\";\n  t[\"\\u2F68\"] = \"\\u7676\";\n  t[\"\\u2F69\"] = \"\\u767D\";\n  t[\"\\u2F6A\"] = \"\\u76AE\";\n  t[\"\\u2F6B\"] = \"\\u76BF\";\n  t[\"\\u2F6C\"] = \"\\u76EE\";\n  t[\"\\u2F6D\"] = \"\\u77DB\";\n  t[\"\\u2F6E\"] = \"\\u77E2\";\n  t[\"\\u2F6F\"] = \"\\u77F3\";\n  t[\"\\u2F70\"] = \"\\u793A\";\n  t[\"\\u2F71\"] = \"\\u79B8\";\n  t[\"\\u2F72\"] = \"\\u79BE\";\n  t[\"\\u2F73\"] = \"\\u7A74\";\n  t[\"\\u2F74\"] = \"\\u7ACB\";\n  t[\"\\u2F75\"] = \"\\u7AF9\";\n  t[\"\\u2F76\"] = \"\\u7C73\";\n  t[\"\\u2F77\"] = \"\\u7CF8\";\n  t[\"\\u2F78\"] = \"\\u7F36\";\n  t[\"\\u2F79\"] = \"\\u7F51\";\n  t[\"\\u2F7A\"] = \"\\u7F8A\";\n  t[\"\\u2F7B\"] = \"\\u7FBD\";\n  t[\"\\u2F7C\"] = \"\\u8001\";\n  t[\"\\u2F7D\"] = \"\\u800C\";\n  t[\"\\u2F7E\"] = \"\\u8012\";\n  t[\"\\u2F7F\"] = \"\\u8033\";\n  t[\"\\u2F80\"] = \"\\u807F\";\n  t[\"\\u2F81\"] = \"\\u8089\";\n  t[\"\\u2F82\"] = \"\\u81E3\";\n  t[\"\\u2F83\"] = \"\\u81EA\";\n  t[\"\\u2F84\"] = \"\\u81F3\";\n  t[\"\\u2F85\"] = \"\\u81FC\";\n  t[\"\\u2F86\"] = \"\\u820C\";\n  t[\"\\u2F87\"] = \"\\u821B\";\n  t[\"\\u2F88\"] = \"\\u821F\";\n  t[\"\\u2F89\"] = \"\\u826E\";\n  t[\"\\u2F8A\"] = \"\\u8272\";\n  t[\"\\u2F8B\"] = \"\\u8278\";\n  t[\"\\u2F8C\"] = \"\\u864D\";\n  t[\"\\u2F8D\"] = \"\\u866B\";\n  t[\"\\u2F8E\"] = \"\\u8840\";\n  t[\"\\u2F8F\"] = \"\\u884C\";\n  t[\"\\u2F90\"] = \"\\u8863\";\n  t[\"\\u2F91\"] = \"\\u897E\";\n  t[\"\\u2F92\"] = \"\\u898B\";\n  t[\"\\u2F93\"] = \"\\u89D2\";\n  t[\"\\u2F94\"] = \"\\u8A00\";\n  t[\"\\u2F95\"] = \"\\u8C37\";\n  t[\"\\u2F96\"] = \"\\u8C46\";\n  t[\"\\u2F97\"] = \"\\u8C55\";\n  t[\"\\u2F98\"] = \"\\u8C78\";\n  t[\"\\u2F99\"] = \"\\u8C9D\";\n  t[\"\\u2F9A\"] = \"\\u8D64\";\n  t[\"\\u2F9B\"] = \"\\u8D70\";\n  t[\"\\u2F9C\"] = \"\\u8DB3\";\n  t[\"\\u2F9D\"] = \"\\u8EAB\";\n  t[\"\\u2F9E\"] = \"\\u8ECA\";\n  t[\"\\u2F9F\"] = \"\\u8F9B\";\n  t[\"\\u2FA0\"] = \"\\u8FB0\";\n  t[\"\\u2FA1\"] = \"\\u8FB5\";\n  t[\"\\u2FA2\"] = \"\\u9091\";\n  t[\"\\u2FA3\"] = \"\\u9149\";\n  t[\"\\u2FA4\"] = \"\\u91C6\";\n  t[\"\\u2FA5\"] = \"\\u91CC\";\n  t[\"\\u2FA6\"] = \"\\u91D1\";\n  t[\"\\u2FA7\"] = \"\\u9577\";\n  t[\"\\u2FA8\"] = \"\\u9580\";\n  t[\"\\u2FA9\"] = \"\\u961C\";\n  t[\"\\u2FAA\"] = \"\\u96B6\";\n  t[\"\\u2FAB\"] = \"\\u96B9\";\n  t[\"\\u2FAC\"] = \"\\u96E8\";\n  t[\"\\u2FAD\"] = \"\\u9751\";\n  t[\"\\u2FAE\"] = \"\\u975E\";\n  t[\"\\u2FAF\"] = \"\\u9762\";\n  t[\"\\u2FB0\"] = \"\\u9769\";\n  t[\"\\u2FB1\"] = \"\\u97CB\";\n  t[\"\\u2FB2\"] = \"\\u97ED\";\n  t[\"\\u2FB3\"] = \"\\u97F3\";\n  t[\"\\u2FB4\"] = \"\\u9801\";\n  t[\"\\u2FB5\"] = \"\\u98A8\";\n  t[\"\\u2FB6\"] = \"\\u98DB\";\n  t[\"\\u2FB7\"] = \"\\u98DF\";\n  t[\"\\u2FB8\"] = \"\\u9996\";\n  t[\"\\u2FB9\"] = \"\\u9999\";\n  t[\"\\u2FBA\"] = \"\\u99AC\";\n  t[\"\\u2FBB\"] = \"\\u9AA8\";\n  t[\"\\u2FBC\"] = \"\\u9AD8\";\n  t[\"\\u2FBD\"] = \"\\u9ADF\";\n  t[\"\\u2FBE\"] = \"\\u9B25\";\n  t[\"\\u2FBF\"] = \"\\u9B2F\";\n  t[\"\\u2FC0\"] = \"\\u9B32\";\n  t[\"\\u2FC1\"] = \"\\u9B3C\";\n  t[\"\\u2FC2\"] = \"\\u9B5A\";\n  t[\"\\u2FC3\"] = \"\\u9CE5\";\n  t[\"\\u2FC4\"] = \"\\u9E75\";\n  t[\"\\u2FC5\"] = \"\\u9E7F\";\n  t[\"\\u2FC6\"] = \"\\u9EA5\";\n  t[\"\\u2FC7\"] = \"\\u9EBB\";\n  t[\"\\u2FC8\"] = \"\\u9EC3\";\n  t[\"\\u2FC9\"] = \"\\u9ECD\";\n  t[\"\\u2FCA\"] = \"\\u9ED1\";\n  t[\"\\u2FCB\"] = \"\\u9EF9\";\n  t[\"\\u2FCC\"] = \"\\u9EFD\";\n  t[\"\\u2FCD\"] = \"\\u9F0E\";\n  t[\"\\u2FCE\"] = \"\\u9F13\";\n  t[\"\\u2FCF\"] = \"\\u9F20\";\n  t[\"\\u2FD0\"] = \"\\u9F3B\";\n  t[\"\\u2FD1\"] = \"\\u9F4A\";\n  t[\"\\u2FD2\"] = \"\\u9F52\";\n  t[\"\\u2FD3\"] = \"\\u9F8D\";\n  t[\"\\u2FD4\"] = \"\\u9F9C\";\n  t[\"\\u2FD5\"] = \"\\u9FA0\";\n  t[\"\\u3036\"] = \"\\u3012\";\n  t[\"\\u3038\"] = \"\\u5341\";\n  t[\"\\u3039\"] = \"\\u5344\";\n  t[\"\\u303A\"] = \"\\u5345\";\n  t[\"\\u309B\"] = \"\\u0020\\u3099\";\n  t[\"\\u309C\"] = \"\\u0020\\u309A\";\n  t[\"\\u3131\"] = \"\\u1100\";\n  t[\"\\u3132\"] = \"\\u1101\";\n  t[\"\\u3133\"] = \"\\u11AA\";\n  t[\"\\u3134\"] = \"\\u1102\";\n  t[\"\\u3135\"] = \"\\u11AC\";\n  t[\"\\u3136\"] = \"\\u11AD\";\n  t[\"\\u3137\"] = \"\\u1103\";\n  t[\"\\u3138\"] = \"\\u1104\";\n  t[\"\\u3139\"] = \"\\u1105\";\n  t[\"\\u313A\"] = \"\\u11B0\";\n  t[\"\\u313B\"] = \"\\u11B1\";\n  t[\"\\u313C\"] = \"\\u11B2\";\n  t[\"\\u313D\"] = \"\\u11B3\";\n  t[\"\\u313E\"] = \"\\u11B4\";\n  t[\"\\u313F\"] = \"\\u11B5\";\n  t[\"\\u3140\"] = \"\\u111A\";\n  t[\"\\u3141\"] = \"\\u1106\";\n  t[\"\\u3142\"] = \"\\u1107\";\n  t[\"\\u3143\"] = \"\\u1108\";\n  t[\"\\u3144\"] = \"\\u1121\";\n  t[\"\\u3145\"] = \"\\u1109\";\n  t[\"\\u3146\"] = \"\\u110A\";\n  t[\"\\u3147\"] = \"\\u110B\";\n  t[\"\\u3148\"] = \"\\u110C\";\n  t[\"\\u3149\"] = \"\\u110D\";\n  t[\"\\u314A\"] = \"\\u110E\";\n  t[\"\\u314B\"] = \"\\u110F\";\n  t[\"\\u314C\"] = \"\\u1110\";\n  t[\"\\u314D\"] = \"\\u1111\";\n  t[\"\\u314E\"] = \"\\u1112\";\n  t[\"\\u314F\"] = \"\\u1161\";\n  t[\"\\u3150\"] = \"\\u1162\";\n  t[\"\\u3151\"] = \"\\u1163\";\n  t[\"\\u3152\"] = \"\\u1164\";\n  t[\"\\u3153\"] = \"\\u1165\";\n  t[\"\\u3154\"] = \"\\u1166\";\n  t[\"\\u3155\"] = \"\\u1167\";\n  t[\"\\u3156\"] = \"\\u1168\";\n  t[\"\\u3157\"] = \"\\u1169\";\n  t[\"\\u3158\"] = \"\\u116A\";\n  t[\"\\u3159\"] = \"\\u116B\";\n  t[\"\\u315A\"] = \"\\u116C\";\n  t[\"\\u315B\"] = \"\\u116D\";\n  t[\"\\u315C\"] = \"\\u116E\";\n  t[\"\\u315D\"] = \"\\u116F\";\n  t[\"\\u315E\"] = \"\\u1170\";\n  t[\"\\u315F\"] = \"\\u1171\";\n  t[\"\\u3160\"] = \"\\u1172\";\n  t[\"\\u3161\"] = \"\\u1173\";\n  t[\"\\u3162\"] = \"\\u1174\";\n  t[\"\\u3163\"] = \"\\u1175\";\n  t[\"\\u3164\"] = \"\\u1160\";\n  t[\"\\u3165\"] = \"\\u1114\";\n  t[\"\\u3166\"] = \"\\u1115\";\n  t[\"\\u3167\"] = \"\\u11C7\";\n  t[\"\\u3168\"] = \"\\u11C8\";\n  t[\"\\u3169\"] = \"\\u11CC\";\n  t[\"\\u316A\"] = \"\\u11CE\";\n  t[\"\\u316B\"] = \"\\u11D3\";\n  t[\"\\u316C\"] = \"\\u11D7\";\n  t[\"\\u316D\"] = \"\\u11D9\";\n  t[\"\\u316E\"] = \"\\u111C\";\n  t[\"\\u316F\"] = \"\\u11DD\";\n  t[\"\\u3170\"] = \"\\u11DF\";\n  t[\"\\u3171\"] = \"\\u111D\";\n  t[\"\\u3172\"] = \"\\u111E\";\n  t[\"\\u3173\"] = \"\\u1120\";\n  t[\"\\u3174\"] = \"\\u1122\";\n  t[\"\\u3175\"] = \"\\u1123\";\n  t[\"\\u3176\"] = \"\\u1127\";\n  t[\"\\u3177\"] = \"\\u1129\";\n  t[\"\\u3178\"] = \"\\u112B\";\n  t[\"\\u3179\"] = \"\\u112C\";\n  t[\"\\u317A\"] = \"\\u112D\";\n  t[\"\\u317B\"] = \"\\u112E\";\n  t[\"\\u317C\"] = \"\\u112F\";\n  t[\"\\u317D\"] = \"\\u1132\";\n  t[\"\\u317E\"] = \"\\u1136\";\n  t[\"\\u317F\"] = \"\\u1140\";\n  t[\"\\u3180\"] = \"\\u1147\";\n  t[\"\\u3181\"] = \"\\u114C\";\n  t[\"\\u3182\"] = \"\\u11F1\";\n  t[\"\\u3183\"] = \"\\u11F2\";\n  t[\"\\u3184\"] = \"\\u1157\";\n  t[\"\\u3185\"] = \"\\u1158\";\n  t[\"\\u3186\"] = \"\\u1159\";\n  t[\"\\u3187\"] = \"\\u1184\";\n  t[\"\\u3188\"] = \"\\u1185\";\n  t[\"\\u3189\"] = \"\\u1188\";\n  t[\"\\u318A\"] = \"\\u1191\";\n  t[\"\\u318B\"] = \"\\u1192\";\n  t[\"\\u318C\"] = \"\\u1194\";\n  t[\"\\u318D\"] = \"\\u119E\";\n  t[\"\\u318E\"] = \"\\u11A1\";\n  t[\"\\u3200\"] = \"\\u0028\\u1100\\u0029\";\n  t[\"\\u3201\"] = \"\\u0028\\u1102\\u0029\";\n  t[\"\\u3202\"] = \"\\u0028\\u1103\\u0029\";\n  t[\"\\u3203\"] = \"\\u0028\\u1105\\u0029\";\n  t[\"\\u3204\"] = \"\\u0028\\u1106\\u0029\";\n  t[\"\\u3205\"] = \"\\u0028\\u1107\\u0029\";\n  t[\"\\u3206\"] = \"\\u0028\\u1109\\u0029\";\n  t[\"\\u3207\"] = \"\\u0028\\u110B\\u0029\";\n  t[\"\\u3208\"] = \"\\u0028\\u110C\\u0029\";\n  t[\"\\u3209\"] = \"\\u0028\\u110E\\u0029\";\n  t[\"\\u320A\"] = \"\\u0028\\u110F\\u0029\";\n  t[\"\\u320B\"] = \"\\u0028\\u1110\\u0029\";\n  t[\"\\u320C\"] = \"\\u0028\\u1111\\u0029\";\n  t[\"\\u320D\"] = \"\\u0028\\u1112\\u0029\";\n  t[\"\\u320E\"] = \"\\u0028\\u1100\\u1161\\u0029\";\n  t[\"\\u320F\"] = \"\\u0028\\u1102\\u1161\\u0029\";\n  t[\"\\u3210\"] = \"\\u0028\\u1103\\u1161\\u0029\";\n  t[\"\\u3211\"] = \"\\u0028\\u1105\\u1161\\u0029\";\n  t[\"\\u3212\"] = \"\\u0028\\u1106\\u1161\\u0029\";\n  t[\"\\u3213\"] = \"\\u0028\\u1107\\u1161\\u0029\";\n  t[\"\\u3214\"] = \"\\u0028\\u1109\\u1161\\u0029\";\n  t[\"\\u3215\"] = \"\\u0028\\u110B\\u1161\\u0029\";\n  t[\"\\u3216\"] = \"\\u0028\\u110C\\u1161\\u0029\";\n  t[\"\\u3217\"] = \"\\u0028\\u110E\\u1161\\u0029\";\n  t[\"\\u3218\"] = \"\\u0028\\u110F\\u1161\\u0029\";\n  t[\"\\u3219\"] = \"\\u0028\\u1110\\u1161\\u0029\";\n  t[\"\\u321A\"] = \"\\u0028\\u1111\\u1161\\u0029\";\n  t[\"\\u321B\"] = \"\\u0028\\u1112\\u1161\\u0029\";\n  t[\"\\u321C\"] = \"\\u0028\\u110C\\u116E\\u0029\";\n  t[\"\\u321D\"] = \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\";\n  t[\"\\u321E\"] = \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\";\n  t[\"\\u3220\"] = \"\\u0028\\u4E00\\u0029\";\n  t[\"\\u3221\"] = \"\\u0028\\u4E8C\\u0029\";\n  t[\"\\u3222\"] = \"\\u0028\\u4E09\\u0029\";\n  t[\"\\u3223\"] = \"\\u0028\\u56DB\\u0029\";\n  t[\"\\u3224\"] = \"\\u0028\\u4E94\\u0029\";\n  t[\"\\u3225\"] = \"\\u0028\\u516D\\u0029\";\n  t[\"\\u3226\"] = \"\\u0028\\u4E03\\u0029\";\n  t[\"\\u3227\"] = \"\\u0028\\u516B\\u0029\";\n  t[\"\\u3228\"] = \"\\u0028\\u4E5D\\u0029\";\n  t[\"\\u3229\"] = \"\\u0028\\u5341\\u0029\";\n  t[\"\\u322A\"] = \"\\u0028\\u6708\\u0029\";\n  t[\"\\u322B\"] = \"\\u0028\\u706B\\u0029\";\n  t[\"\\u322C\"] = \"\\u0028\\u6C34\\u0029\";\n  t[\"\\u322D\"] = \"\\u0028\\u6728\\u0029\";\n  t[\"\\u322E\"] = \"\\u0028\\u91D1\\u0029\";\n  t[\"\\u322F\"] = \"\\u0028\\u571F\\u0029\";\n  t[\"\\u3230\"] = \"\\u0028\\u65E5\\u0029\";\n  t[\"\\u3231\"] = \"\\u0028\\u682A\\u0029\";\n  t[\"\\u3232\"] = \"\\u0028\\u6709\\u0029\";\n  t[\"\\u3233\"] = \"\\u0028\\u793E\\u0029\";\n  t[\"\\u3234\"] = \"\\u0028\\u540D\\u0029\";\n  t[\"\\u3235\"] = \"\\u0028\\u7279\\u0029\";\n  t[\"\\u3236\"] = \"\\u0028\\u8CA1\\u0029\";\n  t[\"\\u3237\"] = \"\\u0028\\u795D\\u0029\";\n  t[\"\\u3238\"] = \"\\u0028\\u52B4\\u0029\";\n  t[\"\\u3239\"] = \"\\u0028\\u4EE3\\u0029\";\n  t[\"\\u323A\"] = \"\\u0028\\u547C\\u0029\";\n  t[\"\\u323B\"] = \"\\u0028\\u5B66\\u0029\";\n  t[\"\\u323C\"] = \"\\u0028\\u76E3\\u0029\";\n  t[\"\\u323D\"] = \"\\u0028\\u4F01\\u0029\";\n  t[\"\\u323E\"] = \"\\u0028\\u8CC7\\u0029\";\n  t[\"\\u323F\"] = \"\\u0028\\u5354\\u0029\";\n  t[\"\\u3240\"] = \"\\u0028\\u796D\\u0029\";\n  t[\"\\u3241\"] = \"\\u0028\\u4F11\\u0029\";\n  t[\"\\u3242\"] = \"\\u0028\\u81EA\\u0029\";\n  t[\"\\u3243\"] = \"\\u0028\\u81F3\\u0029\";\n  t[\"\\u32C0\"] = \"\\u0031\\u6708\";\n  t[\"\\u32C1\"] = \"\\u0032\\u6708\";\n  t[\"\\u32C2\"] = \"\\u0033\\u6708\";\n  t[\"\\u32C3\"] = \"\\u0034\\u6708\";\n  t[\"\\u32C4\"] = \"\\u0035\\u6708\";\n  t[\"\\u32C5\"] = \"\\u0036\\u6708\";\n  t[\"\\u32C6\"] = \"\\u0037\\u6708\";\n  t[\"\\u32C7\"] = \"\\u0038\\u6708\";\n  t[\"\\u32C8\"] = \"\\u0039\\u6708\";\n  t[\"\\u32C9\"] = \"\\u0031\\u0030\\u6708\";\n  t[\"\\u32CA\"] = \"\\u0031\\u0031\\u6708\";\n  t[\"\\u32CB\"] = \"\\u0031\\u0032\\u6708\";\n  t[\"\\u3358\"] = \"\\u0030\\u70B9\";\n  t[\"\\u3359\"] = \"\\u0031\\u70B9\";\n  t[\"\\u335A\"] = \"\\u0032\\u70B9\";\n  t[\"\\u335B\"] = \"\\u0033\\u70B9\";\n  t[\"\\u335C\"] = \"\\u0034\\u70B9\";\n  t[\"\\u335D\"] = \"\\u0035\\u70B9\";\n  t[\"\\u335E\"] = \"\\u0036\\u70B9\";\n  t[\"\\u335F\"] = \"\\u0037\\u70B9\";\n  t[\"\\u3360\"] = \"\\u0038\\u70B9\";\n  t[\"\\u3361\"] = \"\\u0039\\u70B9\";\n  t[\"\\u3362\"] = \"\\u0031\\u0030\\u70B9\";\n  t[\"\\u3363\"] = \"\\u0031\\u0031\\u70B9\";\n  t[\"\\u3364\"] = \"\\u0031\\u0032\\u70B9\";\n  t[\"\\u3365\"] = \"\\u0031\\u0033\\u70B9\";\n  t[\"\\u3366\"] = \"\\u0031\\u0034\\u70B9\";\n  t[\"\\u3367\"] = \"\\u0031\\u0035\\u70B9\";\n  t[\"\\u3368\"] = \"\\u0031\\u0036\\u70B9\";\n  t[\"\\u3369\"] = \"\\u0031\\u0037\\u70B9\";\n  t[\"\\u336A\"] = \"\\u0031\\u0038\\u70B9\";\n  t[\"\\u336B\"] = \"\\u0031\\u0039\\u70B9\";\n  t[\"\\u336C\"] = \"\\u0032\\u0030\\u70B9\";\n  t[\"\\u336D\"] = \"\\u0032\\u0031\\u70B9\";\n  t[\"\\u336E\"] = \"\\u0032\\u0032\\u70B9\";\n  t[\"\\u336F\"] = \"\\u0032\\u0033\\u70B9\";\n  t[\"\\u3370\"] = \"\\u0032\\u0034\\u70B9\";\n  t[\"\\u33E0\"] = \"\\u0031\\u65E5\";\n  t[\"\\u33E1\"] = \"\\u0032\\u65E5\";\n  t[\"\\u33E2\"] = \"\\u0033\\u65E5\";\n  t[\"\\u33E3\"] = \"\\u0034\\u65E5\";\n  t[\"\\u33E4\"] = \"\\u0035\\u65E5\";\n  t[\"\\u33E5\"] = \"\\u0036\\u65E5\";\n  t[\"\\u33E6\"] = \"\\u0037\\u65E5\";\n  t[\"\\u33E7\"] = \"\\u0038\\u65E5\";\n  t[\"\\u33E8\"] = \"\\u0039\\u65E5\";\n  t[\"\\u33E9\"] = \"\\u0031\\u0030\\u65E5\";\n  t[\"\\u33EA\"] = \"\\u0031\\u0031\\u65E5\";\n  t[\"\\u33EB\"] = \"\\u0031\\u0032\\u65E5\";\n  t[\"\\u33EC\"] = \"\\u0031\\u0033\\u65E5\";\n  t[\"\\u33ED\"] = \"\\u0031\\u0034\\u65E5\";\n  t[\"\\u33EE\"] = \"\\u0031\\u0035\\u65E5\";\n  t[\"\\u33EF\"] = \"\\u0031\\u0036\\u65E5\";\n  t[\"\\u33F0\"] = \"\\u0031\\u0037\\u65E5\";\n  t[\"\\u33F1\"] = \"\\u0031\\u0038\\u65E5\";\n  t[\"\\u33F2\"] = \"\\u0031\\u0039\\u65E5\";\n  t[\"\\u33F3\"] = \"\\u0032\\u0030\\u65E5\";\n  t[\"\\u33F4\"] = \"\\u0032\\u0031\\u65E5\";\n  t[\"\\u33F5\"] = \"\\u0032\\u0032\\u65E5\";\n  t[\"\\u33F6\"] = \"\\u0032\\u0033\\u65E5\";\n  t[\"\\u33F7\"] = \"\\u0032\\u0034\\u65E5\";\n  t[\"\\u33F8\"] = \"\\u0032\\u0035\\u65E5\";\n  t[\"\\u33F9\"] = \"\\u0032\\u0036\\u65E5\";\n  t[\"\\u33FA\"] = \"\\u0032\\u0037\\u65E5\";\n  t[\"\\u33FB\"] = \"\\u0032\\u0038\\u65E5\";\n  t[\"\\u33FC\"] = \"\\u0032\\u0039\\u65E5\";\n  t[\"\\u33FD\"] = \"\\u0033\\u0030\\u65E5\";\n  t[\"\\u33FE\"] = \"\\u0033\\u0031\\u65E5\";\n  t[\"\\uFB00\"] = \"\\u0066\\u0066\";\n  t[\"\\uFB01\"] = \"\\u0066\\u0069\";\n  t[\"\\uFB02\"] = \"\\u0066\\u006C\";\n  t[\"\\uFB03\"] = \"\\u0066\\u0066\\u0069\";\n  t[\"\\uFB04\"] = \"\\u0066\\u0066\\u006C\";\n  t[\"\\uFB05\"] = \"\\u017F\\u0074\";\n  t[\"\\uFB06\"] = \"\\u0073\\u0074\";\n  t[\"\\uFB13\"] = \"\\u0574\\u0576\";\n  t[\"\\uFB14\"] = \"\\u0574\\u0565\";\n  t[\"\\uFB15\"] = \"\\u0574\\u056B\";\n  t[\"\\uFB16\"] = \"\\u057E\\u0576\";\n  t[\"\\uFB17\"] = \"\\u0574\\u056D\";\n  t[\"\\uFB4F\"] = \"\\u05D0\\u05DC\";\n  t[\"\\uFB50\"] = \"\\u0671\";\n  t[\"\\uFB51\"] = \"\\u0671\";\n  t[\"\\uFB52\"] = \"\\u067B\";\n  t[\"\\uFB53\"] = \"\\u067B\";\n  t[\"\\uFB54\"] = \"\\u067B\";\n  t[\"\\uFB55\"] = \"\\u067B\";\n  t[\"\\uFB56\"] = \"\\u067E\";\n  t[\"\\uFB57\"] = \"\\u067E\";\n  t[\"\\uFB58\"] = \"\\u067E\";\n  t[\"\\uFB59\"] = \"\\u067E\";\n  t[\"\\uFB5A\"] = \"\\u0680\";\n  t[\"\\uFB5B\"] = \"\\u0680\";\n  t[\"\\uFB5C\"] = \"\\u0680\";\n  t[\"\\uFB5D\"] = \"\\u0680\";\n  t[\"\\uFB5E\"] = \"\\u067A\";\n  t[\"\\uFB5F\"] = \"\\u067A\";\n  t[\"\\uFB60\"] = \"\\u067A\";\n  t[\"\\uFB61\"] = \"\\u067A\";\n  t[\"\\uFB62\"] = \"\\u067F\";\n  t[\"\\uFB63\"] = \"\\u067F\";\n  t[\"\\uFB64\"] = \"\\u067F\";\n  t[\"\\uFB65\"] = \"\\u067F\";\n  t[\"\\uFB66\"] = \"\\u0679\";\n  t[\"\\uFB67\"] = \"\\u0679\";\n  t[\"\\uFB68\"] = \"\\u0679\";\n  t[\"\\uFB69\"] = \"\\u0679\";\n  t[\"\\uFB6A\"] = \"\\u06A4\";\n  t[\"\\uFB6B\"] = \"\\u06A4\";\n  t[\"\\uFB6C\"] = \"\\u06A4\";\n  t[\"\\uFB6D\"] = \"\\u06A4\";\n  t[\"\\uFB6E\"] = \"\\u06A6\";\n  t[\"\\uFB6F\"] = \"\\u06A6\";\n  t[\"\\uFB70\"] = \"\\u06A6\";\n  t[\"\\uFB71\"] = \"\\u06A6\";\n  t[\"\\uFB72\"] = \"\\u0684\";\n  t[\"\\uFB73\"] = \"\\u0684\";\n  t[\"\\uFB74\"] = \"\\u0684\";\n  t[\"\\uFB75\"] = \"\\u0684\";\n  t[\"\\uFB76\"] = \"\\u0683\";\n  t[\"\\uFB77\"] = \"\\u0683\";\n  t[\"\\uFB78\"] = \"\\u0683\";\n  t[\"\\uFB79\"] = \"\\u0683\";\n  t[\"\\uFB7A\"] = \"\\u0686\";\n  t[\"\\uFB7B\"] = \"\\u0686\";\n  t[\"\\uFB7C\"] = \"\\u0686\";\n  t[\"\\uFB7D\"] = \"\\u0686\";\n  t[\"\\uFB7E\"] = \"\\u0687\";\n  t[\"\\uFB7F\"] = \"\\u0687\";\n  t[\"\\uFB80\"] = \"\\u0687\";\n  t[\"\\uFB81\"] = \"\\u0687\";\n  t[\"\\uFB82\"] = \"\\u068D\";\n  t[\"\\uFB83\"] = \"\\u068D\";\n  t[\"\\uFB84\"] = \"\\u068C\";\n  t[\"\\uFB85\"] = \"\\u068C\";\n  t[\"\\uFB86\"] = \"\\u068E\";\n  t[\"\\uFB87\"] = \"\\u068E\";\n  t[\"\\uFB88\"] = \"\\u0688\";\n  t[\"\\uFB89\"] = \"\\u0688\";\n  t[\"\\uFB8A\"] = \"\\u0698\";\n  t[\"\\uFB8B\"] = \"\\u0698\";\n  t[\"\\uFB8C\"] = \"\\u0691\";\n  t[\"\\uFB8D\"] = \"\\u0691\";\n  t[\"\\uFB8E\"] = \"\\u06A9\";\n  t[\"\\uFB8F\"] = \"\\u06A9\";\n  t[\"\\uFB90\"] = \"\\u06A9\";\n  t[\"\\uFB91\"] = \"\\u06A9\";\n  t[\"\\uFB92\"] = \"\\u06AF\";\n  t[\"\\uFB93\"] = \"\\u06AF\";\n  t[\"\\uFB94\"] = \"\\u06AF\";\n  t[\"\\uFB95\"] = \"\\u06AF\";\n  t[\"\\uFB96\"] = \"\\u06B3\";\n  t[\"\\uFB97\"] = \"\\u06B3\";\n  t[\"\\uFB98\"] = \"\\u06B3\";\n  t[\"\\uFB99\"] = \"\\u06B3\";\n  t[\"\\uFB9A\"] = \"\\u06B1\";\n  t[\"\\uFB9B\"] = \"\\u06B1\";\n  t[\"\\uFB9C\"] = \"\\u06B1\";\n  t[\"\\uFB9D\"] = \"\\u06B1\";\n  t[\"\\uFB9E\"] = \"\\u06BA\";\n  t[\"\\uFB9F\"] = \"\\u06BA\";\n  t[\"\\uFBA0\"] = \"\\u06BB\";\n  t[\"\\uFBA1\"] = \"\\u06BB\";\n  t[\"\\uFBA2\"] = \"\\u06BB\";\n  t[\"\\uFBA3\"] = \"\\u06BB\";\n  t[\"\\uFBA4\"] = \"\\u06C0\";\n  t[\"\\uFBA5\"] = \"\\u06C0\";\n  t[\"\\uFBA6\"] = \"\\u06C1\";\n  t[\"\\uFBA7\"] = \"\\u06C1\";\n  t[\"\\uFBA8\"] = \"\\u06C1\";\n  t[\"\\uFBA9\"] = \"\\u06C1\";\n  t[\"\\uFBAA\"] = \"\\u06BE\";\n  t[\"\\uFBAB\"] = \"\\u06BE\";\n  t[\"\\uFBAC\"] = \"\\u06BE\";\n  t[\"\\uFBAD\"] = \"\\u06BE\";\n  t[\"\\uFBAE\"] = \"\\u06D2\";\n  t[\"\\uFBAF\"] = \"\\u06D2\";\n  t[\"\\uFBB0\"] = \"\\u06D3\";\n  t[\"\\uFBB1\"] = \"\\u06D3\";\n  t[\"\\uFBD3\"] = \"\\u06AD\";\n  t[\"\\uFBD4\"] = \"\\u06AD\";\n  t[\"\\uFBD5\"] = \"\\u06AD\";\n  t[\"\\uFBD6\"] = \"\\u06AD\";\n  t[\"\\uFBD7\"] = \"\\u06C7\";\n  t[\"\\uFBD8\"] = \"\\u06C7\";\n  t[\"\\uFBD9\"] = \"\\u06C6\";\n  t[\"\\uFBDA\"] = \"\\u06C6\";\n  t[\"\\uFBDB\"] = \"\\u06C8\";\n  t[\"\\uFBDC\"] = \"\\u06C8\";\n  t[\"\\uFBDD\"] = \"\\u0677\";\n  t[\"\\uFBDE\"] = \"\\u06CB\";\n  t[\"\\uFBDF\"] = \"\\u06CB\";\n  t[\"\\uFBE0\"] = \"\\u06C5\";\n  t[\"\\uFBE1\"] = \"\\u06C5\";\n  t[\"\\uFBE2\"] = \"\\u06C9\";\n  t[\"\\uFBE3\"] = \"\\u06C9\";\n  t[\"\\uFBE4\"] = \"\\u06D0\";\n  t[\"\\uFBE5\"] = \"\\u06D0\";\n  t[\"\\uFBE6\"] = \"\\u06D0\";\n  t[\"\\uFBE7\"] = \"\\u06D0\";\n  t[\"\\uFBE8\"] = \"\\u0649\";\n  t[\"\\uFBE9\"] = \"\\u0649\";\n  t[\"\\uFBEA\"] = \"\\u0626\\u0627\";\n  t[\"\\uFBEB\"] = \"\\u0626\\u0627\";\n  t[\"\\uFBEC\"] = \"\\u0626\\u06D5\";\n  t[\"\\uFBED\"] = \"\\u0626\\u06D5\";\n  t[\"\\uFBEE\"] = \"\\u0626\\u0648\";\n  t[\"\\uFBEF\"] = \"\\u0626\\u0648\";\n  t[\"\\uFBF0\"] = \"\\u0626\\u06C7\";\n  t[\"\\uFBF1\"] = \"\\u0626\\u06C7\";\n  t[\"\\uFBF2\"] = \"\\u0626\\u06C6\";\n  t[\"\\uFBF3\"] = \"\\u0626\\u06C6\";\n  t[\"\\uFBF4\"] = \"\\u0626\\u06C8\";\n  t[\"\\uFBF5\"] = \"\\u0626\\u06C8\";\n  t[\"\\uFBF6\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF7\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF8\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF9\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFA\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFB\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFC\"] = \"\\u06CC\";\n  t[\"\\uFBFD\"] = \"\\u06CC\";\n  t[\"\\uFBFE\"] = \"\\u06CC\";\n  t[\"\\uFBFF\"] = \"\\u06CC\";\n  t[\"\\uFC00\"] = \"\\u0626\\u062C\";\n  t[\"\\uFC01\"] = \"\\u0626\\u062D\";\n  t[\"\\uFC02\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC03\"] = \"\\u0626\\u0649\";\n  t[\"\\uFC04\"] = \"\\u0626\\u064A\";\n  t[\"\\uFC05\"] = \"\\u0628\\u062C\";\n  t[\"\\uFC06\"] = \"\\u0628\\u062D\";\n  t[\"\\uFC07\"] = \"\\u0628\\u062E\";\n  t[\"\\uFC08\"] = \"\\u0628\\u0645\";\n  t[\"\\uFC09\"] = \"\\u0628\\u0649\";\n  t[\"\\uFC0A\"] = \"\\u0628\\u064A\";\n  t[\"\\uFC0B\"] = \"\\u062A\\u062C\";\n  t[\"\\uFC0C\"] = \"\\u062A\\u062D\";\n  t[\"\\uFC0D\"] = \"\\u062A\\u062E\";\n  t[\"\\uFC0E\"] = \"\\u062A\\u0645\";\n  t[\"\\uFC0F\"] = \"\\u062A\\u0649\";\n  t[\"\\uFC10\"] = \"\\u062A\\u064A\";\n  t[\"\\uFC11\"] = \"\\u062B\\u062C\";\n  t[\"\\uFC12\"] = \"\\u062B\\u0645\";\n  t[\"\\uFC13\"] = \"\\u062B\\u0649\";\n  t[\"\\uFC14\"] = \"\\u062B\\u064A\";\n  t[\"\\uFC15\"] = \"\\u062C\\u062D\";\n  t[\"\\uFC16\"] = \"\\u062C\\u0645\";\n  t[\"\\uFC17\"] = \"\\u062D\\u062C\";\n  t[\"\\uFC18\"] = \"\\u062D\\u0645\";\n  t[\"\\uFC19\"] = \"\\u062E\\u062C\";\n  t[\"\\uFC1A\"] = \"\\u062E\\u062D\";\n  t[\"\\uFC1B\"] = \"\\u062E\\u0645\";\n  t[\"\\uFC1C\"] = \"\\u0633\\u062C\";\n  t[\"\\uFC1D\"] = \"\\u0633\\u062D\";\n  t[\"\\uFC1E\"] = \"\\u0633\\u062E\";\n  t[\"\\uFC1F\"] = \"\\u0633\\u0645\";\n  t[\"\\uFC20\"] = \"\\u0635\\u062D\";\n  t[\"\\uFC21\"] = \"\\u0635\\u0645\";\n  t[\"\\uFC22\"] = \"\\u0636\\u062C\";\n  t[\"\\uFC23\"] = \"\\u0636\\u062D\";\n  t[\"\\uFC24\"] = \"\\u0636\\u062E\";\n  t[\"\\uFC25\"] = \"\\u0636\\u0645\";\n  t[\"\\uFC26\"] = \"\\u0637\\u062D\";\n  t[\"\\uFC27\"] = \"\\u0637\\u0645\";\n  t[\"\\uFC28\"] = \"\\u0638\\u0645\";\n  t[\"\\uFC29\"] = \"\\u0639\\u062C\";\n  t[\"\\uFC2A\"] = \"\\u0639\\u0645\";\n  t[\"\\uFC2B\"] = \"\\u063A\\u062C\";\n  t[\"\\uFC2C\"] = \"\\u063A\\u0645\";\n  t[\"\\uFC2D\"] = \"\\u0641\\u062C\";\n  t[\"\\uFC2E\"] = \"\\u0641\\u062D\";\n  t[\"\\uFC2F\"] = \"\\u0641\\u062E\";\n  t[\"\\uFC30\"] = \"\\u0641\\u0645\";\n  t[\"\\uFC31\"] = \"\\u0641\\u0649\";\n  t[\"\\uFC32\"] = \"\\u0641\\u064A\";\n  t[\"\\uFC33\"] = \"\\u0642\\u062D\";\n  t[\"\\uFC34\"] = \"\\u0642\\u0645\";\n  t[\"\\uFC35\"] = \"\\u0642\\u0649\";\n  t[\"\\uFC36\"] = \"\\u0642\\u064A\";\n  t[\"\\uFC37\"] = \"\\u0643\\u0627\";\n  t[\"\\uFC38\"] = \"\\u0643\\u062C\";\n  t[\"\\uFC39\"] = \"\\u0643\\u062D\";\n  t[\"\\uFC3A\"] = \"\\u0643\\u062E\";\n  t[\"\\uFC3B\"] = \"\\u0643\\u0644\";\n  t[\"\\uFC3C\"] = \"\\u0643\\u0645\";\n  t[\"\\uFC3D\"] = \"\\u0643\\u0649\";\n  t[\"\\uFC3E\"] = \"\\u0643\\u064A\";\n  t[\"\\uFC3F\"] = \"\\u0644\\u062C\";\n  t[\"\\uFC40\"] = \"\\u0644\\u062D\";\n  t[\"\\uFC41\"] = \"\\u0644\\u062E\";\n  t[\"\\uFC42\"] = \"\\u0644\\u0645\";\n  t[\"\\uFC43\"] = \"\\u0644\\u0649\";\n  t[\"\\uFC44\"] = \"\\u0644\\u064A\";\n  t[\"\\uFC45\"] = \"\\u0645\\u062C\";\n  t[\"\\uFC46\"] = \"\\u0645\\u062D\";\n  t[\"\\uFC47\"] = \"\\u0645\\u062E\";\n  t[\"\\uFC48\"] = \"\\u0645\\u0645\";\n  t[\"\\uFC49\"] = \"\\u0645\\u0649\";\n  t[\"\\uFC4A\"] = \"\\u0645\\u064A\";\n  t[\"\\uFC4B\"] = \"\\u0646\\u062C\";\n  t[\"\\uFC4C\"] = \"\\u0646\\u062D\";\n  t[\"\\uFC4D\"] = \"\\u0646\\u062E\";\n  t[\"\\uFC4E\"] = \"\\u0646\\u0645\";\n  t[\"\\uFC4F\"] = \"\\u0646\\u0649\";\n  t[\"\\uFC50\"] = \"\\u0646\\u064A\";\n  t[\"\\uFC51\"] = \"\\u0647\\u062C\";\n  t[\"\\uFC52\"] = \"\\u0647\\u0645\";\n  t[\"\\uFC53\"] = \"\\u0647\\u0649\";\n  t[\"\\uFC54\"] = \"\\u0647\\u064A\";\n  t[\"\\uFC55\"] = \"\\u064A\\u062C\";\n  t[\"\\uFC56\"] = \"\\u064A\\u062D\";\n  t[\"\\uFC57\"] = \"\\u064A\\u062E\";\n  t[\"\\uFC58\"] = \"\\u064A\\u0645\";\n  t[\"\\uFC59\"] = \"\\u064A\\u0649\";\n  t[\"\\uFC5A\"] = \"\\u064A\\u064A\";\n  t[\"\\uFC5B\"] = \"\\u0630\\u0670\";\n  t[\"\\uFC5C\"] = \"\\u0631\\u0670\";\n  t[\"\\uFC5D\"] = \"\\u0649\\u0670\";\n  t[\"\\uFC5E\"] = \"\\u0020\\u064C\\u0651\";\n  t[\"\\uFC5F\"] = \"\\u0020\\u064D\\u0651\";\n  t[\"\\uFC60\"] = \"\\u0020\\u064E\\u0651\";\n  t[\"\\uFC61\"] = \"\\u0020\\u064F\\u0651\";\n  t[\"\\uFC62\"] = \"\\u0020\\u0650\\u0651\";\n  t[\"\\uFC63\"] = \"\\u0020\\u0651\\u0670\";\n  t[\"\\uFC64\"] = \"\\u0626\\u0631\";\n  t[\"\\uFC65\"] = \"\\u0626\\u0632\";\n  t[\"\\uFC66\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC67\"] = \"\\u0626\\u0646\";\n  t[\"\\uFC68\"] = \"\\u0626\\u0649\";\n  t[\"\\uFC69\"] = \"\\u0626\\u064A\";\n  t[\"\\uFC6A\"] = \"\\u0628\\u0631\";\n  t[\"\\uFC6B\"] = \"\\u0628\\u0632\";\n  t[\"\\uFC6C\"] = \"\\u0628\\u0645\";\n  t[\"\\uFC6D\"] = \"\\u0628\\u0646\";\n  t[\"\\uFC6E\"] = \"\\u0628\\u0649\";\n  t[\"\\uFC6F\"] = \"\\u0628\\u064A\";\n  t[\"\\uFC70\"] = \"\\u062A\\u0631\";\n  t[\"\\uFC71\"] = \"\\u062A\\u0632\";\n  t[\"\\uFC72\"] = \"\\u062A\\u0645\";\n  t[\"\\uFC73\"] = \"\\u062A\\u0646\";\n  t[\"\\uFC74\"] = \"\\u062A\\u0649\";\n  t[\"\\uFC75\"] = \"\\u062A\\u064A\";\n  t[\"\\uFC76\"] = \"\\u062B\\u0631\";\n  t[\"\\uFC77\"] = \"\\u062B\\u0632\";\n  t[\"\\uFC78\"] = \"\\u062B\\u0645\";\n  t[\"\\uFC79\"] = \"\\u062B\\u0646\";\n  t[\"\\uFC7A\"] = \"\\u062B\\u0649\";\n  t[\"\\uFC7B\"] = \"\\u062B\\u064A\";\n  t[\"\\uFC7C\"] = \"\\u0641\\u0649\";\n  t[\"\\uFC7D\"] = \"\\u0641\\u064A\";\n  t[\"\\uFC7E\"] = \"\\u0642\\u0649\";\n  t[\"\\uFC7F\"] = \"\\u0642\\u064A\";\n  t[\"\\uFC80\"] = \"\\u0643\\u0627\";\n  t[\"\\uFC81\"] = \"\\u0643\\u0644\";\n  t[\"\\uFC82\"] = \"\\u0643\\u0645\";\n  t[\"\\uFC83\"] = \"\\u0643\\u0649\";\n  t[\"\\uFC84\"] = \"\\u0643\\u064A\";\n  t[\"\\uFC85\"] = \"\\u0644\\u0645\";\n  t[\"\\uFC86\"] = \"\\u0644\\u0649\";\n  t[\"\\uFC87\"] = \"\\u0644\\u064A\";\n  t[\"\\uFC88\"] = \"\\u0645\\u0627\";\n  t[\"\\uFC89\"] = \"\\u0645\\u0645\";\n  t[\"\\uFC8A\"] = \"\\u0646\\u0631\";\n  t[\"\\uFC8B\"] = \"\\u0646\\u0632\";\n  t[\"\\uFC8C\"] = \"\\u0646\\u0645\";\n  t[\"\\uFC8D\"] = \"\\u0646\\u0646\";\n  t[\"\\uFC8E\"] = \"\\u0646\\u0649\";\n  t[\"\\uFC8F\"] = \"\\u0646\\u064A\";\n  t[\"\\uFC90\"] = \"\\u0649\\u0670\";\n  t[\"\\uFC91\"] = \"\\u064A\\u0631\";\n  t[\"\\uFC92\"] = \"\\u064A\\u0632\";\n  t[\"\\uFC93\"] = \"\\u064A\\u0645\";\n  t[\"\\uFC94\"] = \"\\u064A\\u0646\";\n  t[\"\\uFC95\"] = \"\\u064A\\u0649\";\n  t[\"\\uFC96\"] = \"\\u064A\\u064A\";\n  t[\"\\uFC97\"] = \"\\u0626\\u062C\";\n  t[\"\\uFC98\"] = \"\\u0626\\u062D\";\n  t[\"\\uFC99\"] = \"\\u0626\\u062E\";\n  t[\"\\uFC9A\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC9B\"] = \"\\u0626\\u0647\";\n  t[\"\\uFC9C\"] = \"\\u0628\\u062C\";\n  t[\"\\uFC9D\"] = \"\\u0628\\u062D\";\n  t[\"\\uFC9E\"] = \"\\u0628\\u062E\";\n  t[\"\\uFC9F\"] = \"\\u0628\\u0645\";\n  t[\"\\uFCA0\"] = \"\\u0628\\u0647\";\n  t[\"\\uFCA1\"] = \"\\u062A\\u062C\";\n  t[\"\\uFCA2\"] = \"\\u062A\\u062D\";\n  t[\"\\uFCA3\"] = \"\\u062A\\u062E\";\n  t[\"\\uFCA4\"] = \"\\u062A\\u0645\";\n  t[\"\\uFCA5\"] = \"\\u062A\\u0647\";\n  t[\"\\uFCA6\"] = \"\\u062B\\u0645\";\n  t[\"\\uFCA7\"] = \"\\u062C\\u062D\";\n  t[\"\\uFCA8\"] = \"\\u062C\\u0645\";\n  t[\"\\uFCA9\"] = \"\\u062D\\u062C\";\n  t[\"\\uFCAA\"] = \"\\u062D\\u0645\";\n  t[\"\\uFCAB\"] = \"\\u062E\\u062C\";\n  t[\"\\uFCAC\"] = \"\\u062E\\u0645\";\n  t[\"\\uFCAD\"] = \"\\u0633\\u062C\";\n  t[\"\\uFCAE\"] = \"\\u0633\\u062D\";\n  t[\"\\uFCAF\"] = \"\\u0633\\u062E\";\n  t[\"\\uFCB0\"] = \"\\u0633\\u0645\";\n  t[\"\\uFCB1\"] = \"\\u0635\\u062D\";\n  t[\"\\uFCB2\"] = \"\\u0635\\u062E\";\n  t[\"\\uFCB3\"] = \"\\u0635\\u0645\";\n  t[\"\\uFCB4\"] = \"\\u0636\\u062C\";\n  t[\"\\uFCB5\"] = \"\\u0636\\u062D\";\n  t[\"\\uFCB6\"] = \"\\u0636\\u062E\";\n  t[\"\\uFCB7\"] = \"\\u0636\\u0645\";\n  t[\"\\uFCB8\"] = \"\\u0637\\u062D\";\n  t[\"\\uFCB9\"] = \"\\u0638\\u0645\";\n  t[\"\\uFCBA\"] = \"\\u0639\\u062C\";\n  t[\"\\uFCBB\"] = \"\\u0639\\u0645\";\n  t[\"\\uFCBC\"] = \"\\u063A\\u062C\";\n  t[\"\\uFCBD\"] = \"\\u063A\\u0645\";\n  t[\"\\uFCBE\"] = \"\\u0641\\u062C\";\n  t[\"\\uFCBF\"] = \"\\u0641\\u062D\";\n  t[\"\\uFCC0\"] = \"\\u0641\\u062E\";\n  t[\"\\uFCC1\"] = \"\\u0641\\u0645\";\n  t[\"\\uFCC2\"] = \"\\u0642\\u062D\";\n  t[\"\\uFCC3\"] = \"\\u0642\\u0645\";\n  t[\"\\uFCC4\"] = \"\\u0643\\u062C\";\n  t[\"\\uFCC5\"] = \"\\u0643\\u062D\";\n  t[\"\\uFCC6\"] = \"\\u0643\\u062E\";\n  t[\"\\uFCC7\"] = \"\\u0643\\u0644\";\n  t[\"\\uFCC8\"] = \"\\u0643\\u0645\";\n  t[\"\\uFCC9\"] = \"\\u0644\\u062C\";\n  t[\"\\uFCCA\"] = \"\\u0644\\u062D\";\n  t[\"\\uFCCB\"] = \"\\u0644\\u062E\";\n  t[\"\\uFCCC\"] = \"\\u0644\\u0645\";\n  t[\"\\uFCCD\"] = \"\\u0644\\u0647\";\n  t[\"\\uFCCE\"] = \"\\u0645\\u062C\";\n  t[\"\\uFCCF\"] = \"\\u0645\\u062D\";\n  t[\"\\uFCD0\"] = \"\\u0645\\u062E\";\n  t[\"\\uFCD1\"] = \"\\u0645\\u0645\";\n  t[\"\\uFCD2\"] = \"\\u0646\\u062C\";\n  t[\"\\uFCD3\"] = \"\\u0646\\u062D\";\n  t[\"\\uFCD4\"] = \"\\u0646\\u062E\";\n  t[\"\\uFCD5\"] = \"\\u0646\\u0645\";\n  t[\"\\uFCD6\"] = \"\\u0646\\u0647\";\n  t[\"\\uFCD7\"] = \"\\u0647\\u062C\";\n  t[\"\\uFCD8\"] = \"\\u0647\\u0645\";\n  t[\"\\uFCD9\"] = \"\\u0647\\u0670\";\n  t[\"\\uFCDA\"] = \"\\u064A\\u062C\";\n  t[\"\\uFCDB\"] = \"\\u064A\\u062D\";\n  t[\"\\uFCDC\"] = \"\\u064A\\u062E\";\n  t[\"\\uFCDD\"] = \"\\u064A\\u0645\";\n  t[\"\\uFCDE\"] = \"\\u064A\\u0647\";\n  t[\"\\uFCDF\"] = \"\\u0626\\u0645\";\n  t[\"\\uFCE0\"] = \"\\u0626\\u0647\";\n  t[\"\\uFCE1\"] = \"\\u0628\\u0645\";\n  t[\"\\uFCE2\"] = \"\\u0628\\u0647\";\n  t[\"\\uFCE3\"] = \"\\u062A\\u0645\";\n  t[\"\\uFCE4\"] = \"\\u062A\\u0647\";\n  t[\"\\uFCE5\"] = \"\\u062B\\u0645\";\n  t[\"\\uFCE6\"] = \"\\u062B\\u0647\";\n  t[\"\\uFCE7\"] = \"\\u0633\\u0645\";\n  t[\"\\uFCE8\"] = \"\\u0633\\u0647\";\n  t[\"\\uFCE9\"] = \"\\u0634\\u0645\";\n  t[\"\\uFCEA\"] = \"\\u0634\\u0647\";\n  t[\"\\uFCEB\"] = \"\\u0643\\u0644\";\n  t[\"\\uFCEC\"] = \"\\u0643\\u0645\";\n  t[\"\\uFCED\"] = \"\\u0644\\u0645\";\n  t[\"\\uFCEE\"] = \"\\u0646\\u0645\";\n  t[\"\\uFCEF\"] = \"\\u0646\\u0647\";\n  t[\"\\uFCF0\"] = \"\\u064A\\u0645\";\n  t[\"\\uFCF1\"] = \"\\u064A\\u0647\";\n  t[\"\\uFCF2\"] = \"\\u0640\\u064E\\u0651\";\n  t[\"\\uFCF3\"] = \"\\u0640\\u064F\\u0651\";\n  t[\"\\uFCF4\"] = \"\\u0640\\u0650\\u0651\";\n  t[\"\\uFCF5\"] = \"\\u0637\\u0649\";\n  t[\"\\uFCF6\"] = \"\\u0637\\u064A\";\n  t[\"\\uFCF7\"] = \"\\u0639\\u0649\";\n  t[\"\\uFCF8\"] = \"\\u0639\\u064A\";\n  t[\"\\uFCF9\"] = \"\\u063A\\u0649\";\n  t[\"\\uFCFA\"] = \"\\u063A\\u064A\";\n  t[\"\\uFCFB\"] = \"\\u0633\\u0649\";\n  t[\"\\uFCFC\"] = \"\\u0633\\u064A\";\n  t[\"\\uFCFD\"] = \"\\u0634\\u0649\";\n  t[\"\\uFCFE\"] = \"\\u0634\\u064A\";\n  t[\"\\uFCFF\"] = \"\\u062D\\u0649\";\n  t[\"\\uFD00\"] = \"\\u062D\\u064A\";\n  t[\"\\uFD01\"] = \"\\u062C\\u0649\";\n  t[\"\\uFD02\"] = \"\\u062C\\u064A\";\n  t[\"\\uFD03\"] = \"\\u062E\\u0649\";\n  t[\"\\uFD04\"] = \"\\u062E\\u064A\";\n  t[\"\\uFD05\"] = \"\\u0635\\u0649\";\n  t[\"\\uFD06\"] = \"\\u0635\\u064A\";\n  t[\"\\uFD07\"] = \"\\u0636\\u0649\";\n  t[\"\\uFD08\"] = \"\\u0636\\u064A\";\n  t[\"\\uFD09\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD0A\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD0B\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD0C\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD0D\"] = \"\\u0634\\u0631\";\n  t[\"\\uFD0E\"] = \"\\u0633\\u0631\";\n  t[\"\\uFD0F\"] = \"\\u0635\\u0631\";\n  t[\"\\uFD10\"] = \"\\u0636\\u0631\";\n  t[\"\\uFD11\"] = \"\\u0637\\u0649\";\n  t[\"\\uFD12\"] = \"\\u0637\\u064A\";\n  t[\"\\uFD13\"] = \"\\u0639\\u0649\";\n  t[\"\\uFD14\"] = \"\\u0639\\u064A\";\n  t[\"\\uFD15\"] = \"\\u063A\\u0649\";\n  t[\"\\uFD16\"] = \"\\u063A\\u064A\";\n  t[\"\\uFD17\"] = \"\\u0633\\u0649\";\n  t[\"\\uFD18\"] = \"\\u0633\\u064A\";\n  t[\"\\uFD19\"] = \"\\u0634\\u0649\";\n  t[\"\\uFD1A\"] = \"\\u0634\\u064A\";\n  t[\"\\uFD1B\"] = \"\\u062D\\u0649\";\n  t[\"\\uFD1C\"] = \"\\u062D\\u064A\";\n  t[\"\\uFD1D\"] = \"\\u062C\\u0649\";\n  t[\"\\uFD1E\"] = \"\\u062C\\u064A\";\n  t[\"\\uFD1F\"] = \"\\u062E\\u0649\";\n  t[\"\\uFD20\"] = \"\\u062E\\u064A\";\n  t[\"\\uFD21\"] = \"\\u0635\\u0649\";\n  t[\"\\uFD22\"] = \"\\u0635\\u064A\";\n  t[\"\\uFD23\"] = \"\\u0636\\u0649\";\n  t[\"\\uFD24\"] = \"\\u0636\\u064A\";\n  t[\"\\uFD25\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD26\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD27\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD28\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD29\"] = \"\\u0634\\u0631\";\n  t[\"\\uFD2A\"] = \"\\u0633\\u0631\";\n  t[\"\\uFD2B\"] = \"\\u0635\\u0631\";\n  t[\"\\uFD2C\"] = \"\\u0636\\u0631\";\n  t[\"\\uFD2D\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD2E\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD2F\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD30\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD31\"] = \"\\u0633\\u0647\";\n  t[\"\\uFD32\"] = \"\\u0634\\u0647\";\n  t[\"\\uFD33\"] = \"\\u0637\\u0645\";\n  t[\"\\uFD34\"] = \"\\u0633\\u062C\";\n  t[\"\\uFD35\"] = \"\\u0633\\u062D\";\n  t[\"\\uFD36\"] = \"\\u0633\\u062E\";\n  t[\"\\uFD37\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD38\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD39\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD3A\"] = \"\\u0637\\u0645\";\n  t[\"\\uFD3B\"] = \"\\u0638\\u0645\";\n  t[\"\\uFD3C\"] = \"\\u0627\\u064B\";\n  t[\"\\uFD3D\"] = \"\\u0627\\u064B\";\n  t[\"\\uFD50\"] = \"\\u062A\\u062C\\u0645\";\n  t[\"\\uFD51\"] = \"\\u062A\\u062D\\u062C\";\n  t[\"\\uFD52\"] = \"\\u062A\\u062D\\u062C\";\n  t[\"\\uFD53\"] = \"\\u062A\\u062D\\u0645\";\n  t[\"\\uFD54\"] = \"\\u062A\\u062E\\u0645\";\n  t[\"\\uFD55\"] = \"\\u062A\\u0645\\u062C\";\n  t[\"\\uFD56\"] = \"\\u062A\\u0645\\u062D\";\n  t[\"\\uFD57\"] = \"\\u062A\\u0645\\u062E\";\n  t[\"\\uFD58\"] = \"\\u062C\\u0645\\u062D\";\n  t[\"\\uFD59\"] = \"\\u062C\\u0645\\u062D\";\n  t[\"\\uFD5A\"] = \"\\u062D\\u0645\\u064A\";\n  t[\"\\uFD5B\"] = \"\\u062D\\u0645\\u0649\";\n  t[\"\\uFD5C\"] = \"\\u0633\\u062D\\u062C\";\n  t[\"\\uFD5D\"] = \"\\u0633\\u062C\\u062D\";\n  t[\"\\uFD5E\"] = \"\\u0633\\u062C\\u0649\";\n  t[\"\\uFD5F\"] = \"\\u0633\\u0645\\u062D\";\n  t[\"\\uFD60\"] = \"\\u0633\\u0645\\u062D\";\n  t[\"\\uFD61\"] = \"\\u0633\\u0645\\u062C\";\n  t[\"\\uFD62\"] = \"\\u0633\\u0645\\u0645\";\n  t[\"\\uFD63\"] = \"\\u0633\\u0645\\u0645\";\n  t[\"\\uFD64\"] = \"\\u0635\\u062D\\u062D\";\n  t[\"\\uFD65\"] = \"\\u0635\\u062D\\u062D\";\n  t[\"\\uFD66\"] = \"\\u0635\\u0645\\u0645\";\n  t[\"\\uFD67\"] = \"\\u0634\\u062D\\u0645\";\n  t[\"\\uFD68\"] = \"\\u0634\\u062D\\u0645\";\n  t[\"\\uFD69\"] = \"\\u0634\\u062C\\u064A\";\n  t[\"\\uFD6A\"] = \"\\u0634\\u0645\\u062E\";\n  t[\"\\uFD6B\"] = \"\\u0634\\u0645\\u062E\";\n  t[\"\\uFD6C\"] = \"\\u0634\\u0645\\u0645\";\n  t[\"\\uFD6D\"] = \"\\u0634\\u0645\\u0645\";\n  t[\"\\uFD6E\"] = \"\\u0636\\u062D\\u0649\";\n  t[\"\\uFD6F\"] = \"\\u0636\\u062E\\u0645\";\n  t[\"\\uFD70\"] = \"\\u0636\\u062E\\u0645\";\n  t[\"\\uFD71\"] = \"\\u0637\\u0645\\u062D\";\n  t[\"\\uFD72\"] = \"\\u0637\\u0645\\u062D\";\n  t[\"\\uFD73\"] = \"\\u0637\\u0645\\u0645\";\n  t[\"\\uFD74\"] = \"\\u0637\\u0645\\u064A\";\n  t[\"\\uFD75\"] = \"\\u0639\\u062C\\u0645\";\n  t[\"\\uFD76\"] = \"\\u0639\\u0645\\u0645\";\n  t[\"\\uFD77\"] = \"\\u0639\\u0645\\u0645\";\n  t[\"\\uFD78\"] = \"\\u0639\\u0645\\u0649\";\n  t[\"\\uFD79\"] = \"\\u063A\\u0645\\u0645\";\n  t[\"\\uFD7A\"] = \"\\u063A\\u0645\\u064A\";\n  t[\"\\uFD7B\"] = \"\\u063A\\u0645\\u0649\";\n  t[\"\\uFD7C\"] = \"\\u0641\\u062E\\u0645\";\n  t[\"\\uFD7D\"] = \"\\u0641\\u062E\\u0645\";\n  t[\"\\uFD7E\"] = \"\\u0642\\u0645\\u062D\";\n  t[\"\\uFD7F\"] = \"\\u0642\\u0645\\u0645\";\n  t[\"\\uFD80\"] = \"\\u0644\\u062D\\u0645\";\n  t[\"\\uFD81\"] = \"\\u0644\\u062D\\u064A\";\n  t[\"\\uFD82\"] = \"\\u0644\\u062D\\u0649\";\n  t[\"\\uFD83\"] = \"\\u0644\\u062C\\u062C\";\n  t[\"\\uFD84\"] = \"\\u0644\\u062C\\u062C\";\n  t[\"\\uFD85\"] = \"\\u0644\\u062E\\u0645\";\n  t[\"\\uFD86\"] = \"\\u0644\\u062E\\u0645\";\n  t[\"\\uFD87\"] = \"\\u0644\\u0645\\u062D\";\n  t[\"\\uFD88\"] = \"\\u0644\\u0645\\u062D\";\n  t[\"\\uFD89\"] = \"\\u0645\\u062D\\u062C\";\n  t[\"\\uFD8A\"] = \"\\u0645\\u062D\\u0645\";\n  t[\"\\uFD8B\"] = \"\\u0645\\u062D\\u064A\";\n  t[\"\\uFD8C\"] = \"\\u0645\\u062C\\u062D\";\n  t[\"\\uFD8D\"] = \"\\u0645\\u062C\\u0645\";\n  t[\"\\uFD8E\"] = \"\\u0645\\u062E\\u062C\";\n  t[\"\\uFD8F\"] = \"\\u0645\\u062E\\u0645\";\n  t[\"\\uFD92\"] = \"\\u0645\\u062C\\u062E\";\n  t[\"\\uFD93\"] = \"\\u0647\\u0645\\u062C\";\n  t[\"\\uFD94\"] = \"\\u0647\\u0645\\u0645\";\n  t[\"\\uFD95\"] = \"\\u0646\\u062D\\u0645\";\n  t[\"\\uFD96\"] = \"\\u0646\\u062D\\u0649\";\n  t[\"\\uFD97\"] = \"\\u0646\\u062C\\u0645\";\n  t[\"\\uFD98\"] = \"\\u0646\\u062C\\u0645\";\n  t[\"\\uFD99\"] = \"\\u0646\\u062C\\u0649\";\n  t[\"\\uFD9A\"] = \"\\u0646\\u0645\\u064A\";\n  t[\"\\uFD9B\"] = \"\\u0646\\u0645\\u0649\";\n  t[\"\\uFD9C\"] = \"\\u064A\\u0645\\u0645\";\n  t[\"\\uFD9D\"] = \"\\u064A\\u0645\\u0645\";\n  t[\"\\uFD9E\"] = \"\\u0628\\u062E\\u064A\";\n  t[\"\\uFD9F\"] = \"\\u062A\\u062C\\u064A\";\n  t[\"\\uFDA0\"] = \"\\u062A\\u062C\\u0649\";\n  t[\"\\uFDA1\"] = \"\\u062A\\u062E\\u064A\";\n  t[\"\\uFDA2\"] = \"\\u062A\\u062E\\u0649\";\n  t[\"\\uFDA3\"] = \"\\u062A\\u0645\\u064A\";\n  t[\"\\uFDA4\"] = \"\\u062A\\u0645\\u0649\";\n  t[\"\\uFDA5\"] = \"\\u062C\\u0645\\u064A\";\n  t[\"\\uFDA6\"] = \"\\u062C\\u062D\\u0649\";\n  t[\"\\uFDA7\"] = \"\\u062C\\u0645\\u0649\";\n  t[\"\\uFDA8\"] = \"\\u0633\\u062E\\u0649\";\n  t[\"\\uFDA9\"] = \"\\u0635\\u062D\\u064A\";\n  t[\"\\uFDAA\"] = \"\\u0634\\u062D\\u064A\";\n  t[\"\\uFDAB\"] = \"\\u0636\\u062D\\u064A\";\n  t[\"\\uFDAC\"] = \"\\u0644\\u062C\\u064A\";\n  t[\"\\uFDAD\"] = \"\\u0644\\u0645\\u064A\";\n  t[\"\\uFDAE\"] = \"\\u064A\\u062D\\u064A\";\n  t[\"\\uFDAF\"] = \"\\u064A\\u062C\\u064A\";\n  t[\"\\uFDB0\"] = \"\\u064A\\u0645\\u064A\";\n  t[\"\\uFDB1\"] = \"\\u0645\\u0645\\u064A\";\n  t[\"\\uFDB2\"] = \"\\u0642\\u0645\\u064A\";\n  t[\"\\uFDB3\"] = \"\\u0646\\u062D\\u064A\";\n  t[\"\\uFDB4\"] = \"\\u0642\\u0645\\u062D\";\n  t[\"\\uFDB5\"] = \"\\u0644\\u062D\\u0645\";\n  t[\"\\uFDB6\"] = \"\\u0639\\u0645\\u064A\";\n  t[\"\\uFDB7\"] = \"\\u0643\\u0645\\u064A\";\n  t[\"\\uFDB8\"] = \"\\u0646\\u062C\\u062D\";\n  t[\"\\uFDB9\"] = \"\\u0645\\u062E\\u064A\";\n  t[\"\\uFDBA\"] = \"\\u0644\\u062C\\u0645\";\n  t[\"\\uFDBB\"] = \"\\u0643\\u0645\\u0645\";\n  t[\"\\uFDBC\"] = \"\\u0644\\u062C\\u0645\";\n  t[\"\\uFDBD\"] = \"\\u0646\\u062C\\u062D\";\n  t[\"\\uFDBE\"] = \"\\u062C\\u062D\\u064A\";\n  t[\"\\uFDBF\"] = \"\\u062D\\u062C\\u064A\";\n  t[\"\\uFDC0\"] = \"\\u0645\\u062C\\u064A\";\n  t[\"\\uFDC1\"] = \"\\u0641\\u0645\\u064A\";\n  t[\"\\uFDC2\"] = \"\\u0628\\u062D\\u064A\";\n  t[\"\\uFDC3\"] = \"\\u0643\\u0645\\u0645\";\n  t[\"\\uFDC4\"] = \"\\u0639\\u062C\\u0645\";\n  t[\"\\uFDC5\"] = \"\\u0635\\u0645\\u0645\";\n  t[\"\\uFDC6\"] = \"\\u0633\\u062E\\u064A\";\n  t[\"\\uFDC7\"] = \"\\u0646\\u062C\\u064A\";\n  t[\"\\uFE49\"] = \"\\u203E\";\n  t[\"\\uFE4A\"] = \"\\u203E\";\n  t[\"\\uFE4B\"] = \"\\u203E\";\n  t[\"\\uFE4C\"] = \"\\u203E\";\n  t[\"\\uFE4D\"] = \"\\u005F\";\n  t[\"\\uFE4E\"] = \"\\u005F\";\n  t[\"\\uFE4F\"] = \"\\u005F\";\n  t[\"\\uFE80\"] = \"\\u0621\";\n  t[\"\\uFE81\"] = \"\\u0622\";\n  t[\"\\uFE82\"] = \"\\u0622\";\n  t[\"\\uFE83\"] = \"\\u0623\";\n  t[\"\\uFE84\"] = \"\\u0623\";\n  t[\"\\uFE85\"] = \"\\u0624\";\n  t[\"\\uFE86\"] = \"\\u0624\";\n  t[\"\\uFE87\"] = \"\\u0625\";\n  t[\"\\uFE88\"] = \"\\u0625\";\n  t[\"\\uFE89\"] = \"\\u0626\";\n  t[\"\\uFE8A\"] = \"\\u0626\";\n  t[\"\\uFE8B\"] = \"\\u0626\";\n  t[\"\\uFE8C\"] = \"\\u0626\";\n  t[\"\\uFE8D\"] = \"\\u0627\";\n  t[\"\\uFE8E\"] = \"\\u0627\";\n  t[\"\\uFE8F\"] = \"\\u0628\";\n  t[\"\\uFE90\"] = \"\\u0628\";\n  t[\"\\uFE91\"] = \"\\u0628\";\n  t[\"\\uFE92\"] = \"\\u0628\";\n  t[\"\\uFE93\"] = \"\\u0629\";\n  t[\"\\uFE94\"] = \"\\u0629\";\n  t[\"\\uFE95\"] = \"\\u062A\";\n  t[\"\\uFE96\"] = \"\\u062A\";\n  t[\"\\uFE97\"] = \"\\u062A\";\n  t[\"\\uFE98\"] = \"\\u062A\";\n  t[\"\\uFE99\"] = \"\\u062B\";\n  t[\"\\uFE9A\"] = \"\\u062B\";\n  t[\"\\uFE9B\"] = \"\\u062B\";\n  t[\"\\uFE9C\"] = \"\\u062B\";\n  t[\"\\uFE9D\"] = \"\\u062C\";\n  t[\"\\uFE9E\"] = \"\\u062C\";\n  t[\"\\uFE9F\"] = \"\\u062C\";\n  t[\"\\uFEA0\"] = \"\\u062C\";\n  t[\"\\uFEA1\"] = \"\\u062D\";\n  t[\"\\uFEA2\"] = \"\\u062D\";\n  t[\"\\uFEA3\"] = \"\\u062D\";\n  t[\"\\uFEA4\"] = \"\\u062D\";\n  t[\"\\uFEA5\"] = \"\\u062E\";\n  t[\"\\uFEA6\"] = \"\\u062E\";\n  t[\"\\uFEA7\"] = \"\\u062E\";\n  t[\"\\uFEA8\"] = \"\\u062E\";\n  t[\"\\uFEA9\"] = \"\\u062F\";\n  t[\"\\uFEAA\"] = \"\\u062F\";\n  t[\"\\uFEAB\"] = \"\\u0630\";\n  t[\"\\uFEAC\"] = \"\\u0630\";\n  t[\"\\uFEAD\"] = \"\\u0631\";\n  t[\"\\uFEAE\"] = \"\\u0631\";\n  t[\"\\uFEAF\"] = \"\\u0632\";\n  t[\"\\uFEB0\"] = \"\\u0632\";\n  t[\"\\uFEB1\"] = \"\\u0633\";\n  t[\"\\uFEB2\"] = \"\\u0633\";\n  t[\"\\uFEB3\"] = \"\\u0633\";\n  t[\"\\uFEB4\"] = \"\\u0633\";\n  t[\"\\uFEB5\"] = \"\\u0634\";\n  t[\"\\uFEB6\"] = \"\\u0634\";\n  t[\"\\uFEB7\"] = \"\\u0634\";\n  t[\"\\uFEB8\"] = \"\\u0634\";\n  t[\"\\uFEB9\"] = \"\\u0635\";\n  t[\"\\uFEBA\"] = \"\\u0635\";\n  t[\"\\uFEBB\"] = \"\\u0635\";\n  t[\"\\uFEBC\"] = \"\\u0635\";\n  t[\"\\uFEBD\"] = \"\\u0636\";\n  t[\"\\uFEBE\"] = \"\\u0636\";\n  t[\"\\uFEBF\"] = \"\\u0636\";\n  t[\"\\uFEC0\"] = \"\\u0636\";\n  t[\"\\uFEC1\"] = \"\\u0637\";\n  t[\"\\uFEC2\"] = \"\\u0637\";\n  t[\"\\uFEC3\"] = \"\\u0637\";\n  t[\"\\uFEC4\"] = \"\\u0637\";\n  t[\"\\uFEC5\"] = \"\\u0638\";\n  t[\"\\uFEC6\"] = \"\\u0638\";\n  t[\"\\uFEC7\"] = \"\\u0638\";\n  t[\"\\uFEC8\"] = \"\\u0638\";\n  t[\"\\uFEC9\"] = \"\\u0639\";\n  t[\"\\uFECA\"] = \"\\u0639\";\n  t[\"\\uFECB\"] = \"\\u0639\";\n  t[\"\\uFECC\"] = \"\\u0639\";\n  t[\"\\uFECD\"] = \"\\u063A\";\n  t[\"\\uFECE\"] = \"\\u063A\";\n  t[\"\\uFECF\"] = \"\\u063A\";\n  t[\"\\uFED0\"] = \"\\u063A\";\n  t[\"\\uFED1\"] = \"\\u0641\";\n  t[\"\\uFED2\"] = \"\\u0641\";\n  t[\"\\uFED3\"] = \"\\u0641\";\n  t[\"\\uFED4\"] = \"\\u0641\";\n  t[\"\\uFED5\"] = \"\\u0642\";\n  t[\"\\uFED6\"] = \"\\u0642\";\n  t[\"\\uFED7\"] = \"\\u0642\";\n  t[\"\\uFED8\"] = \"\\u0642\";\n  t[\"\\uFED9\"] = \"\\u0643\";\n  t[\"\\uFEDA\"] = \"\\u0643\";\n  t[\"\\uFEDB\"] = \"\\u0643\";\n  t[\"\\uFEDC\"] = \"\\u0643\";\n  t[\"\\uFEDD\"] = \"\\u0644\";\n  t[\"\\uFEDE\"] = \"\\u0644\";\n  t[\"\\uFEDF\"] = \"\\u0644\";\n  t[\"\\uFEE0\"] = \"\\u0644\";\n  t[\"\\uFEE1\"] = \"\\u0645\";\n  t[\"\\uFEE2\"] = \"\\u0645\";\n  t[\"\\uFEE3\"] = \"\\u0645\";\n  t[\"\\uFEE4\"] = \"\\u0645\";\n  t[\"\\uFEE5\"] = \"\\u0646\";\n  t[\"\\uFEE6\"] = \"\\u0646\";\n  t[\"\\uFEE7\"] = \"\\u0646\";\n  t[\"\\uFEE8\"] = \"\\u0646\";\n  t[\"\\uFEE9\"] = \"\\u0647\";\n  t[\"\\uFEEA\"] = \"\\u0647\";\n  t[\"\\uFEEB\"] = \"\\u0647\";\n  t[\"\\uFEEC\"] = \"\\u0647\";\n  t[\"\\uFEED\"] = \"\\u0648\";\n  t[\"\\uFEEE\"] = \"\\u0648\";\n  t[\"\\uFEEF\"] = \"\\u0649\";\n  t[\"\\uFEF0\"] = \"\\u0649\";\n  t[\"\\uFEF1\"] = \"\\u064A\";\n  t[\"\\uFEF2\"] = \"\\u064A\";\n  t[\"\\uFEF3\"] = \"\\u064A\";\n  t[\"\\uFEF4\"] = \"\\u064A\";\n  t[\"\\uFEF5\"] = \"\\u0644\\u0622\";\n  t[\"\\uFEF6\"] = \"\\u0644\\u0622\";\n  t[\"\\uFEF7\"] = \"\\u0644\\u0623\";\n  t[\"\\uFEF8\"] = \"\\u0644\\u0623\";\n  t[\"\\uFEF9\"] = \"\\u0644\\u0625\";\n  t[\"\\uFEFA\"] = \"\\u0644\\u0625\";\n  t[\"\\uFEFB\"] = \"\\u0644\\u0627\";\n  t[\"\\uFEFC\"] = \"\\u0644\\u0627\";\n});\n\nfunction reverseIfRtl(chars) {\n  var charsLength = chars.length;\n  // Reverse an arabic ligature.\n  if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n    return chars;\n  }\n  var s = \"\";\n  for (var ii = charsLength - 1; ii >= 0; ii--) {\n    s += chars[ii];\n  }\n  return s;\n}\n\nexports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;\nexports.reverseIfRtl = reverseIfRtl;\nexports.getUnicodeRangeFor = getUnicodeRangeFor;\nexports.getNormalizedUnicodes = getNormalizedUnicodes;\nexports.getUnicodeForGlyph = getUnicodeForGlyph;\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\nvar FontRendererFactory = (function FontRendererFactoryClosure() {\n  function getLong(data, offset) {\n    return (\n      (data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]\n    );\n  }\n\n  function getUshort(data, offset) {\n    return (data[offset] << 8) | data[offset + 1];\n  }\n\n  function getSubroutineBias(subrs) {\n    const numSubrs = subrs.length;\n    let bias = 32768;\n    if (numSubrs < 1240) {\n      bias = 107;\n    } else if (numSubrs < 33900) {\n      bias = 1131;\n    }\n    return bias;\n  }\n\n  function parseCmap(data, start, end) {\n    var offset =\n      getUshort(data, start + 2) === 1\n        ? getLong(data, start + 8)\n        : getLong(data, start + 16);\n    var format = getUshort(data, start + offset);\n    var ranges, p, i;\n    if (format === 4) {\n      getUshort(data, start + offset + 2); // length\n      var segCount = getUshort(data, start + offset + 6) >> 1;\n      p = start + offset + 14;\n      ranges = [];\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i] = { end: getUshort(data, p) };\n      }\n      p += 2;\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].start = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].idDelta = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        var idOffset = getUshort(data, p);\n        if (idOffset === 0) {\n          continue;\n        }\n        ranges[i].ids = [];\n        for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n          ranges[i].ids[j] = getUshort(data, p + idOffset);\n          idOffset += 2;\n        }\n      }\n      return ranges;\n    } else if (format === 12) {\n      getLong(data, start + offset + 4); // length\n      var groups = getLong(data, start + offset + 12);\n      p = start + offset + 16;\n      ranges = [];\n      for (i = 0; i < groups; i++) {\n        ranges.push({\n          start: getLong(data, p),\n          end: getLong(data, p + 4),\n          idDelta: getLong(data, p + 8) - getLong(data, p),\n        });\n        p += 12;\n      }\n      return ranges;\n    }\n    throw new FormatError(`unsupported cmap: ${format}`);\n  }\n\n  function parseCff(data, start, end, seacAnalysisEnabled) {\n    var properties = {};\n    var parser = new CFFParser(\n      new Stream(data, start, end - start),\n      properties,\n      seacAnalysisEnabled\n    );\n    var cff = parser.parse();\n    return {\n      glyphs: cff.charStrings.objects,\n      subrs:\n        cff.topDict.privateDict &&\n        cff.topDict.privateDict.subrsIndex &&\n        cff.topDict.privateDict.subrsIndex.objects,\n      gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n      isCFFCIDFont: cff.isCIDFont,\n      fdSelect: cff.fdSelect,\n      fdArray: cff.fdArray,\n    };\n  }\n\n  function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n    var itemSize, itemDecode;\n    if (isGlyphLocationsLong) {\n      itemSize = 4;\n      itemDecode = function fontItemDecodeLong(data, offset) {\n        return (\n          (data[offset] << 24) |\n          (data[offset + 1] << 16) |\n          (data[offset + 2] << 8) |\n          data[offset + 3]\n        );\n      };\n    } else {\n      itemSize = 2;\n      itemDecode = function fontItemDecode(data, offset) {\n        return (data[offset] << 9) | (data[offset + 1] << 1);\n      };\n    }\n    var glyphs = [];\n    var startOffset = itemDecode(loca, 0);\n    for (var j = itemSize; j < loca.length; j += itemSize) {\n      var endOffset = itemDecode(loca, j);\n      glyphs.push(glyf.subarray(startOffset, endOffset));\n      startOffset = endOffset;\n    }\n    return glyphs;\n  }\n\n  function lookupCmap(ranges, unicode) {\n    var code = unicode.codePointAt(0),\n      gid = 0;\n    var l = 0,\n      r = ranges.length - 1;\n    while (l < r) {\n      var c = (l + r + 1) >> 1;\n      if (code < ranges[c].start) {\n        r = c - 1;\n      } else {\n        l = c;\n      }\n    }\n    if (ranges[l].start <= code && code <= ranges[l].end) {\n      gid =\n        (ranges[l].idDelta +\n          (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n        0xffff;\n    }\n    return {\n      charCode: code,\n      glyphId: gid,\n    };\n  }\n\n  function compileGlyf(code, cmds, font) {\n    function moveTo(x, y) {\n      cmds.push({ cmd: \"moveTo\", args: [x, y] });\n    }\n    function lineTo(x, y) {\n      cmds.push({ cmd: \"lineTo\", args: [x, y] });\n    }\n    function quadraticCurveTo(xa, ya, x, y) {\n      cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n    }\n\n    var i = 0;\n    var numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n    var flags;\n    var x = 0,\n      y = 0;\n    i += 10;\n    if (numberOfContours < 0) {\n      // composite glyph\n      do {\n        flags = (code[i] << 8) | code[i + 1];\n        var glyphIndex = (code[i + 2] << 8) | code[i + 3];\n        i += 4;\n        var arg1, arg2;\n        if (flags & 0x01) {\n          arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n          arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16;\n          i += 4;\n        } else {\n          arg1 = code[i++];\n          arg2 = code[i++];\n        }\n        if (flags & 0x02) {\n          x = arg1;\n          y = arg2;\n        } else {\n          x = 0;\n          y = 0; // TODO \"they are points\" ?\n        }\n        var scaleX = 1,\n          scaleY = 1,\n          scale01 = 0,\n          scale10 = 0;\n        if (flags & 0x08) {\n          scaleX = scaleY =\n            ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          i += 2;\n        } else if (flags & 0x40) {\n          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n          i += 4;\n        } else if (flags & 0x80) {\n          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n          scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824;\n          scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824;\n          i += 8;\n        }\n        var subglyph = font.glyphs[glyphIndex];\n        if (subglyph) {\n          cmds.push({ cmd: \"save\" });\n          cmds.push({\n            cmd: \"transform\",\n            args: [scaleX, scale01, scale10, scaleY, x, y],\n          });\n          compileGlyf(subglyph, cmds, font);\n          cmds.push({ cmd: \"restore\" });\n        }\n      } while (flags & 0x20);\n    } else {\n      // simple glyph\n      var endPtsOfContours = [];\n      var j, jj;\n      for (j = 0; j < numberOfContours; j++) {\n        endPtsOfContours.push((code[i] << 8) | code[i + 1]);\n        i += 2;\n      }\n      var instructionLength = (code[i] << 8) | code[i + 1];\n      i += 2 + instructionLength; // skipping the instructions\n      var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n      var points = [];\n      while (points.length < numberOfPoints) {\n        flags = code[i++];\n        var repeat = 1;\n        if (flags & 0x08) {\n          repeat += code[i++];\n        }\n        while (repeat-- > 0) {\n          points.push({ flags });\n        }\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x12) {\n          case 0x00:\n            x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n            i += 2;\n            break;\n          case 0x02:\n            x -= code[i++];\n            break;\n          case 0x12:\n            x += code[i++];\n            break;\n        }\n        points[j].x = x;\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x24) {\n          case 0x00:\n            y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n            i += 2;\n            break;\n          case 0x04:\n            y -= code[i++];\n            break;\n          case 0x24:\n            y += code[i++];\n            break;\n        }\n        points[j].y = y;\n      }\n\n      var startPoint = 0;\n      for (i = 0; i < numberOfContours; i++) {\n        var endPoint = endPtsOfContours[i];\n        // contours might have implicit points, which is located in the middle\n        // between two neighboring off-curve points\n        var contour = points.slice(startPoint, endPoint + 1);\n        if (contour[0].flags & 1) {\n          contour.push(contour[0]); // using start point at the contour end\n        } else if (contour[contour.length - 1].flags & 1) {\n          // first is off-curve point, trying to use one from the end\n          contour.unshift(contour[contour.length - 1]);\n        } else {\n          // start and end are off-curve points, creating implicit one\n          var p = {\n            flags: 1,\n            x: (contour[0].x + contour[contour.length - 1].x) / 2,\n            y: (contour[0].y + contour[contour.length - 1].y) / 2,\n          };\n          contour.unshift(p);\n          contour.push(p);\n        }\n        moveTo(contour[0].x, contour[0].y);\n        for (j = 1, jj = contour.length; j < jj; j++) {\n          if (contour[j].flags & 1) {\n            lineTo(contour[j].x, contour[j].y);\n          } else if (contour[j + 1].flags & 1) {\n            quadraticCurveTo(\n              contour[j].x,\n              contour[j].y,\n              contour[j + 1].x,\n              contour[j + 1].y\n            );\n            j++;\n          } else {\n            quadraticCurveTo(\n              contour[j].x,\n              contour[j].y,\n              (contour[j].x + contour[j + 1].x) / 2,\n              (contour[j].y + contour[j + 1].y) / 2\n            );\n          }\n        }\n        startPoint = endPoint + 1;\n      }\n    }\n  }\n\n  function compileCharString(code, cmds, font, glyphId) {\n    var stack = [];\n    var x = 0,\n      y = 0;\n    var stems = 0;\n\n    function moveTo(x, y) {\n      cmds.push({ cmd: \"moveTo\", args: [x, y] });\n    }\n    function lineTo(x, y) {\n      cmds.push({ cmd: \"lineTo\", args: [x, y] });\n    }\n    function bezierCurveTo(x1, y1, x2, y2, x, y) {\n      cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n    }\n\n    function parse(code) {\n      var i = 0;\n      while (i < code.length) {\n        var stackClean = false;\n        var v = code[i++];\n        var xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n        switch (v) {\n          case 1: // hstem\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 3: // vstem\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 4: // vmoveto\n            y += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 5: // rlineto\n            while (stack.length > 0) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 6: // hlineto\n            while (stack.length > 0) {\n              x += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 7: // vlineto\n            while (stack.length > 0) {\n              y += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              x += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 8: // rrcurveto\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 10: // callsubr\n            n = stack.pop();\n            subrCode = null;\n            if (font.isCFFCIDFont) {\n              const fdIndex = font.fdSelect.getFDIndex(glyphId);\n              if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n                const fontDict = font.fdArray[fdIndex];\n                let subrs;\n                if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n                  subrs = fontDict.privateDict.subrsIndex.objects;\n                }\n                if (subrs) {\n                  // Add subroutine bias.\n                  n += getSubroutineBias(subrs);\n                  subrCode = subrs[n];\n                }\n              } else {\n                warn(\"Invalid fd index for glyph index.\");\n              }\n            } else {\n              subrCode = font.subrs[n + font.subrsBias];\n            }\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 11: // return\n            return;\n          case 12:\n            v = code[i++];\n            switch (v) {\n              case 34: // flex\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                y1 = y + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y, xb, y1, x, y1);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y, x, y);\n                break;\n              case 35: // flex\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                stack.pop(); // fd\n                break;\n              case 36: // hflex1\n                xa = x + stack.shift();\n                y1 = y + stack.shift();\n                xb = xa + stack.shift();\n                y2 = y1 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y2, x, y2);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                y3 = y2 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y2, xb, y3, x, y);\n                break;\n              case 37: // flex1\n                var x0 = x,\n                  y0 = y;\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb;\n                y = yb;\n                if (Math.abs(x - x0) > Math.abs(y - y0)) {\n                  x += stack.shift();\n                } else {\n                  y += stack.shift();\n                }\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                break;\n              default:\n                throw new FormatError(`unknown operator: 12 ${v}`);\n            }\n            break;\n          case 14: // endchar\n            if (stack.length >= 4) {\n              var achar = stack.pop();\n              var bchar = stack.pop();\n              y = stack.pop();\n              x = stack.pop();\n              cmds.push({ cmd: \"save\" });\n              cmds.push({ cmd: \"translate\", args: [x, y] });\n              var cmap = lookupCmap(\n                font.cmap,\n                String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n              );\n              compileCharString(\n                font.glyphs[cmap.glyphId],\n                cmds,\n                font,\n                cmap.glyphId\n              );\n              cmds.push({ cmd: \"restore\" });\n\n              cmap = lookupCmap(\n                font.cmap,\n                String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n              );\n              compileCharString(\n                font.glyphs[cmap.glyphId],\n                cmds,\n                font,\n                cmap.glyphId\n              );\n            }\n            return;\n          case 18: // hstemhm\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 19: // hintmask\n            stems += stack.length >> 1;\n            i += (stems + 7) >> 3;\n            stackClean = true;\n            break;\n          case 20: // cntrmask\n            stems += stack.length >> 1;\n            i += (stems + 7) >> 3;\n            stackClean = true;\n            break;\n          case 21: // rmoveto\n            y += stack.pop();\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 22: // hmoveto\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 23: // vstemhm\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 24: // rcurveline\n            while (stack.length > 2) {\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n            break;\n          case 25: // rlinecurve\n            while (stack.length > 6) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            break;\n          case 26: // vvcurveto\n            if (stack.length % 2) {\n              x += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb;\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 27: // hhcurveto\n            if (stack.length % 2) {\n              y += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb;\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 28:\n            stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n            i += 2;\n            break;\n          case 29: // callgsubr\n            n = stack.pop() + font.gsubrsBias;\n            subrCode = font.gsubrs[n];\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 30: // vhcurveto\n            while (stack.length > 0) {\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 31: // hvcurveto\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          default:\n            if (v < 32) {\n              throw new FormatError(`unknown operator: ${v}`);\n            }\n            if (v < 247) {\n              stack.push(v - 139);\n            } else if (v < 251) {\n              stack.push((v - 247) * 256 + code[i++] + 108);\n            } else if (v < 255) {\n              stack.push(-(v - 251) * 256 - code[i++] - 108);\n            } else {\n              stack.push(\n                ((code[i] << 24) |\n                  (code[i + 1] << 16) |\n                  (code[i + 2] << 8) |\n                  code[i + 3]) /\n                  65536\n              );\n              i += 4;\n            }\n            break;\n        }\n        if (stackClean) {\n          stack.length = 0;\n        }\n      }\n    }\n    parse(code);\n  }\n\n  const NOOP = [];\n\n  class CompiledFont {\n    constructor(fontMatrix) {\n      if (this.constructor === CompiledFont) {\n        unreachable(\"Cannot initialize CompiledFont.\");\n      }\n      this.fontMatrix = fontMatrix;\n\n      this.compiledGlyphs = Object.create(null);\n      this.compiledCharCodeToGlyphId = Object.create(null);\n    }\n\n    getPathJs(unicode) {\n      const cmap = lookupCmap(this.cmap, unicode);\n      let fn = this.compiledGlyphs[cmap.glyphId];\n      if (!fn) {\n        fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId);\n        this.compiledGlyphs[cmap.glyphId] = fn;\n      }\n      if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {\n        this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;\n      }\n      return fn;\n    }\n\n    compileGlyph(code, glyphId) {\n      if (!code || code.length === 0 || code[0] === 14) {\n        return NOOP;\n      }\n\n      let fontMatrix = this.fontMatrix;\n      if (this.isCFFCIDFont) {\n        // Top DICT's FontMatrix can be ignored because CFFCompiler always\n        // removes it and copies to FDArray DICTs.\n        const fdIndex = this.fdSelect.getFDIndex(glyphId);\n        if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n          const fontDict = this.fdArray[fdIndex];\n          fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n        } else {\n          warn(\"Invalid fd index for glyph index.\");\n        }\n      }\n\n      const cmds = [];\n      cmds.push({ cmd: \"save\" });\n      cmds.push({ cmd: \"transform\", args: fontMatrix.slice() });\n      cmds.push({ cmd: \"scale\", args: [\"size\", \"-size\"] });\n\n      this.compileGlyphImpl(code, cmds, glyphId);\n\n      cmds.push({ cmd: \"restore\" });\n\n      return cmds;\n    }\n\n    compileGlyphImpl() {\n      unreachable(\"Children classes should implement this.\");\n    }\n\n    hasBuiltPath(unicode) {\n      const cmap = lookupCmap(this.cmap, unicode);\n      return (\n        this.compiledGlyphs[cmap.glyphId] !== undefined &&\n        this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined\n      );\n    }\n  }\n\n  class TrueTypeCompiled extends CompiledFont {\n    constructor(glyphs, cmap, fontMatrix) {\n      super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n      this.glyphs = glyphs;\n      this.cmap = cmap;\n    }\n\n    compileGlyphImpl(code, cmds) {\n      compileGlyf(code, cmds, this);\n    }\n  }\n\n  class Type2Compiled extends CompiledFont {\n    constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n      super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n      this.glyphs = cffInfo.glyphs;\n      this.gsubrs = cffInfo.gsubrs || [];\n      this.subrs = cffInfo.subrs || [];\n      this.cmap = cmap;\n      this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n      this.gsubrsBias = getSubroutineBias(this.gsubrs);\n      this.subrsBias = getSubroutineBias(this.subrs);\n\n      this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n      this.fdSelect = cffInfo.fdSelect;\n      this.fdArray = cffInfo.fdArray;\n    }\n\n    compileGlyphImpl(code, cmds, glyphId) {\n      compileCharString(code, cmds, this, glyphId);\n    }\n  }\n\n  return {\n    create: function FontRendererFactory_create(font, seacAnalysisEnabled) {\n      var data = new Uint8Array(font.data);\n      var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n      var numTables = getUshort(data, 4);\n      for (var i = 0, p = 12; i < numTables; i++, p += 16) {\n        var tag = bytesToString(data.subarray(p, p + 4));\n        var offset = getLong(data, p + 8);\n        var length = getLong(data, p + 12);\n        switch (tag) {\n          case \"cmap\":\n            cmap = parseCmap(data, offset, offset + length);\n            break;\n          case \"glyf\":\n            glyf = data.subarray(offset, offset + length);\n            break;\n          case \"loca\":\n            loca = data.subarray(offset, offset + length);\n            break;\n          case \"head\":\n            unitsPerEm = getUshort(data, offset + 18);\n            indexToLocFormat = getUshort(data, offset + 50);\n            break;\n          case \"CFF \":\n            cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n            break;\n        }\n      }\n\n      if (glyf) {\n        var fontMatrix = !unitsPerEm\n          ? font.fontMatrix\n          : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n        return new TrueTypeCompiled(\n          parseGlyfTable(glyf, loca, indexToLocFormat),\n          cmap,\n          fontMatrix\n        );\n      }\n      return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n    },\n  };\n})();\n\nexport { FontRendererFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nvar HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n *  A CharString byte containing the values from 32 through 255 inclusive\n *  indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n *  CharStrings commands are encoded in 1 or 2 bytes.\n *\n *  Single byte commands are encoded in 1 byte that contains a value between\n *  0 and 31 inclusive.\n *  If a command byte contains the value 12, then the value in the next byte\n *  indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nvar Type1CharString = (function Type1CharStringClosure() {\n  var COMMAND_MAP = {\n    hstem: [1],\n    vstem: [3],\n    vmoveto: [4],\n    rlineto: [5],\n    hlineto: [6],\n    vlineto: [7],\n    rrcurveto: [8],\n    callsubr: [10],\n    flex: [12, 35],\n    drop: [12, 18],\n    endchar: [14],\n    rmoveto: [21],\n    hmoveto: [22],\n    vhcurveto: [30],\n    hvcurveto: [31],\n  };\n\n  function Type1CharString() {\n    this.width = 0;\n    this.lsb = 0;\n    this.flexing = false;\n    this.output = [];\n    this.stack = [];\n  }\n\n  Type1CharString.prototype = {\n    convert: function Type1CharString_convert(\n      encoded,\n      subrs,\n      seacAnalysisEnabled\n    ) {\n      var count = encoded.length;\n      var error = false;\n      var wx, sbx, subrNumber;\n      for (var i = 0; i < count; i++) {\n        var value = encoded[i];\n        if (value < 32) {\n          if (value === 12) {\n            value = (value << 8) + encoded[++i];\n          }\n          switch (value) {\n            case 1: // hstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case 3: // vstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case 4: // vmoveto\n              if (this.flexing) {\n                if (this.stack.length < 1) {\n                  error = true;\n                  break;\n                }\n                // Add the dx for flex and but also swap the values so they are\n                // the right order.\n                var dy = this.stack.pop();\n                this.stack.push(0, dy);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n              break;\n            case 5: // rlineto\n              error = this.executeCommand(2, COMMAND_MAP.rlineto);\n              break;\n            case 6: // hlineto\n              error = this.executeCommand(1, COMMAND_MAP.hlineto);\n              break;\n            case 7: // vlineto\n              error = this.executeCommand(1, COMMAND_MAP.vlineto);\n              break;\n            case 8: // rrcurveto\n              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n              break;\n            case 9: // closepath\n              // closepath is a Type1 command that does not take argument and is\n              // useless in Type2 and it can simply be ignored.\n              this.stack = [];\n              break;\n            case 10: // callsubr\n              if (this.stack.length < 1) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              if (!subrs[subrNumber]) {\n                error = true;\n                break;\n              }\n              error = this.convert(\n                subrs[subrNumber],\n                subrs,\n                seacAnalysisEnabled\n              );\n              break;\n            case 11: // return\n              return error;\n            case 13: // hsbw\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use hmoveto with lsb.\n              wx = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx);\n              error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n              break;\n            case 14: // endchar\n              this.output.push(COMMAND_MAP.endchar[0]);\n              break;\n            case 21: // rmoveto\n              if (this.flexing) {\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n              break;\n            case 22: // hmoveto\n              if (this.flexing) {\n                // Add the dy for flex.\n                this.stack.push(0);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n              break;\n            case 30: // vhcurveto\n              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n              break;\n            case 31: // hvcurveto\n              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n              break;\n            case (12 << 8) + 0: // dotsection\n              // dotsection is a Type1 command to specify some hinting feature\n              // for dots that do not take a parameter and it can safely be\n              // ignored for Type2.\n              this.stack = [];\n              break;\n            case (12 << 8) + 1: // vstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n              // multiple parameters, so instead of returning [vh]stem3 take a\n              // shortcut and return [vhstem] instead.\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case (12 << 8) + 2: // hstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // See vstem3.\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case (12 << 8) + 6: // seac\n              // seac is like type 2's special endchar but it doesn't use the\n              // first argument asb, so remove it.\n              if (seacAnalysisEnabled) {\n                this.seac = this.stack.splice(-4, 4);\n                error = this.executeCommand(0, COMMAND_MAP.endchar);\n              } else {\n                error = this.executeCommand(4, COMMAND_MAP.endchar);\n              }\n              break;\n            case (12 << 8) + 7: // sbw\n              if (this.stack.length < 4) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use rmoveto with\n              // (dx, dy). The height argument will not be used for vmtx and\n              // vhea tables reconstruction -- ignoring it.\n              this.stack.pop(); // wy\n              wx = this.stack.pop();\n              var sby = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx, sby);\n              error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n              break;\n            case (12 << 8) + 12: // div\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              var num2 = this.stack.pop();\n              var num1 = this.stack.pop();\n              this.stack.push(num1 / num2);\n              break;\n            case (12 << 8) + 16: // callothersubr\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              var numArgs = this.stack.pop();\n              if (subrNumber === 0 && numArgs === 3) {\n                var flexArgs = this.stack.splice(this.stack.length - 17, 17);\n                this.stack.push(\n                  flexArgs[2] + flexArgs[0], // bcp1x + rpx\n                  flexArgs[3] + flexArgs[1], // bcp1y + rpy\n                  flexArgs[4], // bcp2x\n                  flexArgs[5], // bcp2y\n                  flexArgs[6], // p2x\n                  flexArgs[7], // p2y\n                  flexArgs[8], // bcp3x\n                  flexArgs[9], // bcp3y\n                  flexArgs[10], // bcp4x\n                  flexArgs[11], // bcp4y\n                  flexArgs[12], // p3x\n                  flexArgs[13], // p3y\n                  flexArgs[14] // flexDepth\n                  // 15 = finalx unused by flex\n                  // 16 = finaly unused by flex\n                );\n                error = this.executeCommand(13, COMMAND_MAP.flex, true);\n                this.flexing = false;\n                this.stack.push(flexArgs[15], flexArgs[16]);\n              } else if (subrNumber === 1 && numArgs === 0) {\n                this.flexing = true;\n              }\n              break;\n            case (12 << 8) + 17: // pop\n              // Ignore this since it is only used with othersubr.\n              break;\n            case (12 << 8) + 33: // setcurrentpoint\n              // Ignore for now.\n              this.stack = [];\n              break;\n            default:\n              warn('Unknown type 1 charstring command of \"' + value + '\"');\n              break;\n          }\n          if (error) {\n            break;\n          }\n          continue;\n        } else if (value <= 246) {\n          value = value - 139;\n        } else if (value <= 250) {\n          value = (value - 247) * 256 + encoded[++i] + 108;\n        } else if (value <= 254) {\n          value = -((value - 251) * 256) - encoded[++i] - 108;\n        } else {\n          value =\n            ((encoded[++i] & 0xff) << 24) |\n            ((encoded[++i] & 0xff) << 16) |\n            ((encoded[++i] & 0xff) << 8) |\n            ((encoded[++i] & 0xff) << 0);\n        }\n        this.stack.push(value);\n      }\n      return error;\n    },\n\n    executeCommand(howManyArgs, command, keepStack) {\n      var stackLength = this.stack.length;\n      if (howManyArgs > stackLength) {\n        return true;\n      }\n      var start = stackLength - howManyArgs;\n      for (var i = start; i < stackLength; i++) {\n        var value = this.stack[i];\n        if (Number.isInteger(value)) {\n          this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n        } else {\n          // fixed point\n          value = (65536 * value) | 0;\n          this.output.push(\n            255,\n            (value >> 24) & 0xff,\n            (value >> 16) & 0xff,\n            (value >> 8) & 0xff,\n            value & 0xff\n          );\n        }\n      }\n      this.output.push.apply(this.output, command);\n      if (keepStack) {\n        this.stack.splice(start, howManyArgs);\n      } else {\n        this.stack.length = 0;\n      }\n      return false;\n    },\n  };\n\n  return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nvar Type1Parser = (function Type1ParserClosure() {\n  /*\n   * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n   * of Plaintext Bytes. The function took a key as a parameter which can be\n   * for decrypting the eexec block of for decoding charStrings.\n   */\n  var EEXEC_ENCRYPT_KEY = 55665;\n  var CHAR_STRS_ENCRYPT_KEY = 4330;\n\n  function isHexDigit(code) {\n    return (\n      (code >= 48 && code <= 57) || // '0'-'9'\n      (code >= 65 && code <= 70) || // 'A'-'F'\n      (code >= 97 && code <= 102) // 'a'-'f'\n    );\n  }\n\n  function decrypt(data, key, discardNumber) {\n    if (discardNumber >= data.length) {\n      return new Uint8Array(0);\n    }\n    var r = key | 0,\n      c1 = 52845,\n      c2 = 22719,\n      i,\n      j;\n    for (i = 0; i < discardNumber; i++) {\n      r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    var count = data.length - discardNumber;\n    var decrypted = new Uint8Array(count);\n    for (i = discardNumber, j = 0; j < count; i++, j++) {\n      var value = data[i];\n      decrypted[j] = value ^ (r >> 8);\n      r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    return decrypted;\n  }\n\n  function decryptAscii(data, key, discardNumber) {\n    var r = key | 0,\n      c1 = 52845,\n      c2 = 22719;\n    var count = data.length,\n      maybeLength = count >>> 1;\n    var decrypted = new Uint8Array(maybeLength);\n    var i, j;\n    for (i = 0, j = 0; i < count; i++) {\n      var digit1 = data[i];\n      if (!isHexDigit(digit1)) {\n        continue;\n      }\n      i++;\n      var digit2;\n      while (i < count && !isHexDigit((digit2 = data[i]))) {\n        i++;\n      }\n      if (i < count) {\n        var value = parseInt(String.fromCharCode(digit1, digit2), 16);\n        decrypted[j++] = value ^ (r >> 8);\n        r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n      }\n    }\n    return Array.prototype.slice.call(decrypted, discardNumber, j);\n  }\n\n  function isSpecial(c) {\n    return (\n      c === /* '/' = */ 0x2f ||\n      c === /* '[' = */ 0x5b ||\n      c === /* ']' = */ 0x5d ||\n      c === /* '{' = */ 0x7b ||\n      c === /* '}' = */ 0x7d ||\n      c === /* '(' = */ 0x28 ||\n      c === /* ')' = */ 0x29\n    );\n  }\n\n  function Type1Parser(stream, encrypted, seacAnalysisEnabled) {\n    if (encrypted) {\n      var data = stream.getBytes();\n      var isBinary = !(\n        isHexDigit(data[0]) &&\n        isHexDigit(data[1]) &&\n        isHexDigit(data[2]) &&\n        isHexDigit(data[3])\n      );\n      stream = new Stream(\n        isBinary\n          ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n          : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n      );\n    }\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n    this.stream = stream;\n    this.nextChar();\n  }\n\n  Type1Parser.prototype = {\n    readNumberArray: function Type1Parser_readNumberArray() {\n      this.getToken(); // read '[' or '{' (arrays can start with either)\n      var array = [];\n      while (true) {\n        var token = this.getToken();\n        if (token === null || token === \"]\" || token === \"}\") {\n          break;\n        }\n        array.push(parseFloat(token || 0));\n      }\n      return array;\n    },\n\n    readNumber: function Type1Parser_readNumber() {\n      var token = this.getToken();\n      return parseFloat(token || 0);\n    },\n\n    readInt: function Type1Parser_readInt() {\n      // Use '| 0' to prevent setting a double into length such as the double\n      // does not flow into the loop variable.\n      var token = this.getToken();\n      return parseInt(token || 0, 10) | 0;\n    },\n\n    readBoolean: function Type1Parser_readBoolean() {\n      var token = this.getToken();\n\n      // Use 1 and 0 since that's what type2 charstrings use.\n      return token === \"true\" ? 1 : 0;\n    },\n\n    nextChar: function Type1_nextChar() {\n      return (this.currentChar = this.stream.getByte());\n    },\n\n    getToken: function Type1Parser_getToken() {\n      // Eat whitespace and comments.\n      var comment = false;\n      var ch = this.currentChar;\n      while (true) {\n        if (ch === -1) {\n          return null;\n        }\n\n        if (comment) {\n          if (ch === 0x0a || ch === 0x0d) {\n            comment = false;\n          }\n        } else if (ch === /* '%' = */ 0x25) {\n          comment = true;\n        } else if (!isWhiteSpace(ch)) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      if (isSpecial(ch)) {\n        this.nextChar();\n        return String.fromCharCode(ch);\n      }\n      var token = \"\";\n      do {\n        token += String.fromCharCode(ch);\n        ch = this.nextChar();\n      } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n      return token;\n    },\n\n    readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {\n      if (lenIV === -1) {\n        // This isn't in the spec, but Adobe's tx program handles -1\n        // as plain text.\n        return bytes;\n      }\n      return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n    },\n\n    /*\n     * Returns an object containing a Subrs array and a CharStrings\n     * array extracted from and eexec encrypted block of data\n     */\n    extractFontProgram: function Type1Parser_extractFontProgram(properties) {\n      var stream = this.stream;\n\n      var subrs = [],\n        charstrings = [];\n      var privateData = Object.create(null);\n      privateData[\"lenIV\"] = 4;\n      var program = {\n        subrs: [],\n        charstrings: [],\n        properties: {\n          privateData,\n        },\n      };\n      var token, length, data, lenIV, encoded;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"CharStrings\":\n            // The number immediately following CharStrings must be greater or\n            // equal to the number of CharStrings.\n            this.getToken();\n            this.getToken(); // read in 'dict'\n            this.getToken(); // read in 'dup'\n            this.getToken(); // read in 'begin'\n            while (true) {\n              token = this.getToken();\n              if (token === null || token === \"end\") {\n                break;\n              }\n\n              if (token !== \"/\") {\n                continue;\n              }\n              var glyph = this.getToken();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData[\"lenIV\"];\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'ND' or '|-'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'def'\n              }\n              charstrings.push({\n                glyph,\n                encoded,\n              });\n            }\n            break;\n          case \"Subrs\":\n            this.readInt(); // num\n            this.getToken(); // read in 'array'\n            while (this.getToken() === \"dup\") {\n              var index = this.readInt();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData[\"lenIV\"];\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'NP' or '|'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'put'\n              }\n              subrs[index] = encoded;\n            }\n            break;\n          case \"BlueValues\":\n          case \"OtherBlues\":\n          case \"FamilyBlues\":\n          case \"FamilyOtherBlues\":\n            var blueArray = this.readNumberArray();\n            // *Blue* values may contain invalid data: disables reading of\n            // those values when hinting is disabled.\n            if (\n              blueArray.length > 0 &&\n              blueArray.length % 2 === 0 &&\n              HINTING_ENABLED\n            ) {\n              program.properties.privateData[token] = blueArray;\n            }\n            break;\n          case \"StemSnapH\":\n          case \"StemSnapV\":\n            program.properties.privateData[token] = this.readNumberArray();\n            break;\n          case \"StdHW\":\n          case \"StdVW\":\n            program.properties.privateData[token] = this.readNumberArray()[0];\n            break;\n          case \"BlueShift\":\n          case \"lenIV\":\n          case \"BlueFuzz\":\n          case \"BlueScale\":\n          case \"LanguageGroup\":\n          case \"ExpansionFactor\":\n            program.properties.privateData[token] = this.readNumber();\n            break;\n          case \"ForceBold\":\n            program.properties.privateData[token] = this.readBoolean();\n            break;\n        }\n      }\n\n      for (var i = 0; i < charstrings.length; i++) {\n        glyph = charstrings[i].glyph;\n        encoded = charstrings[i].encoded;\n        var charString = new Type1CharString();\n        var error = charString.convert(\n          encoded,\n          subrs,\n          this.seacAnalysisEnabled\n        );\n        var output = charString.output;\n        if (error) {\n          // It seems when FreeType encounters an error while evaluating a glyph\n          // that it completely ignores the glyph so we'll mimic that behaviour\n          // here and put an endchar to make the validator happy.\n          output = [14];\n        }\n        const charStringObject = {\n          glyphName: glyph,\n          charstring: output,\n          width: charString.width,\n          lsb: charString.lsb,\n          seac: charString.seac,\n        };\n        if (glyph === \".notdef\") {\n          // Make sure .notdef is at index zero (issue #11477).\n          program.charstrings.unshift(charStringObject);\n        } else {\n          program.charstrings.push(charStringObject);\n        }\n\n        // Attempt to replace missing widths, from the font dictionary /Widths\n        // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n        if (properties.builtInEncoding) {\n          const index = properties.builtInEncoding.indexOf(glyph);\n          if (\n            index > -1 &&\n            properties.widths[index] === undefined &&\n            index >= properties.firstChar &&\n            index <= properties.lastChar\n          ) {\n            properties.widths[index] = charString.width;\n          }\n        }\n      }\n\n      return program;\n    },\n\n    extractFontHeader: function Type1Parser_extractFontHeader(properties) {\n      var token;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"FontMatrix\":\n            var matrix = this.readNumberArray();\n            properties.fontMatrix = matrix;\n            break;\n          case \"Encoding\":\n            var encodingArg = this.getToken();\n            var encoding;\n            if (!/^\\d+$/.test(encodingArg)) {\n              // encoding name is specified\n              encoding = getEncoding(encodingArg);\n            } else {\n              encoding = [];\n              var size = parseInt(encodingArg, 10) | 0;\n              this.getToken(); // read in 'array'\n\n              for (var j = 0; j < size; j++) {\n                token = this.getToken();\n                // skipping till first dup or def (e.g. ignoring for statement)\n                while (token !== \"dup\" && token !== \"def\") {\n                  token = this.getToken();\n                  if (token === null) {\n                    return; // invalid header\n                  }\n                }\n                if (token === \"def\") {\n                  break; // read all array data\n                }\n                var index = this.readInt();\n                this.getToken(); // read in '/'\n                var glyph = this.getToken();\n                encoding[index] = glyph;\n                this.getToken(); // read the in 'put'\n              }\n            }\n            properties.builtInEncoding = encoding;\n            break;\n          case \"FontBBox\":\n            var fontBBox = this.readNumberArray();\n            // adjusting ascent/descent\n            properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n            properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n            properties.ascentScaled = true;\n            break;\n        }\n      }\n    },\n  };\n\n  return Type1Parser;\n})();\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { isStream } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nvar ShadingType = {\n  FUNCTION_BASED: 1,\n  AXIAL: 2,\n  RADIAL: 3,\n  FREE_FORM_MESH: 4,\n  LATTICE_FORM_MESH: 5,\n  COONS_PATCH_MESH: 6,\n  TENSOR_PATCH_MESH: 7,\n};\n\nvar Pattern = (function PatternClosure() {\n  // Constructor should define this.getPattern\n  function Pattern() {\n    unreachable(\"should not call Pattern constructor\");\n  }\n\n  Pattern.prototype = {\n    // Input: current Canvas context\n    // Output: the appropriate fillStyle or strokeStyle\n    getPattern: function Pattern_getPattern(ctx) {\n      unreachable(`Should not call Pattern.getStyle: ${ctx}`);\n    },\n  };\n\n  Pattern.parseShading = function(\n    shading,\n    matrix,\n    xref,\n    res,\n    handler,\n    pdfFunctionFactory\n  ) {\n    var dict = isStream(shading) ? shading.dict : shading;\n    var type = dict.get(\"ShadingType\");\n\n    try {\n      switch (type) {\n        case ShadingType.AXIAL:\n        case ShadingType.RADIAL:\n          // Both radial and axial shadings are handled by RadialAxial shading.\n          return new Shadings.RadialAxial(\n            dict,\n            matrix,\n            xref,\n            res,\n            pdfFunctionFactory\n          );\n        case ShadingType.FREE_FORM_MESH:\n        case ShadingType.LATTICE_FORM_MESH:\n        case ShadingType.COONS_PATCH_MESH:\n        case ShadingType.TENSOR_PATCH_MESH:\n          return new Shadings.Mesh(\n            shading,\n            matrix,\n            xref,\n            res,\n            pdfFunctionFactory\n          );\n        default:\n          throw new FormatError(\"Unsupported ShadingType: \" + type);\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.shadingPattern,\n      });\n      warn(ex);\n      return new Shadings.Dummy();\n    }\n  };\n  return Pattern;\n})();\n\nvar Shadings = {};\n\n// A small number to offset the first/last color stops so we can insert ones to\n// support extend. Number.MIN_VALUE is too small and breaks the extend.\nShadings.SMALL_NUMBER = 1e-6;\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes\nShadings.RadialAxial = (function RadialAxialClosure() {\n  function RadialAxial(dict, matrix, xref, res, pdfFunctionFactory) {\n    this.matrix = matrix;\n    this.coordsArr = dict.getArray(\"Coords\");\n    this.shadingType = dict.get(\"ShadingType\");\n    this.type = \"Pattern\";\n    var cs = dict.get(\"ColorSpace\", \"CS\");\n    cs = ColorSpace.parse(cs, xref, res, pdfFunctionFactory);\n    this.cs = cs;\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n\n    var t0 = 0.0,\n      t1 = 1.0;\n    if (dict.has(\"Domain\")) {\n      var domainArr = dict.getArray(\"Domain\");\n      t0 = domainArr[0];\n      t1 = domainArr[1];\n    }\n\n    var extendStart = false,\n      extendEnd = false;\n    if (dict.has(\"Extend\")) {\n      var extendArr = dict.getArray(\"Extend\");\n      extendStart = extendArr[0];\n      extendEnd = extendArr[1];\n    }\n\n    if (\n      this.shadingType === ShadingType.RADIAL &&\n      (!extendStart || !extendEnd)\n    ) {\n      // Radial gradient only currently works if either circle is fully within\n      // the other circle.\n      var x1 = this.coordsArr[0];\n      var y1 = this.coordsArr[1];\n      var r1 = this.coordsArr[2];\n      var x2 = this.coordsArr[3];\n      var y2 = this.coordsArr[4];\n      var r2 = this.coordsArr[5];\n      var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n      if (r1 <= r2 + distance && r2 <= r1 + distance) {\n        warn(\"Unsupported radial gradient.\");\n      }\n    }\n\n    this.extendStart = extendStart;\n    this.extendEnd = extendEnd;\n\n    var fnObj = dict.get(\"Function\");\n    var fn = pdfFunctionFactory.createFromArray(fnObj);\n\n    // 10 samples seems good enough for now, but probably won't work\n    // if there are sharp color changes. Ideally, we would implement\n    // the spec faithfully and add lossless optimizations.\n    const NUMBER_OF_SAMPLES = 10;\n    const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n    var colorStops = (this.colorStops = []);\n\n    // Protect against bad domains.\n    if (t0 >= t1 || step <= 0) {\n      // Acrobat doesn't seem to handle these cases so we'll ignore for\n      // now.\n      info(\"Bad shading domain.\");\n      return;\n    }\n\n    var color = new Float32Array(cs.numComps),\n      ratio = new Float32Array(1);\n    var rgbColor;\n    for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n      ratio[0] = t0 + i * step;\n      fn(ratio, 0, color, 0);\n      rgbColor = cs.getRgb(color, 0);\n      var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n      colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n    }\n\n    var background = \"transparent\";\n    if (dict.has(\"Background\")) {\n      rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n      background = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n    }\n\n    if (!extendStart) {\n      // Insert a color stop at the front and offset the first real color stop\n      // so it doesn't conflict with the one we insert.\n      colorStops.unshift([0, background]);\n      colorStops[1][0] += Shadings.SMALL_NUMBER;\n    }\n    if (!extendEnd) {\n      // Same idea as above in extendStart but for the end.\n      colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;\n      colorStops.push([1, background]);\n    }\n\n    this.colorStops = colorStops;\n  }\n\n  RadialAxial.prototype = {\n    getIR: function RadialAxial_getIR() {\n      var coordsArr = this.coordsArr;\n      var shadingType = this.shadingType;\n      var type, p0, p1, r0, r1;\n      if (shadingType === ShadingType.AXIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[2], coordsArr[3]];\n        r0 = null;\n        r1 = null;\n        type = \"axial\";\n      } else if (shadingType === ShadingType.RADIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[3], coordsArr[4]];\n        r0 = coordsArr[2];\n        r1 = coordsArr[5];\n        type = \"radial\";\n      } else {\n        unreachable(`getPattern type unknown: ${shadingType}`);\n      }\n\n      var matrix = this.matrix;\n      if (matrix) {\n        p0 = Util.applyTransform(p0, matrix);\n        p1 = Util.applyTransform(p1, matrix);\n        if (shadingType === ShadingType.RADIAL) {\n          var scale = Util.singularValueDecompose2dScale(matrix);\n          r0 *= scale[0];\n          r1 *= scale[1];\n        }\n      }\n\n      return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n    },\n  };\n\n  return RadialAxial;\n})();\n\n// All mesh shading. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nShadings.Mesh = (function MeshClosure() {\n  function MeshStreamReader(stream, context) {\n    this.stream = stream;\n    this.context = context;\n    this.buffer = 0;\n    this.bufferLength = 0;\n\n    var numComps = context.numComps;\n    this.tmpCompsBuf = new Float32Array(numComps);\n    var csNumComps = context.colorSpace.numComps;\n    this.tmpCsCompsBuf = context.colorFn\n      ? new Float32Array(csNumComps)\n      : this.tmpCompsBuf;\n  }\n  MeshStreamReader.prototype = {\n    get hasData() {\n      if (this.stream.end) {\n        return this.stream.pos < this.stream.end;\n      }\n      if (this.bufferLength > 0) {\n        return true;\n      }\n      var nextByte = this.stream.getByte();\n      if (nextByte < 0) {\n        return false;\n      }\n      this.buffer = nextByte;\n      this.bufferLength = 8;\n      return true;\n    },\n    readBits: function MeshStreamReader_readBits(n) {\n      var buffer = this.buffer;\n      var bufferLength = this.bufferLength;\n      if (n === 32) {\n        if (bufferLength === 0) {\n          return (\n            ((this.stream.getByte() << 24) |\n              (this.stream.getByte() << 16) |\n              (this.stream.getByte() << 8) |\n              this.stream.getByte()) >>>\n            0\n          );\n        }\n        buffer =\n          (buffer << 24) |\n          (this.stream.getByte() << 16) |\n          (this.stream.getByte() << 8) |\n          this.stream.getByte();\n        var nextByte = this.stream.getByte();\n        this.buffer = nextByte & ((1 << bufferLength) - 1);\n        return (\n          ((buffer << (8 - bufferLength)) |\n            ((nextByte & 0xff) >> bufferLength)) >>>\n          0\n        );\n      }\n      if (n === 8 && bufferLength === 0) {\n        return this.stream.getByte();\n      }\n      while (bufferLength < n) {\n        buffer = (buffer << 8) | this.stream.getByte();\n        bufferLength += 8;\n      }\n      bufferLength -= n;\n      this.bufferLength = bufferLength;\n      this.buffer = buffer & ((1 << bufferLength) - 1);\n      return buffer >> bufferLength;\n    },\n    align: function MeshStreamReader_align() {\n      this.buffer = 0;\n      this.bufferLength = 0;\n    },\n    readFlag: function MeshStreamReader_readFlag() {\n      return this.readBits(this.context.bitsPerFlag);\n    },\n    readCoordinate: function MeshStreamReader_readCoordinate() {\n      var bitsPerCoordinate = this.context.bitsPerCoordinate;\n      var xi = this.readBits(bitsPerCoordinate);\n      var yi = this.readBits(bitsPerCoordinate);\n      var decode = this.context.decode;\n      var scale =\n        bitsPerCoordinate < 32\n          ? 1 / ((1 << bitsPerCoordinate) - 1)\n          : 2.3283064365386963e-10; // 2 ^ -32\n      return [\n        xi * scale * (decode[1] - decode[0]) + decode[0],\n        yi * scale * (decode[3] - decode[2]) + decode[2],\n      ];\n    },\n    readComponents: function MeshStreamReader_readComponents() {\n      var numComps = this.context.numComps;\n      var bitsPerComponent = this.context.bitsPerComponent;\n      var scale =\n        bitsPerComponent < 32\n          ? 1 / ((1 << bitsPerComponent) - 1)\n          : 2.3283064365386963e-10; // 2 ^ -32\n      var decode = this.context.decode;\n      var components = this.tmpCompsBuf;\n      for (var i = 0, j = 4; i < numComps; i++, j += 2) {\n        var ci = this.readBits(bitsPerComponent);\n        components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n      }\n      var color = this.tmpCsCompsBuf;\n      if (this.context.colorFn) {\n        this.context.colorFn(components, 0, color, 0);\n      }\n      return this.context.colorSpace.getRgb(color, 0);\n    },\n  };\n\n  function decodeType4Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var operators = [];\n    var ps = []; // not maintaining cs since that will match ps\n    var verticesLeft = 0; // assuming we have all data to start a new triangle\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      if (verticesLeft === 0) {\n        // ignoring flags if we started a triangle\n        if (!(0 <= f && f <= 2)) {\n          throw new FormatError(\"Unknown type4 flag\");\n        }\n        switch (f) {\n          case 0:\n            verticesLeft = 3;\n            break;\n          case 1:\n            ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n          case 2:\n            ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n        }\n        operators.push(f);\n      }\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n      verticesLeft--;\n\n      reader.align();\n    }\n    mesh.figures.push({\n      type: \"triangles\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n    });\n  }\n\n  function decodeType5Shading(mesh, reader, verticesPerRow) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = []; // not maintaining cs since that will match ps\n    while (reader.hasData) {\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n    }\n    mesh.figures.push({\n      type: \"lattice\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n      verticesPerRow,\n    });\n  }\n\n  var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n  var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n\n  var TRIANGLE_DENSITY = 20; // count of triangles per entire mesh bounds\n\n  var getB = (function getBClosure() {\n    function buildB(count) {\n      var lut = [];\n      for (var i = 0; i <= count; i++) {\n        var t = i / count,\n          t_ = 1 - t;\n        lut.push(\n          new Float32Array([\n            t_ * t_ * t_,\n            3 * t * t_ * t_,\n            3 * t * t * t_,\n            t * t * t,\n          ])\n        );\n      }\n      return lut;\n    }\n    var cache = [];\n    return function getB(count) {\n      if (!cache[count]) {\n        cache[count] = buildB(count);\n      }\n      return cache[count];\n    };\n  })();\n\n  function buildFigureFromPatch(mesh, index) {\n    var figure = mesh.figures[index];\n    assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n    var coords = mesh.coords,\n      colors = mesh.colors;\n    var pi = figure.coords;\n    var ci = figure.colors;\n\n    var figureMinX = Math.min(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    var figureMinY = Math.min(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    var figureMaxX = Math.max(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    var figureMaxY = Math.max(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    var splitXBy = Math.ceil(\n      ((figureMaxX - figureMinX) * TRIANGLE_DENSITY) /\n        (mesh.bounds[2] - mesh.bounds[0])\n    );\n    splitXBy = Math.max(\n      MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n    );\n    var splitYBy = Math.ceil(\n      ((figureMaxY - figureMinY) * TRIANGLE_DENSITY) /\n        (mesh.bounds[3] - mesh.bounds[1])\n    );\n    splitYBy = Math.max(\n      MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n    );\n\n    var verticesPerRow = splitXBy + 1;\n    var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var k = 0;\n    var cl = new Uint8Array(3),\n      cr = new Uint8Array(3);\n    var c0 = colors[ci[0]],\n      c1 = colors[ci[1]],\n      c2 = colors[ci[2]],\n      c3 = colors[ci[3]];\n    var bRow = getB(splitYBy),\n      bCol = getB(splitXBy);\n    for (var row = 0; row <= splitYBy; row++) {\n      cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n      cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n      cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n      cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n      cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n      cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n      for (var col = 0; col <= splitXBy; col++, k++) {\n        if (\n          (row === 0 || row === splitYBy) &&\n          (col === 0 || col === splitXBy)\n        ) {\n          continue;\n        }\n        var x = 0,\n          y = 0;\n        var q = 0;\n        for (var i = 0; i <= 3; i++) {\n          for (var j = 0; j <= 3; j++, q++) {\n            var m = bRow[row][i] * bCol[col][j];\n            x += coords[pi[q]][0] * m;\n            y += coords[pi[q]][1] * m;\n          }\n        }\n        figureCoords[k] = coords.length;\n        coords.push([x, y]);\n        figureColors[k] = colors.length;\n        var newColor = new Uint8Array(3);\n        newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n        newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n        newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n        colors.push(newColor);\n      }\n    }\n    figureCoords[0] = pi[0];\n    figureColors[0] = ci[0];\n    figureCoords[splitXBy] = pi[3];\n    figureColors[splitXBy] = ci[1];\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\n    figureColors[verticesPerRow * splitYBy] = ci[2];\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n    mesh.figures[index] = {\n      type: \"lattice\",\n      coords: figureCoords,\n      colors: figureColors,\n      verticesPerRow,\n    };\n  }\n\n  function decodeType6Shading(mesh, reader) {\n    // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    var cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type6 flag\");\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 7;\n          ps[ 4] = pi + 1; /* calculated below              */ ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4; ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2; /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1; ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];  ps[13] = pi + 0; ps[14] = pi + 1;   ps[15] = pi + 2;\n          ps[ 8] = ps[7];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2;   /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7;   ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;   ps[14] = pi + 1; ps[15] = pi + 2;\n          ps[ 8] = ps[1];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = ps[2];  /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      // set p11, p12, p21, p22\n      ps[5] = coords.length;\n      coords.push([\n        (-4 * coords[ps[0]][0] -\n          coords[ps[15]][0] +\n          6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n          9,\n        (-4 * coords[ps[0]][1] -\n          coords[ps[15]][1] +\n          6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n          9,\n      ]);\n      ps[6] = coords.length;\n      coords.push([\n        (-4 * coords[ps[3]][0] -\n          coords[ps[12]][0] +\n          6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n          9,\n        (-4 * coords[ps[3]][1] -\n          coords[ps[12]][1] +\n          6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n          9,\n      ]);\n      ps[9] = coords.length;\n      coords.push([\n        (-4 * coords[ps[12]][0] -\n          coords[ps[3]][0] +\n          6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n          9,\n        (-4 * coords[ps[12]][1] -\n          coords[ps[3]][1] +\n          6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n          9,\n      ]);\n      ps[10] = coords.length;\n      coords.push([\n        (-4 * coords[ps[15]][0] -\n          coords[ps[0]][0] +\n          6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n          9,\n        (-4 * coords[ps[15]][1] -\n          coords[ps[0]][1] +\n          6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n          9,\n      ]);\n      mesh.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  function decodeType7Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    var cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type7 flag\");\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n          ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4;   ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3;   ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;   ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;   ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;  ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7; ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[1];  ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = ps[2];  ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      mesh.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  function updateBounds(mesh) {\n    var minX = mesh.coords[0][0],\n      minY = mesh.coords[0][1],\n      maxX = minX,\n      maxY = minY;\n    for (var i = 1, ii = mesh.coords.length; i < ii; i++) {\n      var x = mesh.coords[i][0],\n        y = mesh.coords[i][1];\n      minX = minX > x ? x : minX;\n      minY = minY > y ? y : minY;\n      maxX = maxX < x ? x : maxX;\n      maxY = maxY < y ? y : maxY;\n    }\n    mesh.bounds = [minX, minY, maxX, maxY];\n  }\n\n  function packData(mesh) {\n    var i, ii, j, jj;\n\n    var coords = mesh.coords;\n    var coordsPacked = new Float32Array(coords.length * 2);\n    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n      var xy = coords[i];\n      coordsPacked[j++] = xy[0];\n      coordsPacked[j++] = xy[1];\n    }\n    mesh.coords = coordsPacked;\n\n    var colors = mesh.colors;\n    var colorsPacked = new Uint8Array(colors.length * 3);\n    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n      var c = colors[i];\n      colorsPacked[j++] = c[0];\n      colorsPacked[j++] = c[1];\n      colorsPacked[j++] = c[2];\n    }\n    mesh.colors = colorsPacked;\n\n    var figures = mesh.figures;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      var figure = figures[i],\n        ps = figure.coords,\n        cs = figure.colors;\n      for (j = 0, jj = ps.length; j < jj; j++) {\n        ps[j] *= 2;\n        cs[j] *= 3;\n      }\n    }\n  }\n\n  function Mesh(stream, matrix, xref, res, pdfFunctionFactory) {\n    if (!isStream(stream)) {\n      throw new FormatError(\"Mesh data is not a stream\");\n    }\n    var dict = stream.dict;\n    this.matrix = matrix;\n    this.shadingType = dict.get(\"ShadingType\");\n    this.type = \"Pattern\";\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n    var cs = dict.get(\"ColorSpace\", \"CS\");\n    cs = ColorSpace.parse(cs, xref, res, pdfFunctionFactory);\n    this.cs = cs;\n    this.background = dict.has(\"Background\")\n      ? cs.getRgb(dict.get(\"Background\"), 0)\n      : null;\n\n    var fnObj = dict.get(\"Function\");\n    var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n    this.coords = [];\n    this.colors = [];\n    this.figures = [];\n\n    var decodeContext = {\n      bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n      bitsPerComponent: dict.get(\"BitsPerComponent\"),\n      bitsPerFlag: dict.get(\"BitsPerFlag\"),\n      decode: dict.getArray(\"Decode\"),\n      colorFn: fn,\n      colorSpace: cs,\n      numComps: fn ? 1 : cs.numComps,\n    };\n    var reader = new MeshStreamReader(stream, decodeContext);\n\n    var patchMesh = false;\n    switch (this.shadingType) {\n      case ShadingType.FREE_FORM_MESH:\n        decodeType4Shading(this, reader);\n        break;\n      case ShadingType.LATTICE_FORM_MESH:\n        var verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n        if (verticesPerRow < 2) {\n          throw new FormatError(\"Invalid VerticesPerRow\");\n        }\n        decodeType5Shading(this, reader, verticesPerRow);\n        break;\n      case ShadingType.COONS_PATCH_MESH:\n        decodeType6Shading(this, reader);\n        patchMesh = true;\n        break;\n      case ShadingType.TENSOR_PATCH_MESH:\n        decodeType7Shading(this, reader);\n        patchMesh = true;\n        break;\n      default:\n        unreachable(\"Unsupported mesh type.\");\n        break;\n    }\n\n    if (patchMesh) {\n      // dirty bounds calculation for determining, how dense shall be triangles\n      updateBounds(this);\n      for (var i = 0, ii = this.figures.length; i < ii; i++) {\n        buildFigureFromPatch(this, i);\n      }\n    }\n    // calculate bounds\n    updateBounds(this);\n\n    packData(this);\n  }\n\n  Mesh.prototype = {\n    getIR: function Mesh_getIR() {\n      return [\n        \"Mesh\",\n        this.shadingType,\n        this.coords,\n        this.colors,\n        this.figures,\n        this.bounds,\n        this.matrix,\n        this.bbox,\n        this.background,\n      ];\n    },\n  };\n\n  return Mesh;\n})();\n\nShadings.Dummy = (function DummyClosure() {\n  function Dummy() {\n    this.type = \"Pattern\";\n  }\n\n  Dummy.prototype = {\n    getIR: function Dummy_getIR() {\n      return [\"Dummy\"];\n    },\n  };\n  return Dummy;\n})();\n\nfunction getTilingPatternIR(operatorList, dict, args) {\n  const matrix = dict.getArray(\"Matrix\");\n  const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n  const xstep = dict.get(\"XStep\");\n  const ystep = dict.get(\"YStep\");\n  const paintType = dict.get(\"PaintType\");\n  const tilingType = dict.get(\"TilingType\");\n\n  // Ensure that the pattern has a non-zero width and height, to prevent errors\n  // in `pattern_helper.js` (fixes issue8330.pdf).\n  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n    throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n  }\n\n  return [\n    \"TilingPattern\",\n    args,\n    operatorList,\n    matrix,\n    bbox,\n    xstep,\n    ystep,\n    paintType,\n    tilingType,\n  ];\n}\n\nexport { Pattern, getTilingPatternIR };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nvar baseTypes = [\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n  \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n  \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nvar arabicTypes = [\n  \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n  \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n  \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n  return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n  return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n  for (var j = start, jj = arr.length; j < jj; ++j) {\n    if (arr[j] !== value) {\n      return j;\n    }\n  }\n  return j;\n}\n\nfunction setValues(arr, start, end, value) {\n  for (var j = start; j < end; ++j) {\n    arr[j] = value;\n  }\n}\n\nfunction reverseValues(arr, start, end) {\n  for (var i = start, j = end - 1; i < j; ++i, --j) {\n    var temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n  }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n  let dir = \"ltr\";\n  if (vertical) {\n    dir = \"ttb\";\n  } else if (!isLTR) {\n    dir = \"rtl\";\n  }\n  return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nvar chars = [];\nvar types = [];\n\nfunction bidi(str, startLevel, vertical) {\n  var isLTR = true;\n  var strLength = str.length;\n  if (strLength === 0 || vertical) {\n    return createBidiText(str, isLTR, vertical);\n  }\n\n  // Get types and fill arrays\n  chars.length = strLength;\n  types.length = strLength;\n  var numBidi = 0;\n\n  var i, ii;\n  for (i = 0; i < strLength; ++i) {\n    chars[i] = str.charAt(i);\n\n    var charCode = str.charCodeAt(i);\n    var charType = \"L\";\n    if (charCode <= 0x00ff) {\n      charType = baseTypes[charCode];\n    } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n      charType = \"R\";\n    } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n      charType = arabicTypes[charCode & 0xff];\n      if (!charType) {\n        warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n      }\n    } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n      charType = \"AL\";\n    }\n    if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n      numBidi++;\n    }\n    types[i] = charType;\n  }\n\n  // Detect the bidi method\n  // - If there are no rtl characters then no bidi needed\n  // - If less than 30% chars are rtl then string is primarily ltr\n  // - If more than 30% chars are rtl then string is primarily rtl\n  if (numBidi === 0) {\n    isLTR = true;\n    return createBidiText(str, isLTR);\n  }\n\n  if (startLevel === -1) {\n    if (numBidi / strLength < 0.3) {\n      isLTR = true;\n      startLevel = 0;\n    } else {\n      isLTR = false;\n      startLevel = 1;\n    }\n  }\n\n  var levels = [];\n  for (i = 0; i < strLength; ++i) {\n    levels[i] = startLevel;\n  }\n\n  /*\n   X1-X10: skip most of this, since we are NOT doing the embeddings.\n   */\n  var e = isOdd(startLevel) ? \"R\" : \"L\";\n  var sor = e;\n  var eor = sor;\n\n  /*\n   W1. Examine each non-spacing mark (NSM) in the level run, and change the\n   type of the NSM to the type of the previous character. If the NSM is at the\n   start of the level run, it will get the type of sor.\n   */\n  var lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"NSM\") {\n      types[i] = lastType;\n    } else {\n      lastType = types[i];\n    }\n  }\n\n  /*\n   W2. Search backwards from each instance of a European number until the\n   first strong type (R, L, AL, or sor) is found.  If an AL is found, change\n   the type of the European number to Arabic number.\n   */\n  lastType = sor;\n  var t;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   W3. Change all ALs to R.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"AL\") {\n      types[i] = \"R\";\n    }\n  }\n\n  /*\n   W4. A single European separator between two European numbers changes to a\n   European number. A single common separator between two numbers of the same\n   type changes to that type:\n   */\n  for (i = 1; i < strLength - 1; ++i) {\n    if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n      types[i] = \"EN\";\n    }\n    if (\n      types[i] === \"CS\" &&\n      (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n      types[i + 1] === types[i - 1]\n    ) {\n      types[i] = types[i - 1];\n    }\n  }\n\n  /*\n   W5. A sequence of European terminators adjacent to European numbers changes\n   to all European numbers:\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"EN\") {\n      // do before\n      var j;\n      for (j = i - 1; j >= 0; --j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n      // do after\n      for (j = i + 1; j < strLength; ++j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n    }\n  }\n\n  /*\n   W6. Otherwise, separators and terminators change to Other Neutral:\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n      types[i] = \"ON\";\n    }\n  }\n\n  /*\n   W7. Search backwards from each instance of a European number until the\n   first strong type (R, L, or sor) is found. If an L is found,  then change\n   the type of the European number to L.\n   */\n  lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   N1. A sequence of neutrals takes the direction of the surrounding strong\n   text if the text on both sides has the same direction. European and Arabic\n   numbers are treated as though they were R. Start-of-level-run (sor) and\n   end-of-level-run (eor) are used at level run boundaries.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      var end = findUnequal(types, i + 1, \"ON\");\n      var before = sor;\n      if (i > 0) {\n        before = types[i - 1];\n      }\n\n      var after = eor;\n      if (end + 1 < strLength) {\n        after = types[end + 1];\n      }\n      if (before !== \"L\") {\n        before = \"R\";\n      }\n      if (after !== \"L\") {\n        after = \"R\";\n      }\n      if (before === after) {\n        setValues(types, i, end, before);\n      }\n      i = end - 1; // reset to end (-1 so next iteration is ok)\n    }\n  }\n\n  /*\n   N2. Any remaining neutrals take the embedding direction.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      types[i] = e;\n    }\n  }\n\n  /*\n   I1. For all characters with an even (left-to-right) embedding direction,\n   those of type R go up one level and those of type AN or EN go up two\n   levels.\n   I2. For all characters with an odd (right-to-left) embedding direction,\n   those of type L, EN or AN go up one level.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (isEven(levels[i])) {\n      if (t === \"R\") {\n        levels[i] += 1;\n      } else if (t === \"AN\" || t === \"EN\") {\n        levels[i] += 2;\n      }\n    } else {\n      // isOdd\n      if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n        levels[i] += 1;\n      }\n    }\n  }\n\n  /*\n   L1. On each line, reset the embedding level of the following characters to\n   the paragraph embedding level:\n\n   segment separators,\n   paragraph separators,\n   any sequence of whitespace characters preceding a segment separator or\n   paragraph separator, and any sequence of white space characters at the end\n   of the line.\n   */\n\n  // don't bother as text is only single line\n\n  /*\n   L2. From the highest level found in the text to the lowest odd level on\n   each line, reverse any contiguous sequence of characters that are at that\n   level or higher.\n   */\n\n  // find highest level & lowest odd level\n  var highestLevel = -1;\n  var lowestOddLevel = 99;\n  var level;\n  for (i = 0, ii = levels.length; i < ii; ++i) {\n    level = levels[i];\n    if (highestLevel < level) {\n      highestLevel = level;\n    }\n    if (lowestOddLevel > level && isOdd(level)) {\n      lowestOddLevel = level;\n    }\n  }\n\n  // now reverse between those limits\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\n    // find segments to reverse\n    var start = -1;\n    for (i = 0, ii = levels.length; i < ii; ++i) {\n      if (levels[i] < level) {\n        if (start >= 0) {\n          reverseValues(chars, start, i);\n          start = -1;\n        }\n      } else if (start < 0) {\n        start = i;\n      }\n    }\n    if (start >= 0) {\n      reverseValues(chars, start, levels.length);\n    }\n  }\n\n  /*\n   L3. Combining marks applied to a right-to-left base character will at this\n   point precede their base character. If the rendering engine expects them to\n   follow the base characters in the final display process, then the ordering\n   of the marks and the base character must be reversed.\n   */\n\n  // don't bother for now\n\n  /*\n   L4. A character that possesses the mirrored property as specified by\n   Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n   directionality of that character is R.\n   */\n\n  // don't mirror as characters are already mirrored in the pdf\n\n  // Finally, return string\n  for (i = 0, ii = chars.length; i < ii; ++i) {\n    var ch = chars[i];\n    if (ch === \"<\" || ch === \">\") {\n      chars[i] = \"\";\n    }\n  }\n  return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nvar getMetrics = getLookupTableFactory(function(t) {\n  t[\"Courier\"] = 600;\n  t[\"Courier-Bold\"] = 600;\n  t[\"Courier-BoldOblique\"] = 600;\n  t[\"Courier-Oblique\"] = 600;\n  t[\"Helvetica\"] = getLookupTableFactory(function(t) {\n    t[\"space\"] = 278;\n    t[\"exclam\"] = 278;\n    t[\"quotedbl\"] = 355;\n    t[\"numbersign\"] = 556;\n    t[\"dollar\"] = 556;\n    t[\"percent\"] = 889;\n    t[\"ampersand\"] = 667;\n    t[\"quoteright\"] = 222;\n    t[\"parenleft\"] = 333;\n    t[\"parenright\"] = 333;\n    t[\"asterisk\"] = 389;\n    t[\"plus\"] = 584;\n    t[\"comma\"] = 278;\n    t[\"hyphen\"] = 333;\n    t[\"period\"] = 278;\n    t[\"slash\"] = 278;\n    t[\"zero\"] = 556;\n    t[\"one\"] = 556;\n    t[\"two\"] = 556;\n    t[\"three\"] = 556;\n    t[\"four\"] = 556;\n    t[\"five\"] = 556;\n    t[\"six\"] = 556;\n    t[\"seven\"] = 556;\n    t[\"eight\"] = 556;\n    t[\"nine\"] = 556;\n    t[\"colon\"] = 278;\n    t[\"semicolon\"] = 278;\n    t[\"less\"] = 584;\n    t[\"equal\"] = 584;\n    t[\"greater\"] = 584;\n    t[\"question\"] = 556;\n    t[\"at\"] = 1015;\n    t[\"A\"] = 667;\n    t[\"B\"] = 667;\n    t[\"C\"] = 722;\n    t[\"D\"] = 722;\n    t[\"E\"] = 667;\n    t[\"F\"] = 611;\n    t[\"G\"] = 778;\n    t[\"H\"] = 722;\n    t[\"I\"] = 278;\n    t[\"J\"] = 500;\n    t[\"K\"] = 667;\n    t[\"L\"] = 556;\n    t[\"M\"] = 833;\n    t[\"N\"] = 722;\n    t[\"O\"] = 778;\n    t[\"P\"] = 667;\n    t[\"Q\"] = 778;\n    t[\"R\"] = 722;\n    t[\"S\"] = 667;\n    t[\"T\"] = 611;\n    t[\"U\"] = 722;\n    t[\"V\"] = 667;\n    t[\"W\"] = 944;\n    t[\"X\"] = 667;\n    t[\"Y\"] = 667;\n    t[\"Z\"] = 611;\n    t[\"bracketleft\"] = 278;\n    t[\"backslash\"] = 278;\n    t[\"bracketright\"] = 278;\n    t[\"asciicircum\"] = 469;\n    t[\"underscore\"] = 556;\n    t[\"quoteleft\"] = 222;\n    t[\"a\"] = 556;\n    t[\"b\"] = 556;\n    t[\"c\"] = 500;\n    t[\"d\"] = 556;\n    t[\"e\"] = 556;\n    t[\"f\"] = 278;\n    t[\"g\"] = 556;\n    t[\"h\"] = 556;\n    t[\"i\"] = 222;\n    t[\"j\"] = 222;\n    t[\"k\"] = 500;\n    t[\"l\"] = 222;\n    t[\"m\"] = 833;\n    t[\"n\"] = 556;\n    t[\"o\"] = 556;\n    t[\"p\"] = 556;\n    t[\"q\"] = 556;\n    t[\"r\"] = 333;\n    t[\"s\"] = 500;\n    t[\"t\"] = 278;\n    t[\"u\"] = 556;\n    t[\"v\"] = 500;\n    t[\"w\"] = 722;\n    t[\"x\"] = 500;\n    t[\"y\"] = 500;\n    t[\"z\"] = 500;\n    t[\"braceleft\"] = 334;\n    t[\"bar\"] = 260;\n    t[\"braceright\"] = 334;\n    t[\"asciitilde\"] = 584;\n    t[\"exclamdown\"] = 333;\n    t[\"cent\"] = 556;\n    t[\"sterling\"] = 556;\n    t[\"fraction\"] = 167;\n    t[\"yen\"] = 556;\n    t[\"florin\"] = 556;\n    t[\"section\"] = 556;\n    t[\"currency\"] = 556;\n    t[\"quotesingle\"] = 191;\n    t[\"quotedblleft\"] = 333;\n    t[\"guillemotleft\"] = 556;\n    t[\"guilsinglleft\"] = 333;\n    t[\"guilsinglright\"] = 333;\n    t[\"fi\"] = 500;\n    t[\"fl\"] = 500;\n    t[\"endash\"] = 556;\n    t[\"dagger\"] = 556;\n    t[\"daggerdbl\"] = 556;\n    t[\"periodcentered\"] = 278;\n    t[\"paragraph\"] = 537;\n    t[\"bullet\"] = 350;\n    t[\"quotesinglbase\"] = 222;\n    t[\"quotedblbase\"] = 333;\n    t[\"quotedblright\"] = 333;\n    t[\"guillemotright\"] = 556;\n    t[\"ellipsis\"] = 1000;\n    t[\"perthousand\"] = 1000;\n    t[\"questiondown\"] = 611;\n    t[\"grave\"] = 333;\n    t[\"acute\"] = 333;\n    t[\"circumflex\"] = 333;\n    t[\"tilde\"] = 333;\n    t[\"macron\"] = 333;\n    t[\"breve\"] = 333;\n    t[\"dotaccent\"] = 333;\n    t[\"dieresis\"] = 333;\n    t[\"ring\"] = 333;\n    t[\"cedilla\"] = 333;\n    t[\"hungarumlaut\"] = 333;\n    t[\"ogonek\"] = 333;\n    t[\"caron\"] = 333;\n    t[\"emdash\"] = 1000;\n    t[\"AE\"] = 1000;\n    t[\"ordfeminine\"] = 370;\n    t[\"Lslash\"] = 556;\n    t[\"Oslash\"] = 778;\n    t[\"OE\"] = 1000;\n    t[\"ordmasculine\"] = 365;\n    t[\"ae\"] = 889;\n    t[\"dotlessi\"] = 278;\n    t[\"lslash\"] = 222;\n    t[\"oslash\"] = 611;\n    t[\"oe\"] = 944;\n    t[\"germandbls\"] = 611;\n    t[\"Idieresis\"] = 278;\n    t[\"eacute\"] = 556;\n    t[\"abreve\"] = 556;\n    t[\"uhungarumlaut\"] = 556;\n    t[\"ecaron\"] = 556;\n    t[\"Ydieresis\"] = 667;\n    t[\"divide\"] = 584;\n    t[\"Yacute\"] = 667;\n    t[\"Acircumflex\"] = 667;\n    t[\"aacute\"] = 556;\n    t[\"Ucircumflex\"] = 722;\n    t[\"yacute\"] = 500;\n    t[\"scommaaccent\"] = 500;\n    t[\"ecircumflex\"] = 556;\n    t[\"Uring\"] = 722;\n    t[\"Udieresis\"] = 722;\n    t[\"aogonek\"] = 556;\n    t[\"Uacute\"] = 722;\n    t[\"uogonek\"] = 556;\n    t[\"Edieresis\"] = 667;\n    t[\"Dcroat\"] = 722;\n    t[\"commaaccent\"] = 250;\n    t[\"copyright\"] = 737;\n    t[\"Emacron\"] = 667;\n    t[\"ccaron\"] = 500;\n    t[\"aring\"] = 556;\n    t[\"Ncommaaccent\"] = 722;\n    t[\"lacute\"] = 222;\n    t[\"agrave\"] = 556;\n    t[\"Tcommaaccent\"] = 611;\n    t[\"Cacute\"] = 722;\n    t[\"atilde\"] = 556;\n    t[\"Edotaccent\"] = 667;\n    t[\"scaron\"] = 500;\n    t[\"scedilla\"] = 500;\n    t[\"iacute\"] = 278;\n    t[\"lozenge\"] = 471;\n    t[\"Rcaron\"] = 722;\n    t[\"Gcommaaccent\"] = 778;\n    t[\"ucircumflex\"] = 556;\n    t[\"acircumflex\"] = 556;\n    t[\"Amacron\"] = 667;\n    t[\"rcaron\"] = 333;\n    t[\"ccedilla\"] = 500;\n    t[\"Zdotaccent\"] = 611;\n    t[\"Thorn\"] = 667;\n    t[\"Omacron\"] = 778;\n    t[\"Racute\"] = 722;\n    t[\"Sacute\"] = 667;\n    t[\"dcaron\"] = 643;\n    t[\"Umacron\"] = 722;\n    t[\"uring\"] = 556;\n    t[\"threesuperior\"] = 333;\n    t[\"Ograve\"] = 778;\n    t[\"Agrave\"] = 667;\n    t[\"Abreve\"] = 667;\n    t[\"multiply\"] = 584;\n    t[\"uacute\"] = 556;\n    t[\"Tcaron\"] = 611;\n    t[\"partialdiff\"] = 476;\n    t[\"ydieresis\"] = 500;\n    t[\"Nacute\"] = 722;\n    t[\"icircumflex\"] = 278;\n    t[\"Ecircumflex\"] = 667;\n    t[\"adieresis\"] = 556;\n    t[\"edieresis\"] = 556;\n    t[\"cacute\"] = 500;\n    t[\"nacute\"] = 556;\n    t[\"umacron\"] = 556;\n    t[\"Ncaron\"] = 722;\n    t[\"Iacute\"] = 278;\n    t[\"plusminus\"] = 584;\n    t[\"brokenbar\"] = 260;\n    t[\"registered\"] = 737;\n    t[\"Gbreve\"] = 778;\n    t[\"Idotaccent\"] = 278;\n    t[\"summation\"] = 600;\n    t[\"Egrave\"] = 667;\n    t[\"racute\"] = 333;\n    t[\"omacron\"] = 556;\n    t[\"Zacute\"] = 611;\n    t[\"Zcaron\"] = 611;\n    t[\"greaterequal\"] = 549;\n    t[\"Eth\"] = 722;\n    t[\"Ccedilla\"] = 722;\n    t[\"lcommaaccent\"] = 222;\n    t[\"tcaron\"] = 317;\n    t[\"eogonek\"] = 556;\n    t[\"Uogonek\"] = 722;\n    t[\"Aacute\"] = 667;\n    t[\"Adieresis\"] = 667;\n    t[\"egrave\"] = 556;\n    t[\"zacute\"] = 500;\n    t[\"iogonek\"] = 222;\n    t[\"Oacute\"] = 778;\n    t[\"oacute\"] = 556;\n    t[\"amacron\"] = 556;\n    t[\"sacute\"] = 500;\n    t[\"idieresis\"] = 278;\n    t[\"Ocircumflex\"] = 778;\n    t[\"Ugrave\"] = 722;\n    t[\"Delta\"] = 612;\n    t[\"thorn\"] = 556;\n    t[\"twosuperior\"] = 333;\n    t[\"Odieresis\"] = 778;\n    t[\"mu\"] = 556;\n    t[\"igrave\"] = 278;\n    t[\"ohungarumlaut\"] = 556;\n    t[\"Eogonek\"] = 667;\n    t[\"dcroat\"] = 556;\n    t[\"threequarters\"] = 834;\n    t[\"Scedilla\"] = 667;\n    t[\"lcaron\"] = 299;\n    t[\"Kcommaaccent\"] = 667;\n    t[\"Lacute\"] = 556;\n    t[\"trademark\"] = 1000;\n    t[\"edotaccent\"] = 556;\n    t[\"Igrave\"] = 278;\n    t[\"Imacron\"] = 278;\n    t[\"Lcaron\"] = 556;\n    t[\"onehalf\"] = 834;\n    t[\"lessequal\"] = 549;\n    t[\"ocircumflex\"] = 556;\n    t[\"ntilde\"] = 556;\n    t[\"Uhungarumlaut\"] = 722;\n    t[\"Eacute\"] = 667;\n    t[\"emacron\"] = 556;\n    t[\"gbreve\"] = 556;\n    t[\"onequarter\"] = 834;\n    t[\"Scaron\"] = 667;\n    t[\"Scommaaccent\"] = 667;\n    t[\"Ohungarumlaut\"] = 778;\n    t[\"degree\"] = 400;\n    t[\"ograve\"] = 556;\n    t[\"Ccaron\"] = 722;\n    t[\"ugrave\"] = 556;\n    t[\"radical\"] = 453;\n    t[\"Dcaron\"] = 722;\n    t[\"rcommaaccent\"] = 333;\n    t[\"Ntilde\"] = 722;\n    t[\"otilde\"] = 556;\n    t[\"Rcommaaccent\"] = 722;\n    t[\"Lcommaaccent\"] = 556;\n    t[\"Atilde\"] = 667;\n    t[\"Aogonek\"] = 667;\n    t[\"Aring\"] = 667;\n    t[\"Otilde\"] = 778;\n    t[\"zdotaccent\"] = 500;\n    t[\"Ecaron\"] = 667;\n    t[\"Iogonek\"] = 278;\n    t[\"kcommaaccent\"] = 500;\n    t[\"minus\"] = 584;\n    t[\"Icircumflex\"] = 278;\n    t[\"ncaron\"] = 556;\n    t[\"tcommaaccent\"] = 278;\n    t[\"logicalnot\"] = 584;\n    t[\"odieresis\"] = 556;\n    t[\"udieresis\"] = 556;\n    t[\"notequal\"] = 549;\n    t[\"gcommaaccent\"] = 556;\n    t[\"eth\"] = 556;\n    t[\"zcaron\"] = 500;\n    t[\"ncommaaccent\"] = 556;\n    t[\"onesuperior\"] = 333;\n    t[\"imacron\"] = 278;\n    t[\"Euro\"] = 556;\n  });\n  t[\"Helvetica-Bold\"] = getLookupTableFactory(function(t) {\n    t[\"space\"] = 278;\n    t[\"exclam\"] = 333;\n    t[\"quotedbl\"] = 474;\n    t[\"numbersign\"] = 556;\n    t[\"dollar\"] = 556;\n    t[\"percent\"] = 889;\n    t[\"ampersand\"] = 722;\n    t[\"quoteright\"] = 278;\n    t[\"parenleft\"] = 333;\n    t[\"parenright\"] = 333;\n    t[\"asterisk\"] = 389;\n    t[\"plus\"] = 584;\n    t[\"comma\"] = 278;\n    t[\"hyphen\"] = 333;\n    t[\"period\"] = 278;\n    t[\"slash\"] = 278;\n    t[\"zero\"] = 556;\n    t[\"one\"] = 556;\n    t[\"two\"] = 556;\n    t[\"three\"] = 556;\n    t[\"four\"] = 556;\n    t[\"five\"] = 556;\n    t[\"six\"] = 556;\n    t[\"seven\"] = 556;\n    t[\"eight\"] = 556;\n    t[\"nine\"] = 556;\n    t[\"colon\"] = 333;\n    t[\"semicolon\"] = 333;\n    t[\"less\"] = 584;\n    t[\"equal\"] = 584;\n    t[\"greater\"] = 584;\n    t[\"question\"] = 611;\n    t[\"at\"] = 975;\n    t[\"A\"] = 722;\n    t[\"B\"] = 722;\n    t[\"C\"] = 722;\n    t[\"D\"] = 722;\n    t[\"E\"] = 667;\n    t[\"F\"] = 611;\n    t[\"G\"] = 778;\n    t[\"H\"] = 722;\n    t[\"I\"] = 278;\n    t[\"J\"] = 556;\n    t[\"K\"] = 722;\n    t[\"L\"] = 611;\n    t[\"M\"] = 833;\n    t[\"N\"] = 722;\n    t[\"O\"] = 778;\n    t[\"P\"] = 667;\n    t[\"Q\"] = 778;\n    t[\"R\"] = 722;\n    t[\"S\"] = 667;\n    t[\"T\"] = 611;\n    t[\"U\"] = 722;\n    t[\"V\"] = 667;\n    t[\"W\"] = 944;\n    t[\"X\"] = 667;\n    t[\"Y\"] = 667;\n    t[\"Z\"] = 611;\n    t[\"bracketleft\"] = 333;\n    t[\"backslash\"] = 278;\n    t[\"bracketright\"] = 333;\n    t[\"asciicircum\"] = 584;\n    t[\"underscore\"] = 556;\n    t[\"quoteleft\"] = 278;\n    t[\"a\"] = 556;\n    t[\"b\"] = 611;\n    t[\"c\"] = 556;\n    t[\"d\"] = 611;\n    t[\"e\"] = 556;\n    t[\"f\"] = 333;\n    t[\"g\"] = 611;\n    t[\"h\"] = 611;\n    t[\"i\"] = 278;\n    t[\"j\"] = 278;\n    t[\"k\"] = 556;\n    t[\"l\"] = 278;\n    t[\"m\"] = 889;\n    t[\"n\"] = 611;\n    t[\"o\"] = 611;\n    t[\"p\"] = 611;\n    t[\"q\"] = 611;\n    t[\"r\"] = 389;\n    t[\"s\"] = 556;\n    t[\"t\"] = 333;\n    t[\"u\"] = 611;\n    t[\"v\"] = 556;\n    t[\"w\"] = 778;\n    t[\"x\"] = 556;\n    t[\"y\"] = 556;\n    t[\"z\"] = 500;\n    t[\"braceleft\"] = 389;\n    t[\"bar\"] = 280;\n    t[\"braceright\"] = 389;\n    t[\"asciitilde\"] = 584;\n    t[\"exclamdown\"] = 333;\n    t[\"cent\"] = 556;\n    t[\"sterling\"] = 556;\n    t[\"fraction\"] = 167;\n    t[\"yen\"] = 556;\n    t[\"florin\"] = 556;\n    t[\"section\"] = 556;\n    t[\"currency\"] = 556;\n    t[\"quotesingle\"] = 238;\n    t[\"quotedblleft\"] = 500;\n    t[\"guillemotleft\"] = 556;\n    t[\"guilsinglleft\"] = 333;\n    t[\"guilsinglright\"] = 333;\n    t[\"fi\"] = 611;\n    t[\"fl\"] = 611;\n    t[\"endash\"] = 556;\n    t[\"dagger\"] = 556;\n    t[\"daggerdbl\"] = 556;\n    t[\"periodcentered\"] = 278;\n    t[\"paragraph\"] = 556;\n    t[\"bullet\"] = 350;\n    t[\"quotesinglbase\"] = 278;\n    t[\"quotedblbase\"] = 500;\n    t[\"quotedblright\"] = 500;\n    t[\"guillemotright\"] = 556;\n    t[\"ellipsis\"] = 1000;\n    t[\"perthousand\"] = 1000;\n    t[\"questiondown\"] = 611;\n    t[\"grave\"] = 333;\n    t[\"acute\"] = 333;\n    t[\"circumflex\"] = 333;\n    t[\"tilde\"] = 333;\n    t[\"macron\"] = 333;\n    t[\"breve\"] = 333;\n    t[\"dotaccent\"] = 333;\n    t[\"dieresis\"] = 333;\n    t[\"ring\"] = 333;\n    t[\"cedilla\"] = 333;\n    t[\"hungarumlaut\"] = 333;\n    t[\"ogonek\"] = 333;\n    t[\"caron\"] = 333;\n    t[\"emdash\"] = 1000;\n    t[\"AE\"] = 1000;\n    t[\"ordfeminine\"] = 370;\n    t[\"Lslash\"] = 611;\n    t[\"Oslash\"] = 778;\n    t[\"OE\"] = 1000;\n    t[\"ordmasculine\"] = 365;\n    t[\"ae\"] = 889;\n    t[\"dotlessi\"] = 278;\n    t[\"lslash\"] = 278;\n    t[\"oslash\"] = 611;\n    t[\"oe\"] = 944;\n    t[\"germandbls\"] = 611;\n    t[\"Idieresis\"] = 278;\n    t[\"eacute\"] = 556;\n    t[\"abreve\"] = 556;\n    t[\"uhungarumlaut\"] = 611;\n    t[\"ecaron\"] = 556;\n    t[\"Ydieresis\"] = 667;\n    t[\"divide\"] = 584;\n    t[\"Yacute\"] = 667;\n    t[\"Acircumflex\"] = 722;\n    t[\"aacute\"] = 556;\n    t[\"Ucircumflex\"] = 722;\n    t[\"yacute\"] = 556;\n    t[\"scommaaccent\"] = 556;\n    t[\"ecircumflex\"] = 556;\n    t[\"Uring\"] = 722;\n    t[\"Udieresis\"] = 722;\n    t[\"aogonek\"] = 556;\n    t[\"Uacute\"] = 722;\n    t[\"uogonek\"] = 611;\n    t[\"Edieresis\"] = 667;\n    t[\"Dcroat\"] = 722;\n    t[\"commaaccent\"] = 250;\n    t[\"copyright\"] = 737;\n    t[\"Emacron\"] = 667;\n    t[\"ccaron\"] = 556;\n    t[\"aring\"] = 556;\n    t[\"Ncommaaccent\"] = 722;\n    t[\"lacute\"] = 278;\n    t[\"agrave\"] = 556;\n    t[\"Tcommaaccent\"] = 611;\n    t[\"Cacute\"] = 722;\n    t[\"atilde\"] = 556;\n    t[\"Edotaccent\"] = 667;\n    t[\"scaron\"] = 556;\n    t[\"scedilla\"] = 556;\n    t[\"iacute\"] = 278;\n    t[\"lozenge\"] = 494;\n    t[\"Rcaron\"] = 722;\n    t[\"Gcommaaccent\"] = 778;\n    t[\"ucircumflex\"] = 611;\n    t[\"acircumflex\"] = 556;\n    t[\"Amacron\"] = 722;\n    t[\"rcaron\"] = 389;\n    t[\"ccedilla\"] = 556;\n    t[\"Zdotaccent\"] = 611;\n    t[\"Thorn\"] = 667;\n    t[\"Omacron\"] = 778;\n    t[\"Racute\"] = 722;\n    t[\"Sacute\"] = 667;\n    t[\"dcaron\"] = 743;\n    t[\"Umacron\"] = 722;\n    t[\"uring\"] = 611;\n    t[\"threesuperior\"] = 333;\n    t[\"Ograve\"] = 778;\n    t[\"Agrave\"] = 722;\n    t[\"Abreve\"] = 722;\n    t[\"multiply\"] = 584;\n    t[\"uacute\"] = 611;\n    t[\"Tcaron\"] = 611;\n    t[\"partialdiff\"] = 494;\n    t[\"ydieresis\"] = 556;\n    t[\"Nacute\"] = 722;\n    t[\"icircumflex\"] = 278;\n    t[\"Ecircumflex\"] = 667;\n    t[\"adieresis\"] = 556;\n    t[\"edieresis\"] = 556;\n    t[\"cacute\"] = 556;\n    t[\"nacute\"] = 611;\n    t[\"umacron\"] = 611;\n    t[\"Ncaron\"] = 722;\n    t[\"Iacute\"] = 278;\n    t[\"plusminus\"] = 584;\n    t[\"brokenbar\"] = 280;\n    t[\"registered\"] = 737;\n    t[\"Gbreve\"] = 778;\n    t[\"Idotaccent\"] = 278;\n    t[\"summation\"] = 600;\n    t[\"Egrave\"] = 667;\n    t[\"racute\"] = 389;\n    t[\"omacron\"] = 611;\n    t[\"Zacute\"] = 611;\n    t[\"Zcaron\"] = 611;\n    t[\"greaterequal\"] = 549;\n    t[\"Eth\"] = 722;\n    t[\"Ccedilla\"] = 722;\n    t[\"lcommaaccent\"] = 278;\n    t[\"tcaron\"] = 389;\n    t[\"eogonek\"] = 556;\n    t[\"Uogonek\"] = 722;\n    t[\"Aacute\"] = 722;\n    t[\"Adieresis\"] = 722;\n    t[\"egrave\"] = 556;\n    t[\"zacute\"] = 500;\n    t[\"iogonek\"] = 278;\n    t[\"Oacute\"] = 778;\n    t[\"oacute\"] = 611;\n    t[\"amacron\"] = 556;\n    t[\"sacute\"] = 556;\n    t[\"idieresis\"] = 278;\n    t[\"Ocircumflex\"] = 778;\n    t[\"Ugrave\"] = 722;\n    t[\"Delta\"] = 612;\n    t[\"thorn\"] = 611;\n    t[\"twosuperior\"] = 333;\n    t[\"Odieresis\"] = 778;\n    t[\"mu\"] = 611;\n    t[\"igrave\"] = 278;\n    t[\"ohungarumlaut\"] = 611;\n    t[\"Eogonek\"] = 667;\n    t[\"dcroat\"] = 611;\n    t[\"threequarters\"] = 834;\n    t[\"Scedilla\"] = 667;\n    t[\"lcaron\"] = 400;\n    t[\"Kcommaaccent\"] = 722;\n    t[\"Lacute\"] = 611;\n    t[\"trademark\"] = 1000;\n    t[\"edotaccent\"] = 556;\n    t[\"Igrave\"] = 278;\n    t[\"Imacron\"] = 278;\n    t[\"Lcaron\"] = 611;\n    t[\"onehalf\"] = 834;\n    t[\"lessequal\"] = 549;\n    t[\"ocircumflex\"] = 611;\n    t[\"ntilde\"] = 611;\n    t[\"Uhungarumlaut\"] = 722;\n    t[\"Eacute\"] = 667;\n    t[\"emacron\"] = 556;\n    t[\"gbreve\"] = 611;\n    t[\"onequarter\"] = 834;\n    t[\"Scaron\"] = 667;\n    t[\"Scommaaccent\"] = 667;\n    t[\"Ohungarumlaut\"] = 778;\n    t[\"degree\"] = 400;\n    t[\"ograve\"] = 611;\n    t[\"Ccaron\"] = 722;\n    t[\"ugrave\"] = 611;\n    t[\"radical\"] = 549;\n    t[\"Dcaron\"] = 722;\n    t[\"rcommaaccent\"] = 389;\n    t[\"Ntilde\"] = 722;\n    t[\"otilde\"] = 611;\n    t[\"Rcommaaccent\"] = 722;\n    t[\"Lcommaaccent\"] = 611;\n    t[\"Atilde\"] = 722;\n    t[\"Aogonek\"] = 722;\n    t[\"Aring\"] = 722;\n    t[\"Otilde\"] = 778;\n    t[\"zdotaccent\"] = 500;\n    t[\"Ecaron\"] = 667;\n    t[\"Iogonek\"] = 278;\n    t[\"kcommaaccent\"] = 556;\n    t[\"minus\"] = 584;\n    t[\"Icircumflex\"] = 278;\n    t[\"ncaron\"] = 611;\n    t[\"tcommaaccent\"] = 333;\n    t[\"logicalnot\"] = 584;\n    t[\"odieresis\"] = 611;\n    t[\"udieresis\"] = 611;\n    t[\"notequal\"] = 549;\n    t[\"gcommaaccent\"] = 611;\n    t[\"eth\"] = 611;\n    t[\"zcaron\"] = 500;\n    t[\"ncommaaccent\"] = 611;\n    t[\"onesuperior\"] = 333;\n    t[\"imacron\"] = 278;\n    t[\"Euro\"] = 556;\n  });\n  t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function(t) {\n    t[\"space\"] = 278;\n    t[\"exclam\"] = 333;\n    t[\"quotedbl\"] = 474;\n    t[\"numbersign\"] = 556;\n    t[\"dollar\"] = 556;\n    t[\"percent\"] = 889;\n    t[\"ampersand\"] = 722;\n    t[\"quoteright\"] = 278;\n    t[\"parenleft\"] = 333;\n    t[\"parenright\"] = 333;\n    t[\"asterisk\"] = 389;\n    t[\"plus\"] = 584;\n    t[\"comma\"] = 278;\n    t[\"hyphen\"] = 333;\n    t[\"period\"] = 278;\n    t[\"slash\"] = 278;\n    t[\"zero\"] = 556;\n    t[\"one\"] = 556;\n    t[\"two\"] = 556;\n    t[\"three\"] = 556;\n    t[\"four\"] = 556;\n    t[\"five\"] = 556;\n    t[\"six\"] = 556;\n    t[\"seven\"] = 556;\n    t[\"eight\"] = 556;\n    t[\"nine\"] = 556;\n    t[\"colon\"] = 333;\n    t[\"semicolon\"] = 333;\n    t[\"less\"] = 584;\n    t[\"equal\"] = 584;\n    t[\"greater\"] = 584;\n    t[\"question\"] = 611;\n    t[\"at\"] = 975;\n    t[\"A\"] = 722;\n    t[\"B\"] = 722;\n    t[\"C\"] = 722;\n    t[\"D\"] = 722;\n    t[\"E\"] = 667;\n    t[\"F\"] = 611;\n    t[\"G\"] = 778;\n    t[\"H\"] = 722;\n    t[\"I\"] = 278;\n    t[\"J\"] = 556;\n    t[\"K\"] = 722;\n    t[\"L\"] = 611;\n    t[\"M\"] = 833;\n    t[\"N\"] = 722;\n    t[\"O\"] = 778;\n    t[\"P\"] = 667;\n    t[\"Q\"] = 778;\n    t[\"R\"] = 722;\n    t[\"S\"] = 667;\n    t[\"T\"] = 611;\n    t[\"U\"] = 722;\n    t[\"V\"] = 667;\n    t[\"W\"] = 944;\n    t[\"X\"] = 667;\n    t[\"Y\"] = 667;\n    t[\"Z\"] = 611;\n    t[\"bracketleft\"] = 333;\n    t[\"backslash\"] = 278;\n    t[\"bracketright\"] = 333;\n    t[\"asciicircum\"] = 584;\n    t[\"underscore\"] = 556;\n    t[\"quoteleft\"] = 278;\n    t[\"a\"] = 556;\n    t[\"b\"] = 611;\n    t[\"c\"] = 556;\n    t[\"d\"] = 611;\n    t[\"e\"] = 556;\n    t[\"f\"] = 333;\n    t[\"g\"] = 611;\n    t[\"h\"] = 611;\n    t[\"i\"] = 278;\n    t[\"j\"] = 278;\n    t[\"k\"] = 556;\n    t[\"l\"] = 278;\n    t[\"m\"] = 889;\n    t[\"n\"] = 611;\n    t[\"o\"] = 611;\n    t[\"p\"] = 611;\n    t[\"q\"] = 611;\n    t[\"r\"] = 389;\n    t[\"s\"] = 556;\n    t[\"t\"] = 333;\n    t[\"u\"] = 611;\n    t[\"v\"] = 556;\n    t[\"w\"] = 778;\n    t[\"x\"] = 556;\n    t[\"y\"] = 556;\n    t[\"z\"] = 500;\n    t[\"braceleft\"] = 389;\n    t[\"bar\"] = 280;\n    t[\"braceright\"] = 389;\n    t[\"asciitilde\"] = 584;\n    t[\"exclamdown\"] = 333;\n    t[\"cent\"] = 556;\n    t[\"sterling\"] = 556;\n    t[\"fraction\"] = 167;\n    t[\"yen\"] = 556;\n    t[\"florin\"] = 556;\n    t[\"section\"] = 556;\n    t[\"currency\"] = 556;\n    t[\"quotesingle\"] = 238;\n    t[\"quotedblleft\"] = 500;\n    t[\"guillemotleft\"] = 556;\n    t[\"guilsinglleft\"] = 333;\n    t[\"guilsinglright\"] = 333;\n    t[\"fi\"] = 611;\n    t[\"fl\"] = 611;\n    t[\"endash\"] = 556;\n    t[\"dagger\"] = 556;\n    t[\"daggerdbl\"] = 556;\n    t[\"periodcentered\"] = 278;\n    t[\"paragraph\"] = 556;\n    t[\"bullet\"] = 350;\n    t[\"quotesinglbase\"] = 278;\n    t[\"quotedblbase\"] = 500;\n    t[\"quotedblright\"] = 500;\n    t[\"guillemotright\"] = 556;\n    t[\"ellipsis\"] = 1000;\n    t[\"perthousand\"] = 1000;\n    t[\"questiondown\"] = 611;\n    t[\"grave\"] = 333;\n    t[\"acute\"] = 333;\n    t[\"circumflex\"] = 333;\n    t[\"tilde\"] = 333;\n    t[\"macron\"] = 333;\n    t[\"breve\"] = 333;\n    t[\"dotaccent\"] = 333;\n    t[\"dieresis\"] = 333;\n    t[\"ring\"] = 333;\n    t[\"cedilla\"] = 333;\n    t[\"hungarumlaut\"] = 333;\n    t[\"ogonek\"] = 333;\n    t[\"caron\"] = 333;\n    t[\"emdash\"] = 1000;\n    t[\"AE\"] = 1000;\n    t[\"ordfeminine\"] = 370;\n    t[\"Lslash\"] = 611;\n    t[\"Oslash\"] = 778;\n    t[\"OE\"] = 1000;\n    t[\"ordmasculine\"] = 365;\n    t[\"ae\"] = 889;\n    t[\"dotlessi\"] = 278;\n    t[\"lslash\"] = 278;\n    t[\"oslash\"] = 611;\n    t[\"oe\"] = 944;\n    t[\"germandbls\"] = 611;\n    t[\"Idieresis\"] = 278;\n    t[\"eacute\"] = 556;\n    t[\"abreve\"] = 556;\n    t[\"uhungarumlaut\"] = 611;\n    t[\"ecaron\"] = 556;\n    t[\"Ydieresis\"] = 667;\n    t[\"divide\"] = 584;\n    t[\"Yacute\"] = 667;\n    t[\"Acircumflex\"] = 722;\n    t[\"aacute\"] = 556;\n    t[\"Ucircumflex\"] = 722;\n    t[\"yacute\"] = 556;\n    t[\"scommaaccent\"] = 556;\n    t[\"ecircumflex\"] = 556;\n    t[\"Uring\"] = 722;\n    t[\"Udieresis\"] = 722;\n    t[\"aogonek\"] = 556;\n    t[\"Uacute\"] = 722;\n    t[\"uogonek\"] = 611;\n    t[\"Edieresis\"] = 667;\n    t[\"Dcroat\"] = 722;\n    t[\"commaaccent\"] = 250;\n    t[\"copyright\"] = 737;\n    t[\"Emacron\"] = 667;\n    t[\"ccaron\"] = 556;\n    t[\"aring\"] = 556;\n    t[\"Ncommaaccent\"] = 722;\n    t[\"lacute\"] = 278;\n    t[\"agrave\"] = 556;\n    t[\"Tcommaaccent\"] = 611;\n    t[\"Cacute\"] = 722;\n    t[\"atilde\"] = 556;\n    t[\"Edotaccent\"] = 667;\n    t[\"scaron\"] = 556;\n    t[\"scedilla\"] = 556;\n    t[\"iacute\"] = 278;\n    t[\"lozenge\"] = 494;\n    t[\"Rcaron\"] = 722;\n    t[\"Gcommaaccent\"] = 778;\n    t[\"ucircumflex\"] = 611;\n    t[\"acircumflex\"] = 556;\n    t[\"Amacron\"] = 722;\n    t[\"rcaron\"] = 389;\n    t[\"ccedilla\"] = 556;\n    t[\"Zdotaccent\"] = 611;\n    t[\"Thorn\"] = 667;\n    t[\"Omacron\"] = 778;\n    t[\"Racute\"] = 722;\n    t[\"Sacute\"] = 667;\n    t[\"dcaron\"] = 743;\n    t[\"Umacron\"] = 722;\n    t[\"uring\"] = 611;\n    t[\"threesuperior\"] = 333;\n    t[\"Ograve\"] = 778;\n    t[\"Agrave\"] = 722;\n    t[\"Abreve\"] = 722;\n    t[\"multiply\"] = 584;\n    t[\"uacute\"] = 611;\n    t[\"Tcaron\"] = 611;\n    t[\"partialdiff\"] = 494;\n    t[\"ydieresis\"] = 556;\n    t[\"Nacute\"] = 722;\n    t[\"icircumflex\"] = 278;\n    t[\"Ecircumflex\"] = 667;\n    t[\"adieresis\"] = 556;\n    t[\"edieresis\"] = 556;\n    t[\"cacute\"] = 556;\n    t[\"nacute\"] = 611;\n    t[\"umacron\"] = 611;\n    t[\"Ncaron\"] = 722;\n    t[\"Iacute\"] = 278;\n    t[\"plusminus\"] = 584;\n    t[\"brokenbar\"] = 280;\n    t[\"registered\"] = 737;\n    t[\"Gbreve\"] = 778;\n    t[\"Idotaccent\"] = 278;\n    t[\"summation\"] = 600;\n    t[\"Egrave\"] = 667;\n    t[\"racute\"] = 389;\n    t[\"omacron\"] = 611;\n    t[\"Zacute\"] = 611;\n    t[\"Zcaron\"] = 611;\n    t[\"greaterequal\"] = 549;\n    t[\"Eth\"] = 722;\n    t[\"Ccedilla\"] = 722;\n    t[\"lcommaaccent\"] = 278;\n    t[\"tcaron\"] = 389;\n    t[\"eogonek\"] = 556;\n    t[\"Uogonek\"] = 722;\n    t[\"Aacute\"] = 722;\n    t[\"Adieresis\"] = 722;\n    t[\"egrave\"] = 556;\n    t[\"zacute\"] = 500;\n    t[\"iogonek\"] = 278;\n    t[\"Oacute\"] = 778;\n    t[\"oacute\"] = 611;\n    t[\"amacron\"] = 556;\n    t[\"sacute\"] = 556;\n    t[\"idieresis\"] = 278;\n    t[\"Ocircumflex\"] = 778;\n    t[\"Ugrave\"] = 722;\n    t[\"Delta\"] = 612;\n    t[\"thorn\"] = 611;\n    t[\"twosuperior\"] = 333;\n    t[\"Odieresis\"] = 778;\n    t[\"mu\"] = 611;\n    t[\"igrave\"] = 278;\n    t[\"ohungarumlaut\"] = 611;\n    t[\"Eogonek\"] = 667;\n    t[\"dcroat\"] = 611;\n    t[\"threequarters\"] = 834;\n    t[\"Scedilla\"] = 667;\n    t[\"lcaron\"] = 400;\n    t[\"Kcommaaccent\"] = 722;\n    t[\"Lacute\"] = 611;\n    t[\"trademark\"] = 1000;\n    t[\"edotaccent\"] = 556;\n    t[\"Igrave\"] = 278;\n    t[\"Imacron\"] = 278;\n    t[\"Lcaron\"] = 611;\n    t[\"onehalf\"] = 834;\n    t[\"lessequal\"] = 549;\n    t[\"ocircumflex\"] = 611;\n    t[\"ntilde\"] = 611;\n    t[\"Uhungarumlaut\"] = 722;\n    t[\"Eacute\"] = 667;\n    t[\"emacron\"] = 556;\n    t[\"gbreve\"] = 611;\n    t[\"onequarter\"] = 834;\n    t[\"Scaron\"] = 667;\n    t[\"Scommaaccent\"] = 667;\n    t[\"Ohungarumlaut\"] = 778;\n    t[\"degree\"] = 400;\n    t[\"ograve\"] = 611;\n    t[\"Ccaron\"] = 722;\n    t[\"ugrave\"] = 611;\n    t[\"radical\"] = 549;\n    t[\"Dcaron\"] = 722;\n    t[\"rcommaaccent\"] = 389;\n    t[\"Ntilde\"] = 722;\n    t[\"otilde\"] = 611;\n    t[\"Rcommaaccent\"] = 722;\n    t[\"Lcommaaccent\"] = 611;\n    t[\"Atilde\"] = 722;\n    t[\"Aogonek\"] = 722;\n    t[\"Aring\"] = 722;\n    t[\"Otilde\"] = 778;\n    t[\"zdotaccent\"] = 500;\n    t[\"Ecaron\"] = 667;\n    t[\"Iogonek\"] = 278;\n    t[\"kcommaaccent\"] = 556;\n    t[\"minus\"] = 584;\n    t[\"Icircumflex\"] = 278;\n    t[\"ncaron\"] = 611;\n    t[\"tcommaaccent\"] = 333;\n    t[\"logicalnot\"] = 584;\n    t[\"odieresis\"] = 611;\n    t[\"udieresis\"] = 611;\n    t[\"notequal\"] = 549;\n    t[\"gcommaaccent\"] = 611;\n    t[\"eth\"] = 611;\n    t[\"zcaron\"] = 500;\n    t[\"ncommaaccent\"] = 611;\n    t[\"onesuperior\"] = 333;\n    t[\"imacron\"] = 278;\n    t[\"Euro\"] = 556;\n  });\n  t[\"Helvetica-Oblique\"] = getLookupTableFactory(function(t) {\n    t[\"space\"] = 278;\n    t[\"exclam\"] = 278;\n    t[\"quotedbl\"] = 355;\n    t[\"numbersign\"] = 556;\n    t[\"dollar\"] = 556;\n    t[\"percent\"] = 889;\n    t[\"ampersand\"] = 667;\n    t[\"quoteright\"] = 222;\n    t[\"parenleft\"] = 333;\n    t[\"parenright\"] = 333;\n    t[\"asterisk\"] = 389;\n    t[\"plus\"] = 584;\n    t[\"comma\"] = 278;\n    t[\"hyphen\"] = 333;\n    t[\"period\"] = 278;\n    t[\"slash\"] = 278;\n    t[\"zero\"] = 556;\n    t[\"one\"] = 556;\n    t[\"two\"] = 556;\n    t[\"three\"] = 556;\n    t[\"four\"] = 556;\n    t[\"five\"] = 556;\n    t[\"six\"] = 556;\n    t[\"seven\"] = 556;\n    t[\"eight\"] = 556;\n    t[\"nine\"] = 556;\n    t[\"colon\"] = 278;\n    t[\"semicolon\"] = 278;\n    t[\"less\"] = 584;\n    t[\"equal\"] = 584;\n    t[\"greater\"] = 584;\n    t[\"question\"] = 556;\n    t[\"at\"] = 1015;\n    t[\"A\"] = 667;\n    t[\"B\"] = 667;\n    t[\"C\"] = 722;\n    t[\"D\"] = 722;\n    t[\"E\"] = 667;\n    t[\"F\"] = 611;\n    t[\"G\"] = 778;\n    t[\"H\"] = 722;\n    t[\"I\"] = 278;\n    t[\"J\"] = 500;\n    t[\"K\"] = 667;\n    t[\"L\"] = 556;\n    t[\"M\"] = 833;\n    t[\"N\"] = 722;\n    t[\"O\"] = 778;\n    t[\"P\"] = 667;\n    t[\"Q\"] = 778;\n    t[\"R\"] = 722;\n    t[\"S\"] = 667;\n    t[\"T\"] = 611;\n    t[\"U\"] = 722;\n    t[\"V\"] = 667;\n    t[\"W\"] = 944;\n    t[\"X\"] = 667;\n    t[\"Y\"] = 667;\n    t[\"Z\"] = 611;\n    t[\"bracketleft\"] = 278;\n    t[\"backslash\"] = 278;\n    t[\"bracketright\"] = 278;\n    t[\"asciicircum\"] = 469;\n    t[\"underscore\"] = 556;\n    t[\"quoteleft\"] = 222;\n    t[\"a\"] = 556;\n    t[\"b\"] = 556;\n    t[\"c\"] = 500;\n    t[\"d\"] = 556;\n    t[\"e\"] = 556;\n    t[\"f\"] = 278;\n    t[\"g\"] = 556;\n    t[\"h\"] = 556;\n    t[\"i\"] = 222;\n    t[\"j\"] = 222;\n    t[\"k\"] = 500;\n    t[\"l\"] = 222;\n    t[\"m\"] = 833;\n    t[\"n\"] = 556;\n    t[\"o\"] = 556;\n    t[\"p\"] = 556;\n    t[\"q\"] = 556;\n    t[\"r\"] = 333;\n    t[\"s\"] = 500;\n    t[\"t\"] = 278;\n    t[\"u\"] = 556;\n    t[\"v\"] = 500;\n    t[\"w\"] = 722;\n    t[\"x\"] = 500;\n    t[\"y\"] = 500;\n    t[\"z\"] = 500;\n    t[\"braceleft\"] = 334;\n    t[\"bar\"] = 260;\n    t[\"braceright\"] = 334;\n    t[\"asciitilde\"] = 584;\n    t[\"exclamdown\"] = 333;\n    t[\"cent\"] = 556;\n    t[\"sterling\"] = 556;\n    t[\"fraction\"] = 167;\n    t[\"yen\"] = 556;\n    t[\"florin\"] = 556;\n    t[\"section\"] = 556;\n    t[\"currency\"] = 556;\n    t[\"quotesingle\"] = 191;\n    t[\"quotedblleft\"] = 333;\n    t[\"guillemotleft\"] = 556;\n    t[\"guilsinglleft\"] = 333;\n    t[\"guilsinglright\"] = 333;\n    t[\"fi\"] = 500;\n    t[\"fl\"] = 500;\n    t[\"endash\"] = 556;\n    t[\"dagger\"] = 556;\n    t[\"daggerdbl\"] = 556;\n    t[\"periodcentered\"] = 278;\n    t[\"paragraph\"] = 537;\n    t[\"bullet\"] = 350;\n    t[\"quotesinglbase\"] = 222;\n    t[\"quotedblbase\"] = 333;\n    t[\"quotedblright\"] = 333;\n    t[\"guillemotright\"] = 556;\n    t[\"ellipsis\"] = 1000;\n    t[\"perthousand\"] = 1000;\n    t[\"questiondown\"] = 611;\n    t[\"grave\"] = 333;\n    t[\"acute\"] = 333;\n    t[\"circumflex\"] = 333;\n    t[\"tilde\"] = 333;\n    t[\"macron\"] = 333;\n    t[\"breve\"] = 333;\n    t[\"dotaccent\"] = 333;\n    t[\"dieresis\"] = 333;\n    t[\"ring\"] = 333;\n    t[\"cedilla\"] = 333;\n    t[\"hungarumlaut\"] = 333;\n    t[\"ogonek\"] = 333;\n    t[\"caron\"] = 333;\n    t[\"emdash\"] = 1000;\n    t[\"AE\"] = 1000;\n    t[\"ordfeminine\"] = 370;\n    t[\"Lslash\"] = 556;\n    t[\"Oslash\"] = 778;\n    t[\"OE\"] = 1000;\n    t[\"ordmasculine\"] = 365;\n    t[\"ae\"] = 889;\n    t[\"dotlessi\"] = 278;\n    t[\"lslash\"] = 222;\n    t[\"oslash\"] = 611;\n    t[\"oe\"] = 944;\n    t[\"germandbls\"] = 611;\n    t[\"Idieresis\"] = 278;\n    t[\"eacute\"] = 556;\n    t[\"abreve\"] = 556;\n    t[\"uhungarumlaut\"] = 556;\n    t[\"ecaron\"] = 556;\n    t[\"Ydieresis\"] = 667;\n    t[\"divide\"] = 584;\n    t[\"Yacute\"] = 667;\n    t[\"Acircumflex\"] = 667;\n    t[\"aacute\"] = 556;\n    t[\"Ucircumflex\"] = 722;\n    t[\"yacute\"] = 500;\n    t[\"scommaaccent\"] = 500;\n    t[\"ecircumflex\"] = 556;\n    t[\"Uring\"] = 722;\n    t[\"Udieresis\"] = 722;\n    t[\"aogonek\"] = 556;\n    t[\"Uacute\"] = 722;\n    t[\"uogonek\"] = 556;\n    t[\"Edieresis\"] = 667;\n    t[\"Dcroat\"] = 722;\n    t[\"commaaccent\"] = 250;\n    t[\"copyright\"] = 737;\n    t[\"Emacron\"] = 667;\n    t[\"ccaron\"] = 500;\n    t[\"aring\"] = 556;\n    t[\"Ncommaaccent\"] = 722;\n    t[\"lacute\"] = 222;\n    t[\"agrave\"] = 556;\n    t[\"Tcommaaccent\"] = 611;\n    t[\"Cacute\"] = 722;\n    t[\"atilde\"] = 556;\n    t[\"Edotaccent\"] = 667;\n    t[\"scaron\"] = 500;\n    t[\"scedilla\"] = 500;\n    t[\"iacute\"] = 278;\n    t[\"lozenge\"] = 471;\n    t[\"Rcaron\"] = 722;\n    t[\"Gcommaaccent\"] = 778;\n    t[\"ucircumflex\"] = 556;\n    t[\"acircumflex\"] = 556;\n    t[\"Amacron\"] = 667;\n    t[\"rcaron\"] = 333;\n    t[\"ccedilla\"] = 500;\n    t[\"Zdotaccent\"] = 611;\n    t[\"Thorn\"] = 667;\n    t[\"Omacron\"] = 778;\n    t[\"Racute\"] = 722;\n    t[\"Sacute\"] = 667;\n    t[\"dcaron\"] = 643;\n    t[\"Umacron\"] = 722;\n    t[\"uring\"] = 556;\n    t[\"threesuperior\"] = 333;\n    t[\"Ograve\"] = 778;\n    t[\"Agrave\"] = 667;\n    t[\"Abreve\"] = 667;\n    t[\"multiply\"] = 584;\n    t[\"uacute\"] = 556;\n    t[\"Tcaron\"] = 611;\n    t[\"partialdiff\"] = 476;\n    t[\"ydieresis\"] = 500;\n    t[\"Nacute\"] = 722;\n    t[\"icircumflex\"] = 278;\n    t[\"Ecircumflex\"] = 667;\n    t[\"adieresis\"] = 556;\n    t[\"edieresis\"] = 556;\n    t[\"cacute\"] = 500;\n    t[\"nacute\"] = 556;\n    t[\"umacron\"] = 556;\n    t[\"Ncaron\"] = 722;\n    t[\"Iacute\"] = 278;\n    t[\"plusminus\"] = 584;\n    t[\"brokenbar\"] = 260;\n    t[\"registered\"] = 737;\n    t[\"Gbreve\"] = 778;\n    t[\"Idotaccent\"] = 278;\n    t[\"summation\"] = 600;\n    t[\"Egrave\"] = 667;\n    t[\"racute\"] = 333;\n    t[\"omacron\"] = 556;\n    t[\"Zacute\"] = 611;\n    t[\"Zcaron\"] = 611;\n    t[\"greaterequal\"] = 549;\n    t[\"Eth\"] = 722;\n    t[\"Ccedilla\"] = 722;\n    t[\"lcommaaccent\"] = 222;\n    t[\"tcaron\"] = 317;\n    t[\"eogonek\"] = 556;\n    t[\"Uogonek\"] = 722;\n    t[\"Aacute\"] = 667;\n    t[\"Adieresis\"] = 667;\n    t[\"egrave\"] = 556;\n    t[\"zacute\"] = 500;\n    t[\"iogonek\"] = 222;\n    t[\"Oacute\"] = 778;\n    t[\"oacute\"] = 556;\n    t[\"amacron\"] = 556;\n    t[\"sacute\"] = 500;\n    t[\"idieresis\"] = 278;\n    t[\"Ocircumflex\"] = 778;\n    t[\"Ugrave\"] = 722;\n    t[\"Delta\"] = 612;\n    t[\"thorn\"] = 556;\n    t[\"twosuperior\"] = 333;\n    t[\"Odieresis\"] = 778;\n    t[\"mu\"] = 556;\n    t[\"igrave\"] = 278;\n    t[\"ohungarumlaut\"] = 556;\n    t[\"Eogonek\"] = 667;\n    t[\"dcroat\"] = 556;\n    t[\"threequarters\"] = 834;\n    t[\"Scedilla\"] = 667;\n    t[\"lcaron\"] = 299;\n    t[\"Kcommaaccent\"] = 667;\n    t[\"Lacute\"] = 556;\n    t[\"trademark\"] = 1000;\n    t[\"edotaccent\"] = 556;\n    t[\"Igrave\"] = 278;\n    t[\"Imacron\"] = 278;\n    t[\"Lcaron\"] = 556;\n    t[\"onehalf\"] = 834;\n    t[\"lessequal\"] = 549;\n    t[\"ocircumflex\"] = 556;\n    t[\"ntilde\"] = 556;\n    t[\"Uhungarumlaut\"] = 722;\n    t[\"Eacute\"] = 667;\n    t[\"emacron\"] = 556;\n    t[\"gbreve\"] = 556;\n    t[\"onequarter\"] = 834;\n    t[\"Scaron\"] = 667;\n    t[\"Scommaaccent\"] = 667;\n    t[\"Ohungarumlaut\"] = 778;\n    t[\"degree\"] = 400;\n    t[\"ograve\"] = 556;\n    t[\"Ccaron\"] = 722;\n    t[\"ugrave\"] = 556;\n    t[\"radical\"] = 453;\n    t[\"Dcaron\"] = 722;\n    t[\"rcommaaccent\"] = 333;\n    t[\"Ntilde\"] = 722;\n    t[\"otilde\"] = 556;\n    t[\"Rcommaaccent\"] = 722;\n    t[\"Lcommaaccent\"] = 556;\n    t[\"Atilde\"] = 667;\n    t[\"Aogonek\"] = 667;\n    t[\"Aring\"] = 667;\n    t[\"Otilde\"] = 778;\n    t[\"zdotaccent\"] = 500;\n    t[\"Ecaron\"] = 667;\n    t[\"Iogonek\"] = 278;\n    t[\"kcommaaccent\"] = 500;\n    t[\"minus\"] = 584;\n    t[\"Icircumflex\"] = 278;\n    t[\"ncaron\"] = 556;\n    t[\"tcommaaccent\"] = 278;\n    t[\"logicalnot\"] = 584;\n    t[\"odieresis\"] = 556;\n    t[\"udieresis\"] = 556;\n    t[\"notequal\"] = 549;\n    t[\"gcommaaccent\"] = 556;\n    t[\"eth\"] = 556;\n    t[\"zcaron\"] = 500;\n    t[\"ncommaaccent\"] = 556;\n    t[\"onesuperior\"] = 333;\n    t[\"imacron\"] = 278;\n    t[\"Euro\"] = 556;\n  });\n  t[\"Symbol\"] = getLookupTableFactory(function(t) {\n    t[\"space\"] = 250;\n    t[\"exclam\"] = 333;\n    t[\"universal\"] = 713;\n    t[\"numbersign\"] = 500;\n    t[\"existential\"] = 549;\n    t[\"percent\"] = 833;\n    t[\"ampersand\"] = 778;\n    t[\"suchthat\"] = 439;\n    t[\"parenleft\"] = 333;\n    t[\"parenright\"] = 333;\n    t[\"asteriskmath\"] = 500;\n    t[\"plus\"] = 549;\n    t[\"comma\"] = 250;\n    t[\"minus\"] = 549;\n    t[\"period\"] = 250;\n    t[\"slash\"] = 278;\n    t[\"zero\"] = 500;\n    t[\"one\"] = 500;\n    t[\"two\"] = 500;\n    t[\"three\"] = 500;\n    t[\"four\"] = 500;\n    t[\"five\"] = 500;\n    t[\"six\"] = 500;\n    t[\"seven\"] = 500;\n    t[\"eight\"] = 500;\n    t[\"nine\"] = 500;\n    t[\"colon\"] = 278;\n    t[\"semicolon\"] = 278;\n    t[\"less\"] = 549;\n    t[\"equal\"] = 549;\n    t[\"greater\"] = 549;\n    t[\"question\"] = 444;\n    t[\"congruent\"] = 549;\n    t[\"Alpha\"] = 722;\n    t[\"Beta\"] = 667;\n    t[\"Chi\"] = 722;\n    t[\"Delta\"] = 612;\n    t[\"Epsilon\"] = 611;\n    t[\"Phi\"] = 763;\n    t[\"Gamma\"] = 603;\n    t[\"Eta\"] = 722;\n    t[\"Iota\"] = 333;\n    t[\"theta1\"] = 631;\n    t[\"Kappa\"] = 722;\n    t[\"Lambda\"] = 686;\n    t[\"Mu\"] = 889;\n    t[\"Nu\"] = 722;\n    t[\"Omicron\"] = 722;\n    t[\"Pi\"] = 768;\n    t[\"Theta\"] = 741;\n    t[\"Rho\"] = 556;\n    t[\"Sigma\"] = 592;\n    t[\"Tau\"] = 611;\n    t[\"Upsilon\"] = 690;\n    t[\"sigma1\"] = 439;\n    t[\"Omega\"] = 768;\n    t[\"Xi\"] = 645;\n    t[\"Psi\"] = 795;\n    t[\"Zeta\"] = 611;\n    t[\"bracketleft\"] = 333;\n    t[\"therefore\"] = 863;\n    t[\"bracketright\"] = 333;\n    t[\"perpendicular\"] = 658;\n    t[\"underscore\"] = 500;\n    t[\"radicalex\"] = 500;\n    t[\"alpha\"] = 631;\n    t[\"beta\"] = 549;\n    t[\"chi\"] = 549;\n    t[\"delta\"] = 494;\n    t[\"epsilon\"] = 439;\n    t[\"phi\"] = 521;\n    t[\"gamma\"] = 411;\n    t[\"eta\"] = 603;\n    t[\"iota\"] = 329;\n    t[\"phi1\"] = 603;\n    t[\"kappa\"] = 549;\n    t[\"lambda\"] = 549;\n    t[\"mu\"] = 576;\n    t[\"nu\"] = 521;\n    t[\"omicron\"] = 549;\n    t[\"pi\"] = 549;\n    t[\"theta\"] = 521;\n    t[\"rho\"] = 549;\n    t[\"sigma\"] = 603;\n    t[\"tau\"] = 439;\n    t[\"upsilon\"] = 576;\n    t[\"omega1\"] = 713;\n    t[\"omega\"] = 686;\n    t[\"xi\"] = 493;\n    t[\"psi\"] = 686;\n    t[\"zeta\"] = 494;\n    t[\"braceleft\"] = 480;\n    t[\"bar\"] = 200;\n    t[\"braceright\"] = 480;\n    t[\"similar\"] = 549;\n    t[\"Euro\"] = 750;\n    t[\"Upsilon1\"] = 620;\n    t[\"minute\"] = 247;\n    t[\"lessequal\"] = 549;\n    t[\"fraction\"] = 167;\n    t[\"infinity\"] = 713;\n    t[\"florin\"] = 500;\n    t[\"club\"] = 753;\n    t[\"diamond\"] = 753;\n    t[\"heart\"] = 753;\n    t[\"spade\"] = 753;\n    t[\"arrowboth\"] = 1042;\n    t[\"arrowleft\"] = 987;\n    t[\"arrowup\"] = 603;\n    t[\"arrowright\"] = 987;\n    t[\"arrowdown\"] = 603;\n    t[\"degree\"] = 400;\n    t[\"plusminus\"] = 549;\n    t[\"second\"] = 411;\n    t[\"greaterequal\"] = 549;\n    t[\"multiply\"] = 549;\n    t[\"proportional\"] = 713;\n    t[\"partialdiff\"] = 494;\n    t[\"bullet\"] = 460;\n    t[\"divide\"] = 549;\n    t[\"notequal\"] = 549;\n    t[\"equivalence\"] = 549;\n    t[\"approxequal\"] = 549;\n    t[\"ellipsis\"] = 1000;\n    t[\"arrowvertex\"] = 603;\n    t[\"arrowhorizex\"] = 1000;\n    t[\"carriagereturn\"] = 658;\n    t[\"aleph\"] = 823;\n    t[\"Ifraktur\"] = 686;\n    t[\"Rfraktur\"] = 795;\n    t[\"weierstrass\"] = 987;\n    t[\"circlemultiply\"] = 768;\n    t[\"circleplus\"] = 768;\n    t[\"emptyset\"] = 823;\n    t[\"intersection\"] = 768;\n    t[\"union\"] = 768;\n    t[\"propersuperset\"] = 713;\n    t[\"reflexsuperset\"] = 713;\n    t[\"notsubset\"] = 713;\n    t[\"propersubset\"] = 713;\n    t[\"reflexsubset\"] = 713;\n    t[\"element\"] = 713;\n    t[\"notelement\"] = 713;\n    t[\"angle\"] = 768;\n    t[\"gradient\"] = 713;\n    t[\"registerserif\"] = 790;\n    t[\"copyrightserif\"] = 790;\n    t[\"trademarkserif\"] = 890;\n    t[\"product\"] = 823;\n    t[\"radical\"] = 549;\n    t[\"dotmath\"] = 250;\n    t[\"logicalnot\"] = 713;\n    t[\"logicaland\"] = 603;\n    t[\"logicalor\"] = 603;\n    t[\"arrowdblboth\"] = 1042;\n    t[\"arrowdblleft\"] = 987;\n    t[\"arrowdblup\"] = 603;\n    t[\"arrowdblright\"] = 987;\n    t[\"arrowdbldown\"] = 603;\n    t[\"lozenge\"] = 494;\n    t[\"angleleft\"] = 329;\n    t[\"registersans\"] = 790;\n    t[\"copyrightsans\"] = 790;\n    t[\"trademarksans\"] = 786;\n    t[\"summation\"] = 713;\n    t[\"parenlefttp\"] = 384;\n    t[\"parenleftex\"] = 384;\n    t[\"parenleftbt\"] = 384;\n    t[\"bracketlefttp\"] = 384;\n    t[\"bracketleftex\"] = 384;\n    t[\"bracketleftbt\"] = 384;\n    t[\"bracelefttp\"] = 494;\n    t[\"braceleftmid\"] = 494;\n    t[\"braceleftbt\"] = 494;\n    t[\"braceex\"] = 494;\n    t[\"angleright\"] = 329;\n    t[\"integral\"] = 274;\n    t[\"integraltp\"] = 686;\n    t[\"integralex\"] = 686;\n    t[\"integralbt\"] = 686;\n    t[\"parenrighttp\"] = 384;\n    t[\"parenrightex\"] = 384;\n    t[\"parenrightbt\"] = 384;\n    t[\"bracketrighttp\"] = 384;\n    t[\"bracketrightex\"] = 384;\n    t[\"bracketrightbt\"] = 384;\n    t[\"bracerighttp\"] = 494;\n    t[\"bracerightmid\"] = 494;\n    t[\"bracerightbt\"] = 494;\n    t[\"apple\"] = 790;\n  });\n  t[\"Times-Roman\"] = getLookupTableFactory(function(t) {\n    t[\"space\"] = 250;\n    t[\"exclam\"] = 333;\n    t[\"quotedbl\"] = 408;\n    t[\"numbersign\"] = 500;\n    t[\"dollar\"] = 500;\n    t[\"percent\"] = 833;\n    t[\"ampersand\"] = 778;\n    t[\"quoteright\"] = 333;\n    t[\"parenleft\"] = 333;\n    t[\"parenright\"] = 333;\n    t[\"asterisk\"] = 500;\n    t[\"plus\"] = 564;\n    t[\"comma\"] = 250;\n    t[\"hyphen\"] = 333;\n    t[\"period\"] = 250;\n    t[\"slash\"] = 278;\n    t[\"zero\"] = 500;\n    t[\"one\"] = 500;\n    t[\"two\"] = 500;\n    t[\"three\"] = 500;\n    t[\"four\"] = 500;\n    t[\"five\"] = 500;\n    t[\"six\"] = 500;\n    t[\"seven\"] = 500;\n    t[\"eight\"] = 500;\n    t[\"nine\"] = 500;\n    t[\"colon\"] = 278;\n    t[\"semicolon\"] = 278;\n    t[\"less\"] = 564;\n    t[\"equal\"] = 564;\n    t[\"greater\"] = 564;\n    t[\"question\"] = 444;\n    t[\"at\"] = 921;\n    t[\"A\"] = 722;\n    t[\"B\"] = 667;\n    t[\"C\"] = 667;\n    t[\"D\"] = 722;\n    t[\"E\"] = 611;\n    t[\"F\"] = 556;\n    t[\"G\"] = 722;\n    t[\"H\"] = 722;\n    t[\"I\"] = 333;\n    t[\"J\"] = 389;\n    t[\"K\"] = 722;\n    t[\"L\"] = 611;\n    t[\"M\"] = 889;\n    t[\"N\"] = 722;\n    t[\"O\"] = 722;\n    t[\"P\"] = 556;\n    t[\"Q\"] = 722;\n    t[\"R\"] = 667;\n    t[\"S\"] = 556;\n    t[\"T\"] = 611;\n    t[\"U\"] = 722;\n    t[\"V\"] = 722;\n    t[\"W\"] = 944;\n    t[\"X\"] = 722;\n    t[\"Y\"] = 722;\n    t[\"Z\"] = 611;\n    t[\"bracketleft\"] = 333;\n    t[\"backslash\"] = 278;\n    t[\"bracketright\"] = 333;\n    t[\"asciicircum\"] = 469;\n    t[\"underscore\"] = 500;\n    t[\"quoteleft\"] = 333;\n    t[\"a\"] = 444;\n    t[\"b\"] = 500;\n    t[\"c\"] = 444;\n    t[\"d\"] = 500;\n    t[\"e\"] = 444;\n    t[\"f\"] = 333;\n    t[\"g\"] = 500;\n    t[\"h\"] = 500;\n    t[\"i\"] = 278;\n    t[\"j\"] = 278;\n    t[\"k\"] = 500;\n    t[\"l\"] = 278;\n    t[\"m\"] = 778;\n    t[\"n\"] = 500;\n    t[\"o\"] = 500;\n    t[\"p\"] = 500;\n    t[\"q\"] = 500;\n    t[\"r\"] = 333;\n    t[\"s\"] = 389;\n    t[\"t\"] = 278;\n    t[\"u\"] = 500;\n    t[\"v\"] = 500;\n    t[\"w\"] = 722;\n    t[\"x\"] = 500;\n    t[\"y\"] = 500;\n    t[\"z\"] = 444;\n    t[\"braceleft\"] = 480;\n    t[\"bar\"] = 200;\n    t[\"braceright\"] = 480;\n    t[\"asciitilde\"] = 541;\n    t[\"exclamdown\"] = 333;\n    t[\"cent\"] = 500;\n    t[\"sterling\"] = 500;\n    t[\"fraction\"] = 167;\n    t[\"yen\"] = 500;\n    t[\"florin\"] = 500;\n    t[\"section\"] = 500;\n    t[\"currency\"] = 500;\n    t[\"quotesingle\"] = 180;\n    t[\"quotedblleft\"] = 444;\n    t[\"guillemotleft\"] = 500;\n    t[\"guilsinglleft\"] = 333;\n    t[\"guilsinglright\"] = 333;\n    t[\"fi\"] = 556;\n    t[\"fl\"] = 556;\n    t[\"endash\"] = 500;\n    t[\"dagger\"] = 500;\n    t[\"daggerdbl\"] = 500;\n    t[\"periodcentered\"] = 250;\n    t[\"paragraph\"] = 453;\n    t[\"bullet\"] = 350;\n    t[\"quotesinglbase\"] = 333;\n    t[\"quotedblbase\"] = 444;\n    t[\"quotedblright\"] = 444;\n    t[\"guillemotright\"] = 500;\n    t[\"ellipsis\"] = 1000;\n    t[\"perthousand\"] = 1000;\n    t[\"questiondown\"] = 444;\n    t[\"grave\"] = 333;\n    t[\"acute\"] = 333;\n    t[\"circumflex\"] = 333;\n    t[\"tilde\"] = 333;\n    t[\"macron\"] = 333;\n    t[\"breve\"] = 333;\n    t[\"dotaccent\"] = 333;\n    t[\"dieresis\"] = 333;\n    t[\"ring\"] = 333;\n    t[\"cedilla\"] = 333;\n    t[\"hungarumlaut\"] = 333;\n    t[\"ogonek\"] = 333;\n    t[\"caron\"] = 333;\n    t[\"emdash\"] = 1000;\n    t[\"AE\"] = 889;\n    t[\"ordfeminine\"] = 276;\n    t[\"Lslash\"] = 611;\n    t[\"Oslash\"] = 722;\n    t[\"OE\"] = 889;\n    t[\"ordmasculine\"] = 310;\n    t[\"ae\"] = 667;\n    t[\"dotlessi\"] = 278;\n    t[\"lslash\"] = 278;\n    t[\"oslash\"] = 500;\n    t[\"oe\"] = 722;\n    t[\"germandbls\"] = 500;\n    t[\"Idieresis\"] = 333;\n    t[\"eacute\"] = 444;\n    t[\"abreve\"] = 444;\n    t[\"uhungarumlaut\"] = 500;\n    t[\"ecaron\"] = 444;\n    t[\"Ydieresis\"] = 722;\n    t[\"divide\"] = 564;\n    t[\"Yacute\"] = 722;\n    t[\"Acircumflex\"] = 722;\n    t[\"aacute\"] = 444;\n    t[\"Ucircumflex\"] = 722;\n    t[\"yacute\"] = 500;\n    t[\"scommaaccent\"] = 389;\n    t[\"ecircumflex\"] = 444;\n    t[\"Uring\"] = 722;\n    t[\"Udieresis\"] = 722;\n    t[\"aogonek\"] = 444;\n    t[\"Uacute\"] = 722;\n    t[\"uogonek\"] = 500;\n    t[\"Edieresis\"] = 611;\n    t[\"Dcroat\"] = 722;\n    t[\"commaaccent\"] = 250;\n    t[\"copyright\"] = 760;\n    t[\"Emacron\"] = 611;\n    t[\"ccaron\"] = 444;\n    t[\"aring\"] = 444;\n    t[\"Ncommaaccent\"] = 722;\n    t[\"lacute\"] = 278;\n    t[\"agrave\"] = 444;\n    t[\"Tcommaaccent\"] = 611;\n    t[\"Cacute\"] = 667;\n    t[\"atilde\"] = 444;\n    t[\"Edotaccent\"] = 611;\n    t[\"scaron\"] = 389;\n    t[\"scedilla\"] = 389;\n    t[\"iacute\"] = 278;\n    t[\"lozenge\"] = 471;\n    t[\"Rcaron\"] = 667;\n    t[\"Gcommaaccent\"] = 722;\n    t[\"ucircumflex\"] = 500;\n    t[\"acircumflex\"] = 444;\n    t[\"Amacron\"] = 722;\n    t[\"rcaron\"] = 333;\n    t[\"ccedilla\"] = 444;\n    t[\"Zdotaccent\"] = 611;\n    t[\"Thorn\"] = 556;\n    t[\"Omacron\"] = 722;\n    t[\"Racute\"] = 667;\n    t[\"Sacute\"] = 556;\n    t[\"dcaron\"] = 588;\n    t[\"Umacron\"] = 722;\n    t[\"uring\"] = 500;\n    t[\"threesuperior\"] = 300;\n    t[\"Ograve\"] = 722;\n    t[\"Agrave\"] = 722;\n    t[\"Abreve\"] = 722;\n    t[\"multiply\"] = 564;\n    t[\"uacute\"] = 500;\n    t[\"Tcaron\"] = 611;\n    t[\"partialdiff\"] = 476;\n    t[\"ydieresis\"] = 500;\n    t[\"Nacute\"] = 722;\n    t[\"icircumflex\"] = 278;\n    t[\"Ecircumflex\"] = 611;\n    t[\"adieresis\"] = 444;\n    t[\"edieresis\"] = 444;\n    t[\"cacute\"] = 444;\n    t[\"nacute\"] = 500;\n    t[\"umacron\"] = 500;\n    t[\"Ncaron\"] = 722;\n    t[\"Iacute\"] = 333;\n    t[\"plusminus\"] = 564;\n    t[\"brokenbar\"] = 200;\n    t[\"registered\"] = 760;\n    t[\"Gbreve\"] = 722;\n    t[\"Idotaccent\"] = 333;\n    t[\"summation\"] = 600;\n    t[\"Egrave\"] = 611;\n    t[\"racute\"] = 333;\n    t[\"omacron\"] = 500;\n    t[\"Zacute\"] = 611;\n    t[\"Zcaron\"] = 611;\n    t[\"greaterequal\"] = 549;\n    t[\"Eth\"] = 722;\n    t[\"Ccedilla\"] = 667;\n    t[\"lcommaaccent\"] = 278;\n    t[\"tcaron\"] = 326;\n    t[\"eogonek\"] = 444;\n    t[\"Uogonek\"] = 722;\n    t[\"Aacute\"] = 722;\n    t[\"Adieresis\"] = 722;\n    t[\"egrave\"] = 444;\n    t[\"zacute\"] = 444;\n    t[\"iogonek\"] = 278;\n    t[\"Oacute\"] = 722;\n    t[\"oacute\"] = 500;\n    t[\"amacron\"] = 444;\n    t[\"sacute\"] = 389;\n    t[\"idieresis\"] = 278;\n    t[\"Ocircumflex\"] = 722;\n    t[\"Ugrave\"] = 722;\n    t[\"Delta\"] = 612;\n    t[\"thorn\"] = 500;\n    t[\"twosuperior\"] = 300;\n    t[\"Odieresis\"] = 722;\n    t[\"mu\"] = 500;\n    t[\"igrave\"] = 278;\n    t[\"ohungarumlaut\"] = 500;\n    t[\"Eogonek\"] = 611;\n    t[\"dcroat\"] = 500;\n    t[\"threequarters\"] = 750;\n    t[\"Scedilla\"] = 556;\n    t[\"lcaron\"] = 344;\n    t[\"Kcommaaccent\"] = 722;\n    t[\"Lacute\"] = 611;\n    t[\"trademark\"] = 980;\n    t[\"edotaccent\"] = 444;\n    t[\"Igrave\"] = 333;\n    t[\"Imacron\"] = 333;\n    t[\"Lcaron\"] = 611;\n    t[\"onehalf\"] = 750;\n    t[\"lessequal\"] = 549;\n    t[\"ocircumflex\"] = 500;\n    t[\"ntilde\"] = 500;\n    t[\"Uhungarumlaut\"] = 722;\n    t[\"Eacute\"] = 611;\n    t[\"emacron\"] = 444;\n    t[\"gbreve\"] = 500;\n    t[\"onequarter\"] = 750;\n    t[\"Scaron\"] = 556;\n    t[\"Scommaaccent\"] = 556;\n    t[\"Ohungarumlaut\"] = 722;\n    t[\"degree\"] = 400;\n    t[\"ograve\"] = 500;\n    t[\"Ccaron\"] = 667;\n    t[\"ugrave\"] = 500;\n    t[\"radical\"] = 453;\n    t[\"Dcaron\"] = 722;\n    t[\"rcommaaccent\"] = 333;\n    t[\"Ntilde\"] = 722;\n    t[\"otilde\"] = 500;\n    t[\"Rcommaaccent\"] = 667;\n    t[\"Lcommaaccent\"] = 611;\n    t[\"Atilde\"] = 722;\n    t[\"Aogonek\"] = 722;\n    t[\"Aring\"] = 722;\n    t[\"Otilde\"] = 722;\n    t[\"zdotaccent\"] = 444;\n    t[\"Ecaron\"] = 611;\n    t[\"Iogonek\"] = 333;\n    t[\"kcommaaccent\"] = 500;\n    t[\"minus\"] = 564;\n    t[\"Icircumflex\"] = 333;\n    t[\"ncaron\"] = 500;\n    t[\"tcommaaccent\"] = 278;\n    t[\"logicalnot\"] = 564;\n    t[\"odieresis\"] = 500;\n    t[\"udieresis\"] = 500;\n    t[\"notequal\"] = 549;\n    t[\"gcommaaccent\"] = 500;\n    t[\"eth\"] = 500;\n    t[\"zcaron\"] = 444;\n    t[\"ncommaaccent\"] = 500;\n    t[\"onesuperior\"] = 300;\n    t[\"imacron\"] = 278;\n    t[\"Euro\"] = 500;\n  });\n  t[\"Times-Bold\"] = getLookupTableFactory(function(t) {\n    t[\"space\"] = 250;\n    t[\"exclam\"] = 333;\n    t[\"quotedbl\"] = 555;\n    t[\"numbersign\"] = 500;\n    t[\"dollar\"] = 500;\n    t[\"percent\"] = 1000;\n    t[\"ampersand\"] = 833;\n    t[\"quoteright\"] = 333;\n    t[\"parenleft\"] = 333;\n    t[\"parenright\"] = 333;\n    t[\"asterisk\"] = 500;\n    t[\"plus\"] = 570;\n    t[\"comma\"] = 250;\n    t[\"hyphen\"] = 333;\n    t[\"period\"] = 250;\n    t[\"slash\"] = 278;\n    t[\"zero\"] = 500;\n    t[\"one\"] = 500;\n    t[\"two\"] = 500;\n    t[\"three\"] = 500;\n    t[\"four\"] = 500;\n    t[\"five\"] = 500;\n    t[\"six\"] = 500;\n    t[\"seven\"] = 500;\n    t[\"eight\"] = 500;\n    t[\"nine\"] = 500;\n    t[\"colon\"] = 333;\n    t[\"semicolon\"] = 333;\n    t[\"less\"] = 570;\n    t[\"equal\"] = 570;\n    t[\"greater\"] = 570;\n    t[\"question\"] = 500;\n    t[\"at\"] = 930;\n    t[\"A\"] = 722;\n    t[\"B\"] = 667;\n    t[\"C\"] = 722;\n    t[\"D\"] = 722;\n    t[\"E\"] = 667;\n    t[\"F\"] = 611;\n    t[\"G\"] = 778;\n    t[\"H\"] = 778;\n    t[\"I\"] = 389;\n    t[\"J\"] = 500;\n    t[\"K\"] = 778;\n    t[\"L\"] = 667;\n    t[\"M\"] = 944;\n    t[\"N\"] = 722;\n    t[\"O\"] = 778;\n    t[\"P\"] = 611;\n    t[\"Q\"] = 778;\n    t[\"R\"] = 722;\n    t[\"S\"] = 556;\n    t[\"T\"] = 667;\n    t[\"U\"] = 722;\n    t[\"V\"] = 722;\n    t[\"W\"] = 1000;\n    t[\"X\"] = 722;\n    t[\"Y\"] = 722;\n    t[\"Z\"] = 667;\n    t[\"bracketleft\"] = 333;\n    t[\"backslash\"] = 278;\n    t[\"bracketright\"] = 333;\n    t[\"asciicircum\"] = 581;\n    t[\"underscore\"] = 500;\n    t[\"quoteleft\"] = 333;\n    t[\"a\"] = 500;\n    t[\"b\"] = 556;\n    t[\"c\"] = 444;\n    t[\"d\"] = 556;\n    t[\"e\"] = 444;\n    t[\"f\"] = 333;\n    t[\"g\"] = 500;\n    t[\"h\"] = 556;\n    t[\"i\"] = 278;\n    t[\"j\"] = 333;\n    t[\"k\"] = 556;\n    t[\"l\"] = 278;\n    t[\"m\"] = 833;\n    t[\"n\"] = 556;\n    t[\"o\"] = 500;\n    t[\"p\"] = 556;\n    t[\"q\"] = 556;\n    t[\"r\"] = 444;\n    t[\"s\"] = 389;\n    t[\"t\"] = 333;\n    t[\"u\"] = 556;\n    t[\"v\"] = 500;\n    t[\"w\"] = 722;\n    t[\"x\"] = 500;\n    t[\"y\"] = 500;\n    t[\"z\"] = 444;\n    t[\"braceleft\"] = 394;\n    t[\"bar\"] = 220;\n    t[\"braceright\"] = 394;\n    t[\"asciitilde\"] = 520;\n    t[\"exclamdown\"] = 333;\n    t[\"cent\"] = 500;\n    t[\"sterling\"] = 500;\n    t[\"fraction\"] = 167;\n    t[\"yen\"] = 500;\n    t[\"florin\"] = 500;\n    t[\"section\"] = 500;\n    t[\"currency\"] = 500;\n    t[\"quotesingle\"] = 278;\n    t[\"quotedblleft\"] = 500;\n    t[\"guillemotleft\"] = 500;\n    t[\"guilsinglleft\"] = 333;\n    t[\"guilsinglright\"] = 333;\n    t[\"fi\"] = 556;\n    t[\"fl\"] = 556;\n    t[\"endash\"] = 500;\n    t[\"dagger\"] = 500;\n    t[\"daggerdbl\"] = 500;\n    t[\"periodcentered\"] = 250;\n    t[\"paragraph\"] = 540;\n    t[\"bullet\"] = 350;\n    t[\"quotesinglbase\"] = 333;\n    t[\"quotedblbase\"] = 500;\n    t[\"quotedblright\"] = 500;\n    t[\"guillemotright\"] = 500;\n    t[\"ellipsis\"] = 1000;\n    t[\"perthousand\"] = 1000;\n    t[\"questiondown\"] = 500;\n    t[\"grave\"] = 333;\n    t[\"acute\"] = 333;\n    t[\"circumflex\"] = 333;\n    t[\"tilde\"] = 333;\n    t[\"macron\"] = 333;\n    t[\"breve\"] = 333;\n    t[\"dotaccent\"] = 333;\n    t[\"dieresis\"] = 333;\n    t[\"ring\"] = 333;\n    t[\"cedilla\"] = 333;\n    t[\"hungarumlaut\"] = 333;\n    t[\"ogonek\"] = 333;\n    t[\"caron\"] = 333;\n    t[\"emdash\"] = 1000;\n    t[\"AE\"] = 1000;\n    t[\"ordfeminine\"] = 300;\n    t[\"Lslash\"] = 667;\n    t[\"Oslash\"] = 778;\n    t[\"OE\"] = 1000;\n    t[\"ordmasculine\"] = 330;\n    t[\"ae\"] = 722;\n    t[\"dotlessi\"] = 278;\n    t[\"lslash\"] = 278;\n    t[\"oslash\"] = 500;\n    t[\"oe\"] = 722;\n    t[\"germandbls\"] = 556;\n    t[\"Idieresis\"] = 389;\n    t[\"eacute\"] = 444;\n    t[\"abreve\"] = 500;\n    t[\"uhungarumlaut\"] = 556;\n    t[\"ecaron\"] = 444;\n    t[\"Ydieresis\"] = 722;\n    t[\"divide\"] = 570;\n    t[\"Yacute\"] = 722;\n    t[\"Acircumflex\"] = 722;\n    t[\"aacute\"] = 500;\n    t[\"Ucircumflex\"] = 722;\n    t[\"yacute\"] = 500;\n    t[\"scommaaccent\"] = 389;\n    t[\"ecircumflex\"] = 444;\n    t[\"Uring\"] = 722;\n    t[\"Udieresis\"] = 722;\n    t[\"aogonek\"] = 500;\n    t[\"Uacute\"] = 722;\n    t[\"uogonek\"] = 556;\n    t[\"Edieresis\"] = 667;\n    t[\"Dcroat\"] = 722;\n    t[\"commaaccent\"] = 250;\n    t[\"copyright\"] = 747;\n    t[\"Emacron\"] = 667;\n    t[\"ccaron\"] = 444;\n    t[\"aring\"] = 500;\n    t[\"Ncommaaccent\"] = 722;\n    t[\"lacute\"] = 278;\n    t[\"agrave\"] = 500;\n    t[\"Tcommaaccent\"] = 667;\n    t[\"Cacute\"] = 722;\n    t[\"atilde\"] = 500;\n    t[\"Edotaccent\"] = 667;\n    t[\"scaron\"] = 389;\n    t[\"scedilla\"] = 389;\n    t[\"iacute\"] = 278;\n    t[\"lozenge\"] = 494;\n    t[\"Rcaron\"] = 722;\n    t[\"Gcommaaccent\"] = 778;\n    t[\"ucircumflex\"] = 556;\n    t[\"acircumflex\"] = 500;\n    t[\"Amacron\"] = 722;\n    t[\"rcaron\"] = 444;\n    t[\"ccedilla\"] = 444;\n    t[\"Zdotaccent\"] = 667;\n    t[\"Thorn\"] = 611;\n    t[\"Omacron\"] = 778;\n    t[\"Racute\"] = 722;\n    t[\"Sacute\"] = 556;\n    t[\"dcaron\"] = 672;\n    t[\"Umacron\"] = 722;\n    t[\"uring\"] = 556;\n    t[\"threesuperior\"] = 300;\n    t[\"Ograve\"] = 778;\n    t[\"Agrave\"] = 722;\n    t[\"Abreve\"] = 722;\n    t[\"multiply\"] = 570;\n    t[\"uacute\"] = 556;\n    t[\"Tcaron\"] = 667;\n    t[\"partialdiff\"] = 494;\n    t[\"ydieresis\"] = 500;\n    t[\"Nacute\"] = 722;\n    t[\"icircumflex\"] = 278;\n    t[\"Ecircumflex\"] = 667;\n    t[\"adieresis\"] = 500;\n    t[\"edieresis\"] = 444;\n    t[\"cacute\"] = 444;\n    t[\"nacute\"] = 556;\n    t[\"umacron\"] = 556;\n    t[\"Ncaron\"] = 722;\n    t[\"Iacute\"] = 389;\n    t[\"plusminus\"] = 570;\n    t[\"brokenbar\"] = 220;\n    t[\"registered\"] = 747;\n    t[\"Gbreve\"] = 778;\n    t[\"Idotaccent\"] = 389;\n    t[\"summation\"] = 600;\n    t[\"Egrave\"] = 667;\n    t[\"racute\"] = 444;\n    t[\"omacron\"] = 500;\n    t[\"Zacute\"] = 667;\n    t[\"Zcaron\"] = 667;\n    t[\"greaterequal\"] = 549;\n    t[\"Eth\"] = 722;\n    t[\"Ccedilla\"] = 722;\n    t[\"lcommaaccent\"] = 278;\n    t[\"tcaron\"] = 416;\n    t[\"eogonek\"] = 444;\n    t[\"Uogonek\"] = 722;\n    t[\"Aacute\"] = 722;\n    t[\"Adieresis\"] = 722;\n    t[\"egrave\"] = 444;\n    t[\"zacute\"] = 444;\n    t[\"iogonek\"] = 278;\n    t[\"Oacute\"] = 778;\n    t[\"oacute\"] = 500;\n    t[\"amacron\"] = 500;\n    t[\"sacute\"] = 389;\n    t[\"idieresis\"] = 278;\n    t[\"Ocircumflex\"] = 778;\n    t[\"Ugrave\"] = 722;\n    t[\"Delta\"] = 612;\n    t[\"thorn\"] = 556;\n    t[\"twosuperior\"] = 300;\n    t[\"Odieresis\"] = 778;\n    t[\"mu\"] = 556;\n    t[\"igrave\"] = 278;\n    t[\"ohungarumlaut\"] = 500;\n    t[\"Eogonek\"] = 667;\n    t[\"dcroat\"] = 556;\n    t[\"threequarters\"] = 750;\n    t[\"Scedilla\"] = 556;\n    t[\"lcaron\"] = 394;\n    t[\"Kcommaaccent\"] = 778;\n    t[\"Lacute\"] = 667;\n    t[\"trademark\"] = 1000;\n    t[\"edotaccent\"] = 444;\n    t[\"Igrave\"] = 389;\n    t[\"Imacron\"] = 389;\n    t[\"Lcaron\"] = 667;\n    t[\"onehalf\"] = 750;\n    t[\"lessequal\"] = 549;\n    t[\"ocircumflex\"] = 500;\n    t[\"ntilde\"] = 556;\n    t[\"Uhungarumlaut\"] = 722;\n    t[\"Eacute\"] = 667;\n    t[\"emacron\"] = 444;\n    t[\"gbreve\"] = 500;\n    t[\"onequarter\"] = 750;\n    t[\"Scaron\"] = 556;\n    t[\"Scommaaccent\"] = 556;\n    t[\"Ohungarumlaut\"] = 778;\n    t[\"degree\"] = 400;\n    t[\"ograve\"] = 500;\n    t[\"Ccaron\"] = 722;\n    t[\"ugrave\"] = 556;\n    t[\"radical\"] = 549;\n    t[\"Dcaron\"] = 722;\n    t[\"rcommaaccent\"] = 444;\n    t[\"Ntilde\"] = 722;\n    t[\"otilde\"] = 500;\n    t[\"Rcommaaccent\"] = 722;\n    t[\"Lcommaaccent\"] = 667;\n    t[\"Atilde\"] = 722;\n    t[\"Aogonek\"] = 722;\n    t[\"Aring\"] = 722;\n    t[\"Otilde\"] = 778;\n    t[\"zdotaccent\"] = 444;\n    t[\"Ecaron\"] = 667;\n    t[\"Iogonek\"] = 389;\n    t[\"kcommaaccent\"] = 556;\n    t[\"minus\"] = 570;\n    t[\"Icircumflex\"] = 389;\n    t[\"ncaron\"] = 556;\n    t[\"tcommaaccent\"] = 333;\n    t[\"logicalnot\"] = 570;\n    t[\"odieresis\"] = 500;\n    t[\"udieresis\"] = 556;\n    t[\"notequal\"] = 549;\n    t[\"gcommaaccent\"] = 500;\n    t[\"eth\"] = 500;\n    t[\"zcaron\"] = 444;\n    t[\"ncommaaccent\"] = 556;\n    t[\"onesuperior\"] = 300;\n    t[\"imacron\"] = 278;\n    t[\"Euro\"] = 500;\n  });\n  t[\"Times-BoldItalic\"] = getLookupTableFactory(function(t) {\n    t[\"space\"] = 250;\n    t[\"exclam\"] = 389;\n    t[\"quotedbl\"] = 555;\n    t[\"numbersign\"] = 500;\n    t[\"dollar\"] = 500;\n    t[\"percent\"] = 833;\n    t[\"ampersand\"] = 778;\n    t[\"quoteright\"] = 333;\n    t[\"parenleft\"] = 333;\n    t[\"parenright\"] = 333;\n    t[\"asterisk\"] = 500;\n    t[\"plus\"] = 570;\n    t[\"comma\"] = 250;\n    t[\"hyphen\"] = 333;\n    t[\"period\"] = 250;\n    t[\"slash\"] = 278;\n    t[\"zero\"] = 500;\n    t[\"one\"] = 500;\n    t[\"two\"] = 500;\n    t[\"three\"] = 500;\n    t[\"four\"] = 500;\n    t[\"five\"] = 500;\n    t[\"six\"] = 500;\n    t[\"seven\"] = 500;\n    t[\"eight\"] = 500;\n    t[\"nine\"] = 500;\n    t[\"colon\"] = 333;\n    t[\"semicolon\"] = 333;\n    t[\"less\"] = 570;\n    t[\"equal\"] = 570;\n    t[\"greater\"] = 570;\n    t[\"question\"] = 500;\n    t[\"at\"] = 832;\n    t[\"A\"] = 667;\n    t[\"B\"] = 667;\n    t[\"C\"] = 667;\n    t[\"D\"] = 722;\n    t[\"E\"] = 667;\n    t[\"F\"] = 667;\n    t[\"G\"] = 722;\n    t[\"H\"] = 778;\n    t[\"I\"] = 389;\n    t[\"J\"] = 500;\n    t[\"K\"] = 667;\n    t[\"L\"] = 611;\n    t[\"M\"] = 889;\n    t[\"N\"] = 722;\n    t[\"O\"] = 722;\n    t[\"P\"] = 611;\n    t[\"Q\"] = 722;\n    t[\"R\"] = 667;\n    t[\"S\"] = 556;\n    t[\"T\"] = 611;\n    t[\"U\"] = 722;\n    t[\"V\"] = 667;\n    t[\"W\"] = 889;\n    t[\"X\"] = 667;\n    t[\"Y\"] = 611;\n    t[\"Z\"] = 611;\n    t[\"bracketleft\"] = 333;\n    t[\"backslash\"] = 278;\n    t[\"bracketright\"] = 333;\n    t[\"asciicircum\"] = 570;\n    t[\"underscore\"] = 500;\n    t[\"quoteleft\"] = 333;\n    t[\"a\"] = 500;\n    t[\"b\"] = 500;\n    t[\"c\"] = 444;\n    t[\"d\"] = 500;\n    t[\"e\"] = 444;\n    t[\"f\"] = 333;\n    t[\"g\"] = 500;\n    t[\"h\"] = 556;\n    t[\"i\"] = 278;\n    t[\"j\"] = 278;\n    t[\"k\"] = 500;\n    t[\"l\"] = 278;\n    t[\"m\"] = 778;\n    t[\"n\"] = 556;\n    t[\"o\"] = 500;\n    t[\"p\"] = 500;\n    t[\"q\"] = 500;\n    t[\"r\"] = 389;\n    t[\"s\"] = 389;\n    t[\"t\"] = 278;\n    t[\"u\"] = 556;\n    t[\"v\"] = 444;\n    t[\"w\"] = 667;\n    t[\"x\"] = 500;\n    t[\"y\"] = 444;\n    t[\"z\"] = 389;\n    t[\"braceleft\"] = 348;\n    t[\"bar\"] = 220;\n    t[\"braceright\"] = 348;\n    t[\"asciitilde\"] = 570;\n    t[\"exclamdown\"] = 389;\n    t[\"cent\"] = 500;\n    t[\"sterling\"] = 500;\n    t[\"fraction\"] = 167;\n    t[\"yen\"] = 500;\n    t[\"florin\"] = 500;\n    t[\"section\"] = 500;\n    t[\"currency\"] = 500;\n    t[\"quotesingle\"] = 278;\n    t[\"quotedblleft\"] = 500;\n    t[\"guillemotleft\"] = 500;\n    t[\"guilsinglleft\"] = 333;\n    t[\"guilsinglright\"] = 333;\n    t[\"fi\"] = 556;\n    t[\"fl\"] = 556;\n    t[\"endash\"] = 500;\n    t[\"dagger\"] = 500;\n    t[\"daggerdbl\"] = 500;\n    t[\"periodcentered\"] = 250;\n    t[\"paragraph\"] = 500;\n    t[\"bullet\"] = 350;\n    t[\"quotesinglbase\"] = 333;\n    t[\"quotedblbase\"] = 500;\n    t[\"quotedblright\"] = 500;\n    t[\"guillemotright\"] = 500;\n    t[\"ellipsis\"] = 1000;\n    t[\"perthousand\"] = 1000;\n    t[\"questiondown\"] = 500;\n    t[\"grave\"] = 333;\n    t[\"acute\"] = 333;\n    t[\"circumflex\"] = 333;\n    t[\"tilde\"] = 333;\n    t[\"macron\"] = 333;\n    t[\"breve\"] = 333;\n    t[\"dotaccent\"] = 333;\n    t[\"dieresis\"] = 333;\n    t[\"ring\"] = 333;\n    t[\"cedilla\"] = 333;\n    t[\"hungarumlaut\"] = 333;\n    t[\"ogonek\"] = 333;\n    t[\"caron\"] = 333;\n    t[\"emdash\"] = 1000;\n    t[\"AE\"] = 944;\n    t[\"ordfeminine\"] = 266;\n    t[\"Lslash\"] = 611;\n    t[\"Oslash\"] = 722;\n    t[\"OE\"] = 944;\n    t[\"ordmasculine\"] = 300;\n    t[\"ae\"] = 722;\n    t[\"dotlessi\"] = 278;\n    t[\"lslash\"] = 278;\n    t[\"oslash\"] = 500;\n    t[\"oe\"] = 722;\n    t[\"germandbls\"] = 500;\n    t[\"Idieresis\"] = 389;\n    t[\"eacute\"] = 444;\n    t[\"abreve\"] = 500;\n    t[\"uhungarumlaut\"] = 556;\n    t[\"ecaron\"] = 444;\n    t[\"Ydieresis\"] = 611;\n    t[\"divide\"] = 570;\n    t[\"Yacute\"] = 611;\n    t[\"Acircumflex\"] = 667;\n    t[\"aacute\"] = 500;\n    t[\"Ucircumflex\"] = 722;\n    t[\"yacute\"] = 444;\n    t[\"scommaaccent\"] = 389;\n    t[\"ecircumflex\"] = 444;\n    t[\"Uring\"] = 722;\n    t[\"Udieresis\"] = 722;\n    t[\"aogonek\"] = 500;\n    t[\"Uacute\"] = 722;\n    t[\"uogonek\"] = 556;\n    t[\"Edieresis\"] = 667;\n    t[\"Dcroat\"] = 722;\n    t[\"commaaccent\"] = 250;\n    t[\"copyright\"] = 747;\n    t[\"Emacron\"] = 667;\n    t[\"ccaron\"] = 444;\n    t[\"aring\"] = 500;\n    t[\"Ncommaaccent\"] = 722;\n    t[\"lacute\"] = 278;\n    t[\"agrave\"] = 500;\n    t[\"Tcommaaccent\"] = 611;\n    t[\"Cacute\"] = 667;\n    t[\"atilde\"] = 500;\n    t[\"Edotaccent\"] = 667;\n    t[\"scaron\"] = 389;\n    t[\"scedilla\"] = 389;\n    t[\"iacute\"] = 278;\n    t[\"lozenge\"] = 494;\n    t[\"Rcaron\"] = 667;\n    t[\"Gcommaaccent\"] = 722;\n    t[\"ucircumflex\"] = 556;\n    t[\"acircumflex\"] = 500;\n    t[\"Amacron\"] = 667;\n    t[\"rcaron\"] = 389;\n    t[\"ccedilla\"] = 444;\n    t[\"Zdotaccent\"] = 611;\n    t[\"Thorn\"] = 611;\n    t[\"Omacron\"] = 722;\n    t[\"Racute\"] = 667;\n    t[\"Sacute\"] = 556;\n    t[\"dcaron\"] = 608;\n    t[\"Umacron\"] = 722;\n    t[\"uring\"] = 556;\n    t[\"threesuperior\"] = 300;\n    t[\"Ograve\"] = 722;\n    t[\"Agrave\"] = 667;\n    t[\"Abreve\"] = 667;\n    t[\"multiply\"] = 570;\n    t[\"uacute\"] = 556;\n    t[\"Tcaron\"] = 611;\n    t[\"partialdiff\"] = 494;\n    t[\"ydieresis\"] = 444;\n    t[\"Nacute\"] = 722;\n    t[\"icircumflex\"] = 278;\n    t[\"Ecircumflex\"] = 667;\n    t[\"adieresis\"] = 500;\n    t[\"edieresis\"] = 444;\n    t[\"cacute\"] = 444;\n    t[\"nacute\"] = 556;\n    t[\"umacron\"] = 556;\n    t[\"Ncaron\"] = 722;\n    t[\"Iacute\"] = 389;\n    t[\"plusminus\"] = 570;\n    t[\"brokenbar\"] = 220;\n    t[\"registered\"] = 747;\n    t[\"Gbreve\"] = 722;\n    t[\"Idotaccent\"] = 389;\n    t[\"summation\"] = 600;\n    t[\"Egrave\"] = 667;\n    t[\"racute\"] = 389;\n    t[\"omacron\"] = 500;\n    t[\"Zacute\"] = 611;\n    t[\"Zcaron\"] = 611;\n    t[\"greaterequal\"] = 549;\n    t[\"Eth\"] = 722;\n    t[\"Ccedilla\"] = 667;\n    t[\"lcommaaccent\"] = 278;\n    t[\"tcaron\"] = 366;\n    t[\"eogonek\"] = 444;\n    t[\"Uogonek\"] = 722;\n    t[\"Aacute\"] = 667;\n    t[\"Adieresis\"] = 667;\n    t[\"egrave\"] = 444;\n    t[\"zacute\"] = 389;\n    t[\"iogonek\"] = 278;\n    t[\"Oacute\"] = 722;\n    t[\"oacute\"] = 500;\n    t[\"amacron\"] = 500;\n    t[\"sacute\"] = 389;\n    t[\"idieresis\"] = 278;\n    t[\"Ocircumflex\"] = 722;\n    t[\"Ugrave\"] = 722;\n    t[\"Delta\"] = 612;\n    t[\"thorn\"] = 500;\n    t[\"twosuperior\"] = 300;\n    t[\"Odieresis\"] = 722;\n    t[\"mu\"] = 576;\n    t[\"igrave\"] = 278;\n    t[\"ohungarumlaut\"] = 500;\n    t[\"Eogonek\"] = 667;\n    t[\"dcroat\"] = 500;\n    t[\"threequarters\"] = 750;\n    t[\"Scedilla\"] = 556;\n    t[\"lcaron\"] = 382;\n    t[\"Kcommaaccent\"] = 667;\n    t[\"Lacute\"] = 611;\n    t[\"trademark\"] = 1000;\n    t[\"edotaccent\"] = 444;\n    t[\"Igrave\"] = 389;\n    t[\"Imacron\"] = 389;\n    t[\"Lcaron\"] = 611;\n    t[\"onehalf\"] = 750;\n    t[\"lessequal\"] = 549;\n    t[\"ocircumflex\"] = 500;\n    t[\"ntilde\"] = 556;\n    t[\"Uhungarumlaut\"] = 722;\n    t[\"Eacute\"] = 667;\n    t[\"emacron\"] = 444;\n    t[\"gbreve\"] = 500;\n    t[\"onequarter\"] = 750;\n    t[\"Scaron\"] = 556;\n    t[\"Scommaaccent\"] = 556;\n    t[\"Ohungarumlaut\"] = 722;\n    t[\"degree\"] = 400;\n    t[\"ograve\"] = 500;\n    t[\"Ccaron\"] = 667;\n    t[\"ugrave\"] = 556;\n    t[\"radical\"] = 549;\n    t[\"Dcaron\"] = 722;\n    t[\"rcommaaccent\"] = 389;\n    t[\"Ntilde\"] = 722;\n    t[\"otilde\"] = 500;\n    t[\"Rcommaaccent\"] = 667;\n    t[\"Lcommaaccent\"] = 611;\n    t[\"Atilde\"] = 667;\n    t[\"Aogonek\"] = 667;\n    t[\"Aring\"] = 667;\n    t[\"Otilde\"] = 722;\n    t[\"zdotaccent\"] = 389;\n    t[\"Ecaron\"] = 667;\n    t[\"Iogonek\"] = 389;\n    t[\"kcommaaccent\"] = 500;\n    t[\"minus\"] = 606;\n    t[\"Icircumflex\"] = 389;\n    t[\"ncaron\"] = 556;\n    t[\"tcommaaccent\"] = 278;\n    t[\"logicalnot\"] = 606;\n    t[\"odieresis\"] = 500;\n    t[\"udieresis\"] = 556;\n    t[\"notequal\"] = 549;\n    t[\"gcommaaccent\"] = 500;\n    t[\"eth\"] = 500;\n    t[\"zcaron\"] = 389;\n    t[\"ncommaaccent\"] = 556;\n    t[\"onesuperior\"] = 300;\n    t[\"imacron\"] = 278;\n    t[\"Euro\"] = 500;\n  });\n  t[\"Times-Italic\"] = getLookupTableFactory(function(t) {\n    t[\"space\"] = 250;\n    t[\"exclam\"] = 333;\n    t[\"quotedbl\"] = 420;\n    t[\"numbersign\"] = 500;\n    t[\"dollar\"] = 500;\n    t[\"percent\"] = 833;\n    t[\"ampersand\"] = 778;\n    t[\"quoteright\"] = 333;\n    t[\"parenleft\"] = 333;\n    t[\"parenright\"] = 333;\n    t[\"asterisk\"] = 500;\n    t[\"plus\"] = 675;\n    t[\"comma\"] = 250;\n    t[\"hyphen\"] = 333;\n    t[\"period\"] = 250;\n    t[\"slash\"] = 278;\n    t[\"zero\"] = 500;\n    t[\"one\"] = 500;\n    t[\"two\"] = 500;\n    t[\"three\"] = 500;\n    t[\"four\"] = 500;\n    t[\"five\"] = 500;\n    t[\"six\"] = 500;\n    t[\"seven\"] = 500;\n    t[\"eight\"] = 500;\n    t[\"nine\"] = 500;\n    t[\"colon\"] = 333;\n    t[\"semicolon\"] = 333;\n    t[\"less\"] = 675;\n    t[\"equal\"] = 675;\n    t[\"greater\"] = 675;\n    t[\"question\"] = 500;\n    t[\"at\"] = 920;\n    t[\"A\"] = 611;\n    t[\"B\"] = 611;\n    t[\"C\"] = 667;\n    t[\"D\"] = 722;\n    t[\"E\"] = 611;\n    t[\"F\"] = 611;\n    t[\"G\"] = 722;\n    t[\"H\"] = 722;\n    t[\"I\"] = 333;\n    t[\"J\"] = 444;\n    t[\"K\"] = 667;\n    t[\"L\"] = 556;\n    t[\"M\"] = 833;\n    t[\"N\"] = 667;\n    t[\"O\"] = 722;\n    t[\"P\"] = 611;\n    t[\"Q\"] = 722;\n    t[\"R\"] = 611;\n    t[\"S\"] = 500;\n    t[\"T\"] = 556;\n    t[\"U\"] = 722;\n    t[\"V\"] = 611;\n    t[\"W\"] = 833;\n    t[\"X\"] = 611;\n    t[\"Y\"] = 556;\n    t[\"Z\"] = 556;\n    t[\"bracketleft\"] = 389;\n    t[\"backslash\"] = 278;\n    t[\"bracketright\"] = 389;\n    t[\"asciicircum\"] = 422;\n    t[\"underscore\"] = 500;\n    t[\"quoteleft\"] = 333;\n    t[\"a\"] = 500;\n    t[\"b\"] = 500;\n    t[\"c\"] = 444;\n    t[\"d\"] = 500;\n    t[\"e\"] = 444;\n    t[\"f\"] = 278;\n    t[\"g\"] = 500;\n    t[\"h\"] = 500;\n    t[\"i\"] = 278;\n    t[\"j\"] = 278;\n    t[\"k\"] = 444;\n    t[\"l\"] = 278;\n    t[\"m\"] = 722;\n    t[\"n\"] = 500;\n    t[\"o\"] = 500;\n    t[\"p\"] = 500;\n    t[\"q\"] = 500;\n    t[\"r\"] = 389;\n    t[\"s\"] = 389;\n    t[\"t\"] = 278;\n    t[\"u\"] = 500;\n    t[\"v\"] = 444;\n    t[\"w\"] = 667;\n    t[\"x\"] = 444;\n    t[\"y\"] = 444;\n    t[\"z\"] = 389;\n    t[\"braceleft\"] = 400;\n    t[\"bar\"] = 275;\n    t[\"braceright\"] = 400;\n    t[\"asciitilde\"] = 541;\n    t[\"exclamdown\"] = 389;\n    t[\"cent\"] = 500;\n    t[\"sterling\"] = 500;\n    t[\"fraction\"] = 167;\n    t[\"yen\"] = 500;\n    t[\"florin\"] = 500;\n    t[\"section\"] = 500;\n    t[\"currency\"] = 500;\n    t[\"quotesingle\"] = 214;\n    t[\"quotedblleft\"] = 556;\n    t[\"guillemotleft\"] = 500;\n    t[\"guilsinglleft\"] = 333;\n    t[\"guilsinglright\"] = 333;\n    t[\"fi\"] = 500;\n    t[\"fl\"] = 500;\n    t[\"endash\"] = 500;\n    t[\"dagger\"] = 500;\n    t[\"daggerdbl\"] = 500;\n    t[\"periodcentered\"] = 250;\n    t[\"paragraph\"] = 523;\n    t[\"bullet\"] = 350;\n    t[\"quotesinglbase\"] = 333;\n    t[\"quotedblbase\"] = 556;\n    t[\"quotedblright\"] = 556;\n    t[\"guillemotright\"] = 500;\n    t[\"ellipsis\"] = 889;\n    t[\"perthousand\"] = 1000;\n    t[\"questiondown\"] = 500;\n    t[\"grave\"] = 333;\n    t[\"acute\"] = 333;\n    t[\"circumflex\"] = 333;\n    t[\"tilde\"] = 333;\n    t[\"macron\"] = 333;\n    t[\"breve\"] = 333;\n    t[\"dotaccent\"] = 333;\n    t[\"dieresis\"] = 333;\n    t[\"ring\"] = 333;\n    t[\"cedilla\"] = 333;\n    t[\"hungarumlaut\"] = 333;\n    t[\"ogonek\"] = 333;\n    t[\"caron\"] = 333;\n    t[\"emdash\"] = 889;\n    t[\"AE\"] = 889;\n    t[\"ordfeminine\"] = 276;\n    t[\"Lslash\"] = 556;\n    t[\"Oslash\"] = 722;\n    t[\"OE\"] = 944;\n    t[\"ordmasculine\"] = 310;\n    t[\"ae\"] = 667;\n    t[\"dotlessi\"] = 278;\n    t[\"lslash\"] = 278;\n    t[\"oslash\"] = 500;\n    t[\"oe\"] = 667;\n    t[\"germandbls\"] = 500;\n    t[\"Idieresis\"] = 333;\n    t[\"eacute\"] = 444;\n    t[\"abreve\"] = 500;\n    t[\"uhungarumlaut\"] = 500;\n    t[\"ecaron\"] = 444;\n    t[\"Ydieresis\"] = 556;\n    t[\"divide\"] = 675;\n    t[\"Yacute\"] = 556;\n    t[\"Acircumflex\"] = 611;\n    t[\"aacute\"] = 500;\n    t[\"Ucircumflex\"] = 722;\n    t[\"yacute\"] = 444;\n    t[\"scommaaccent\"] = 389;\n    t[\"ecircumflex\"] = 444;\n    t[\"Uring\"] = 722;\n    t[\"Udieresis\"] = 722;\n    t[\"aogonek\"] = 500;\n    t[\"Uacute\"] = 722;\n    t[\"uogonek\"] = 500;\n    t[\"Edieresis\"] = 611;\n    t[\"Dcroat\"] = 722;\n    t[\"commaaccent\"] = 250;\n    t[\"copyright\"] = 760;\n    t[\"Emacron\"] = 611;\n    t[\"ccaron\"] = 444;\n    t[\"aring\"] = 500;\n    t[\"Ncommaaccent\"] = 667;\n    t[\"lacute\"] = 278;\n    t[\"agrave\"] = 500;\n    t[\"Tcommaaccent\"] = 556;\n    t[\"Cacute\"] = 667;\n    t[\"atilde\"] = 500;\n    t[\"Edotaccent\"] = 611;\n    t[\"scaron\"] = 389;\n    t[\"scedilla\"] = 389;\n    t[\"iacute\"] = 278;\n    t[\"lozenge\"] = 471;\n    t[\"Rcaron\"] = 611;\n    t[\"Gcommaaccent\"] = 722;\n    t[\"ucircumflex\"] = 500;\n    t[\"acircumflex\"] = 500;\n    t[\"Amacron\"] = 611;\n    t[\"rcaron\"] = 389;\n    t[\"ccedilla\"] = 444;\n    t[\"Zdotaccent\"] = 556;\n    t[\"Thorn\"] = 611;\n    t[\"Omacron\"] = 722;\n    t[\"Racute\"] = 611;\n    t[\"Sacute\"] = 500;\n    t[\"dcaron\"] = 544;\n    t[\"Umacron\"] = 722;\n    t[\"uring\"] = 500;\n    t[\"threesuperior\"] = 300;\n    t[\"Ograve\"] = 722;\n    t[\"Agrave\"] = 611;\n    t[\"Abreve\"] = 611;\n    t[\"multiply\"] = 675;\n    t[\"uacute\"] = 500;\n    t[\"Tcaron\"] = 556;\n    t[\"partialdiff\"] = 476;\n    t[\"ydieresis\"] = 444;\n    t[\"Nacute\"] = 667;\n    t[\"icircumflex\"] = 278;\n    t[\"Ecircumflex\"] = 611;\n    t[\"adieresis\"] = 500;\n    t[\"edieresis\"] = 444;\n    t[\"cacute\"] = 444;\n    t[\"nacute\"] = 500;\n    t[\"umacron\"] = 500;\n    t[\"Ncaron\"] = 667;\n    t[\"Iacute\"] = 333;\n    t[\"plusminus\"] = 675;\n    t[\"brokenbar\"] = 275;\n    t[\"registered\"] = 760;\n    t[\"Gbreve\"] = 722;\n    t[\"Idotaccent\"] = 333;\n    t[\"summation\"] = 600;\n    t[\"Egrave\"] = 611;\n    t[\"racute\"] = 389;\n    t[\"omacron\"] = 500;\n    t[\"Zacute\"] = 556;\n    t[\"Zcaron\"] = 556;\n    t[\"greaterequal\"] = 549;\n    t[\"Eth\"] = 722;\n    t[\"Ccedilla\"] = 667;\n    t[\"lcommaaccent\"] = 278;\n    t[\"tcaron\"] = 300;\n    t[\"eogonek\"] = 444;\n    t[\"Uogonek\"] = 722;\n    t[\"Aacute\"] = 611;\n    t[\"Adieresis\"] = 611;\n    t[\"egrave\"] = 444;\n    t[\"zacute\"] = 389;\n    t[\"iogonek\"] = 278;\n    t[\"Oacute\"] = 722;\n    t[\"oacute\"] = 500;\n    t[\"amacron\"] = 500;\n    t[\"sacute\"] = 389;\n    t[\"idieresis\"] = 278;\n    t[\"Ocircumflex\"] = 722;\n    t[\"Ugrave\"] = 722;\n    t[\"Delta\"] = 612;\n    t[\"thorn\"] = 500;\n    t[\"twosuperior\"] = 300;\n    t[\"Odieresis\"] = 722;\n    t[\"mu\"] = 500;\n    t[\"igrave\"] = 278;\n    t[\"ohungarumlaut\"] = 500;\n    t[\"Eogonek\"] = 611;\n    t[\"dcroat\"] = 500;\n    t[\"threequarters\"] = 750;\n    t[\"Scedilla\"] = 500;\n    t[\"lcaron\"] = 300;\n    t[\"Kcommaaccent\"] = 667;\n    t[\"Lacute\"] = 556;\n    t[\"trademark\"] = 980;\n    t[\"edotaccent\"] = 444;\n    t[\"Igrave\"] = 333;\n    t[\"Imacron\"] = 333;\n    t[\"Lcaron\"] = 611;\n    t[\"onehalf\"] = 750;\n    t[\"lessequal\"] = 549;\n    t[\"ocircumflex\"] = 500;\n    t[\"ntilde\"] = 500;\n    t[\"Uhungarumlaut\"] = 722;\n    t[\"Eacute\"] = 611;\n    t[\"emacron\"] = 444;\n    t[\"gbreve\"] = 500;\n    t[\"onequarter\"] = 750;\n    t[\"Scaron\"] = 500;\n    t[\"Scommaaccent\"] = 500;\n    t[\"Ohungarumlaut\"] = 722;\n    t[\"degree\"] = 400;\n    t[\"ograve\"] = 500;\n    t[\"Ccaron\"] = 667;\n    t[\"ugrave\"] = 500;\n    t[\"radical\"] = 453;\n    t[\"Dcaron\"] = 722;\n    t[\"rcommaaccent\"] = 389;\n    t[\"Ntilde\"] = 667;\n    t[\"otilde\"] = 500;\n    t[\"Rcommaaccent\"] = 611;\n    t[\"Lcommaaccent\"] = 556;\n    t[\"Atilde\"] = 611;\n    t[\"Aogonek\"] = 611;\n    t[\"Aring\"] = 611;\n    t[\"Otilde\"] = 722;\n    t[\"zdotaccent\"] = 389;\n    t[\"Ecaron\"] = 611;\n    t[\"Iogonek\"] = 333;\n    t[\"kcommaaccent\"] = 444;\n    t[\"minus\"] = 675;\n    t[\"Icircumflex\"] = 333;\n    t[\"ncaron\"] = 500;\n    t[\"tcommaaccent\"] = 278;\n    t[\"logicalnot\"] = 675;\n    t[\"odieresis\"] = 500;\n    t[\"udieresis\"] = 500;\n    t[\"notequal\"] = 549;\n    t[\"gcommaaccent\"] = 500;\n    t[\"eth\"] = 500;\n    t[\"zcaron\"] = 389;\n    t[\"ncommaaccent\"] = 500;\n    t[\"onesuperior\"] = 300;\n    t[\"imacron\"] = 278;\n    t[\"Euro\"] = 500;\n  });\n  t[\"ZapfDingbats\"] = getLookupTableFactory(function(t) {\n    t[\"space\"] = 278;\n    t[\"a1\"] = 974;\n    t[\"a2\"] = 961;\n    t[\"a202\"] = 974;\n    t[\"a3\"] = 980;\n    t[\"a4\"] = 719;\n    t[\"a5\"] = 789;\n    t[\"a119\"] = 790;\n    t[\"a118\"] = 791;\n    t[\"a117\"] = 690;\n    t[\"a11\"] = 960;\n    t[\"a12\"] = 939;\n    t[\"a13\"] = 549;\n    t[\"a14\"] = 855;\n    t[\"a15\"] = 911;\n    t[\"a16\"] = 933;\n    t[\"a105\"] = 911;\n    t[\"a17\"] = 945;\n    t[\"a18\"] = 974;\n    t[\"a19\"] = 755;\n    t[\"a20\"] = 846;\n    t[\"a21\"] = 762;\n    t[\"a22\"] = 761;\n    t[\"a23\"] = 571;\n    t[\"a24\"] = 677;\n    t[\"a25\"] = 763;\n    t[\"a26\"] = 760;\n    t[\"a27\"] = 759;\n    t[\"a28\"] = 754;\n    t[\"a6\"] = 494;\n    t[\"a7\"] = 552;\n    t[\"a8\"] = 537;\n    t[\"a9\"] = 577;\n    t[\"a10\"] = 692;\n    t[\"a29\"] = 786;\n    t[\"a30\"] = 788;\n    t[\"a31\"] = 788;\n    t[\"a32\"] = 790;\n    t[\"a33\"] = 793;\n    t[\"a34\"] = 794;\n    t[\"a35\"] = 816;\n    t[\"a36\"] = 823;\n    t[\"a37\"] = 789;\n    t[\"a38\"] = 841;\n    t[\"a39\"] = 823;\n    t[\"a40\"] = 833;\n    t[\"a41\"] = 816;\n    t[\"a42\"] = 831;\n    t[\"a43\"] = 923;\n    t[\"a44\"] = 744;\n    t[\"a45\"] = 723;\n    t[\"a46\"] = 749;\n    t[\"a47\"] = 790;\n    t[\"a48\"] = 792;\n    t[\"a49\"] = 695;\n    t[\"a50\"] = 776;\n    t[\"a51\"] = 768;\n    t[\"a52\"] = 792;\n    t[\"a53\"] = 759;\n    t[\"a54\"] = 707;\n    t[\"a55\"] = 708;\n    t[\"a56\"] = 682;\n    t[\"a57\"] = 701;\n    t[\"a58\"] = 826;\n    t[\"a59\"] = 815;\n    t[\"a60\"] = 789;\n    t[\"a61\"] = 789;\n    t[\"a62\"] = 707;\n    t[\"a63\"] = 687;\n    t[\"a64\"] = 696;\n    t[\"a65\"] = 689;\n    t[\"a66\"] = 786;\n    t[\"a67\"] = 787;\n    t[\"a68\"] = 713;\n    t[\"a69\"] = 791;\n    t[\"a70\"] = 785;\n    t[\"a71\"] = 791;\n    t[\"a72\"] = 873;\n    t[\"a73\"] = 761;\n    t[\"a74\"] = 762;\n    t[\"a203\"] = 762;\n    t[\"a75\"] = 759;\n    t[\"a204\"] = 759;\n    t[\"a76\"] = 892;\n    t[\"a77\"] = 892;\n    t[\"a78\"] = 788;\n    t[\"a79\"] = 784;\n    t[\"a81\"] = 438;\n    t[\"a82\"] = 138;\n    t[\"a83\"] = 277;\n    t[\"a84\"] = 415;\n    t[\"a97\"] = 392;\n    t[\"a98\"] = 392;\n    t[\"a99\"] = 668;\n    t[\"a100\"] = 668;\n    t[\"a89\"] = 390;\n    t[\"a90\"] = 390;\n    t[\"a93\"] = 317;\n    t[\"a94\"] = 317;\n    t[\"a91\"] = 276;\n    t[\"a92\"] = 276;\n    t[\"a205\"] = 509;\n    t[\"a85\"] = 509;\n    t[\"a206\"] = 410;\n    t[\"a86\"] = 410;\n    t[\"a87\"] = 234;\n    t[\"a88\"] = 234;\n    t[\"a95\"] = 334;\n    t[\"a96\"] = 334;\n    t[\"a101\"] = 732;\n    t[\"a102\"] = 544;\n    t[\"a103\"] = 544;\n    t[\"a104\"] = 910;\n    t[\"a106\"] = 667;\n    t[\"a107\"] = 760;\n    t[\"a108\"] = 760;\n    t[\"a112\"] = 776;\n    t[\"a111\"] = 595;\n    t[\"a110\"] = 694;\n    t[\"a109\"] = 626;\n    t[\"a120\"] = 788;\n    t[\"a121\"] = 788;\n    t[\"a122\"] = 788;\n    t[\"a123\"] = 788;\n    t[\"a124\"] = 788;\n    t[\"a125\"] = 788;\n    t[\"a126\"] = 788;\n    t[\"a127\"] = 788;\n    t[\"a128\"] = 788;\n    t[\"a129\"] = 788;\n    t[\"a130\"] = 788;\n    t[\"a131\"] = 788;\n    t[\"a132\"] = 788;\n    t[\"a133\"] = 788;\n    t[\"a134\"] = 788;\n    t[\"a135\"] = 788;\n    t[\"a136\"] = 788;\n    t[\"a137\"] = 788;\n    t[\"a138\"] = 788;\n    t[\"a139\"] = 788;\n    t[\"a140\"] = 788;\n    t[\"a141\"] = 788;\n    t[\"a142\"] = 788;\n    t[\"a143\"] = 788;\n    t[\"a144\"] = 788;\n    t[\"a145\"] = 788;\n    t[\"a146\"] = 788;\n    t[\"a147\"] = 788;\n    t[\"a148\"] = 788;\n    t[\"a149\"] = 788;\n    t[\"a150\"] = 788;\n    t[\"a151\"] = 788;\n    t[\"a152\"] = 788;\n    t[\"a153\"] = 788;\n    t[\"a154\"] = 788;\n    t[\"a155\"] = 788;\n    t[\"a156\"] = 788;\n    t[\"a157\"] = 788;\n    t[\"a158\"] = 788;\n    t[\"a159\"] = 788;\n    t[\"a160\"] = 894;\n    t[\"a161\"] = 838;\n    t[\"a163\"] = 1016;\n    t[\"a164\"] = 458;\n    t[\"a196\"] = 748;\n    t[\"a165\"] = 924;\n    t[\"a192\"] = 748;\n    t[\"a166\"] = 918;\n    t[\"a167\"] = 927;\n    t[\"a168\"] = 928;\n    t[\"a169\"] = 928;\n    t[\"a170\"] = 834;\n    t[\"a171\"] = 873;\n    t[\"a172\"] = 828;\n    t[\"a173\"] = 924;\n    t[\"a162\"] = 924;\n    t[\"a174\"] = 917;\n    t[\"a175\"] = 930;\n    t[\"a176\"] = 931;\n    t[\"a177\"] = 463;\n    t[\"a178\"] = 883;\n    t[\"a179\"] = 836;\n    t[\"a193\"] = 836;\n    t[\"a180\"] = 867;\n    t[\"a199\"] = 867;\n    t[\"a181\"] = 696;\n    t[\"a200\"] = 696;\n    t[\"a182\"] = 874;\n    t[\"a201\"] = 874;\n    t[\"a183\"] = 760;\n    t[\"a184\"] = 946;\n    t[\"a197\"] = 771;\n    t[\"a185\"] = 865;\n    t[\"a194\"] = 771;\n    t[\"a198\"] = 888;\n    t[\"a186\"] = 967;\n    t[\"a195\"] = 888;\n    t[\"a187\"] = 831;\n    t[\"a188\"] = 873;\n    t[\"a189\"] = 927;\n    t[\"a190\"] = 970;\n    t[\"a191\"] = 918;\n  });\n});\n\nexport { getMetrics };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  FormatError,\n  info,\n  isBool,\n  IsEvalSupportedCached,\n  unreachable,\n} from \"../shared/util.js\";\nimport { isDict, isStream } from \"./primitives.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\n\nclass PDFFunctionFactory {\n  constructor({ xref, isEvalSupported = true }) {\n    this.xref = xref;\n    this.isEvalSupported = isEvalSupported !== false;\n  }\n\n  create(fn) {\n    return PDFFunction.parse({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fn,\n    });\n  }\n\n  createFromArray(fnObj) {\n    return PDFFunction.parseArray({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fnObj,\n    });\n  }\n}\n\nfunction toNumberArray(arr) {\n  if (!Array.isArray(arr)) {\n    return null;\n  }\n  const length = arr.length;\n  for (let i = 0; i < length; i++) {\n    if (typeof arr[i] !== \"number\") {\n      // Non-number is found -- convert all items to numbers.\n      const result = new Array(length);\n      for (let i = 0; i < length; i++) {\n        result[i] = +arr[i];\n      }\n      return result;\n    }\n  }\n  return arr;\n}\n\nvar PDFFunction = (function PDFFunctionClosure() {\n  const CONSTRUCT_SAMPLED = 0;\n  const CONSTRUCT_INTERPOLATED = 2;\n  const CONSTRUCT_STICHED = 3;\n  const CONSTRUCT_POSTSCRIPT = 4;\n\n  return {\n    getSampleArray(size, outputSize, bps, stream) {\n      var i, ii;\n      var length = 1;\n      for (i = 0, ii = size.length; i < ii; i++) {\n        length *= size[i];\n      }\n      length *= outputSize;\n\n      var array = new Array(length);\n      var codeSize = 0;\n      var codeBuf = 0;\n      // 32 is a valid bps so shifting won't work\n      var sampleMul = 1.0 / (2.0 ** bps - 1);\n\n      var strBytes = stream.getBytes((length * bps + 7) / 8);\n      var strIdx = 0;\n      for (i = 0; i < length; i++) {\n        while (codeSize < bps) {\n          codeBuf <<= 8;\n          codeBuf |= strBytes[strIdx++];\n          codeSize += 8;\n        }\n        codeSize -= bps;\n        array[i] = (codeBuf >> codeSize) * sampleMul;\n        codeBuf &= (1 << codeSize) - 1;\n      }\n      return array;\n    },\n\n    getIR({ xref, isEvalSupported, fn }) {\n      var dict = fn.dict;\n      if (!dict) {\n        dict = fn;\n      }\n\n      var types = [\n        this.constructSampled,\n        null,\n        this.constructInterpolated,\n        this.constructStiched,\n        this.constructPostScript,\n      ];\n\n      var typeNum = dict.get(\"FunctionType\");\n      var typeFn = types[typeNum];\n      if (!typeFn) {\n        throw new FormatError(\"Unknown type of function\");\n      }\n\n      return typeFn.call(this, { xref, isEvalSupported, fn, dict });\n    },\n\n    fromIR({ xref, isEvalSupported, IR }) {\n      var type = IR[0];\n      switch (type) {\n        case CONSTRUCT_SAMPLED:\n          return this.constructSampledFromIR({ xref, isEvalSupported, IR });\n        case CONSTRUCT_INTERPOLATED:\n          return this.constructInterpolatedFromIR({\n            xref,\n            isEvalSupported,\n            IR,\n          });\n        case CONSTRUCT_STICHED:\n          return this.constructStichedFromIR({ xref, isEvalSupported, IR });\n        // case CONSTRUCT_POSTSCRIPT:\n        default:\n          return this.constructPostScriptFromIR({ xref, isEvalSupported, IR });\n      }\n    },\n\n    parse({ xref, isEvalSupported, fn }) {\n      const IR = this.getIR({ xref, isEvalSupported, fn });\n      return this.fromIR({ xref, isEvalSupported, IR });\n    },\n\n    parseArray({ xref, isEvalSupported, fnObj }) {\n      if (!Array.isArray(fnObj)) {\n        // not an array -- parsing as regular function\n        return this.parse({ xref, isEvalSupported, fn: fnObj });\n      }\n\n      var fnArray = [];\n      for (var j = 0, jj = fnObj.length; j < jj; j++) {\n        fnArray.push(\n          this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n        );\n      }\n      return function(src, srcOffset, dest, destOffset) {\n        for (var i = 0, ii = fnArray.length; i < ii; i++) {\n          fnArray[i](src, srcOffset, dest, destOffset + i);\n        }\n      };\n    },\n\n    constructSampled({ xref, isEvalSupported, fn, dict }) {\n      function toMultiArray(arr) {\n        var inputLength = arr.length;\n        var out = [];\n        var index = 0;\n        for (var i = 0; i < inputLength; i += 2) {\n          out[index] = [arr[i], arr[i + 1]];\n          ++index;\n        }\n        return out;\n      }\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n      var range = toNumberArray(dict.getArray(\"Range\"));\n\n      if (!domain || !range) {\n        throw new FormatError(\"No domain or range\");\n      }\n\n      var inputSize = domain.length / 2;\n      var outputSize = range.length / 2;\n\n      domain = toMultiArray(domain);\n      range = toMultiArray(range);\n\n      var size = toNumberArray(dict.getArray(\"Size\"));\n      var bps = dict.get(\"BitsPerSample\");\n      var order = dict.get(\"Order\") || 1;\n      if (order !== 1) {\n        // No description how cubic spline interpolation works in PDF32000:2008\n        // As in poppler, ignoring order, linear interpolation may work as good\n        info(\"No support for cubic spline interpolation: \" + order);\n      }\n\n      var encode = toNumberArray(dict.getArray(\"Encode\"));\n      if (!encode) {\n        encode = [];\n        for (var i = 0; i < inputSize; ++i) {\n          encode.push([0, size[i] - 1]);\n        }\n      } else {\n        encode = toMultiArray(encode);\n      }\n\n      var decode = toNumberArray(dict.getArray(\"Decode\"));\n      if (!decode) {\n        decode = range;\n      } else {\n        decode = toMultiArray(decode);\n      }\n\n      var samples = this.getSampleArray(size, outputSize, bps, fn);\n\n      return [\n        CONSTRUCT_SAMPLED,\n        inputSize,\n        domain,\n        encode,\n        decode,\n        samples,\n        size,\n        outputSize,\n        2 ** bps - 1,\n        range,\n      ];\n    },\n\n    constructSampledFromIR({ xref, isEvalSupported, IR }) {\n      // See chapter 3, page 109 of the PDF reference\n      function interpolate(x, xmin, xmax, ymin, ymax) {\n        return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n      }\n\n      return function constructSampledFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        // See chapter 3, page 110 of the PDF reference.\n        var m = IR[1];\n        var domain = IR[2];\n        var encode = IR[3];\n        var decode = IR[4];\n        var samples = IR[5];\n        var size = IR[6];\n        var n = IR[7];\n        // var mask = IR[8];\n        var range = IR[9];\n\n        // Building the cube vertices: its part and sample index\n        // http://rjwagner49.com/Mathematics/Interpolation.pdf\n        var cubeVertices = 1 << m;\n        var cubeN = new Float64Array(cubeVertices);\n        var cubeVertex = new Uint32Array(cubeVertices);\n        var i, j;\n        for (j = 0; j < cubeVertices; j++) {\n          cubeN[j] = 1;\n        }\n\n        var k = n,\n          pos = 1;\n        // Map x_i to y_j for 0 <= i < m using the sampled function.\n        for (i = 0; i < m; ++i) {\n          // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n          var domain_2i = domain[i][0];\n          var domain_2i_1 = domain[i][1];\n          var xi = Math.min(\n            Math.max(src[srcOffset + i], domain_2i),\n            domain_2i_1\n          );\n\n          // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n          //                   Encode_2i, Encode_2i+1)\n          var e = interpolate(\n            xi,\n            domain_2i,\n            domain_2i_1,\n            encode[i][0],\n            encode[i][1]\n          );\n\n          // e_i' = min(max(e_i, 0), Size_i - 1)\n          var size_i = size[i];\n          e = Math.min(Math.max(e, 0), size_i - 1);\n\n          // Adjusting the cube: N and vertex sample index\n          var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n          var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n          var n1 = e - e0; // (e - e0) / (e1 - e0);\n          var offset0 = e0 * k;\n          var offset1 = offset0 + k; // e1 * k\n          for (j = 0; j < cubeVertices; j++) {\n            if (j & pos) {\n              cubeN[j] *= n1;\n              cubeVertex[j] += offset1;\n            } else {\n              cubeN[j] *= n0;\n              cubeVertex[j] += offset0;\n            }\n          }\n\n          k *= size_i;\n          pos <<= 1;\n        }\n\n        for (j = 0; j < n; ++j) {\n          // Sum all cube vertices' samples portions\n          var rj = 0;\n          for (i = 0; i < cubeVertices; i++) {\n            rj += samples[cubeVertex[i] + j] * cubeN[i];\n          }\n\n          // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n          //                    Decode_2j, Decode_2j+1)\n          rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n          // y_j = min(max(r_j, range_2j), range_2j+1)\n          dest[destOffset + j] = Math.min(\n            Math.max(rj, range[j][0]),\n            range[j][1]\n          );\n        }\n      };\n    },\n\n    constructInterpolated({ xref, isEvalSupported, fn, dict }) {\n      var c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n      var c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n      var n = dict.get(\"N\");\n\n      var length = c0.length;\n      var diff = [];\n      for (var i = 0; i < length; ++i) {\n        diff.push(c1[i] - c0[i]);\n      }\n\n      return [CONSTRUCT_INTERPOLATED, c0, diff, n];\n    },\n\n    constructInterpolatedFromIR({ xref, isEvalSupported, IR }) {\n      var c0 = IR[1];\n      var diff = IR[2];\n      var n = IR[3];\n\n      var length = diff.length;\n\n      return function constructInterpolatedFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n        for (var j = 0; j < length; ++j) {\n          dest[destOffset + j] = c0[j] + x * diff[j];\n        }\n      };\n    },\n\n    constructStiched({ xref, isEvalSupported, fn, dict }) {\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n\n      if (!domain) {\n        throw new FormatError(\"No domain\");\n      }\n\n      var inputSize = domain.length / 2;\n      if (inputSize !== 1) {\n        throw new FormatError(\"Bad domain for stiched function\");\n      }\n\n      var fnRefs = dict.get(\"Functions\");\n      var fns = [];\n      for (var i = 0, ii = fnRefs.length; i < ii; ++i) {\n        fns.push(\n          this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n        );\n      }\n\n      var bounds = toNumberArray(dict.getArray(\"Bounds\"));\n      var encode = toNumberArray(dict.getArray(\"Encode\"));\n\n      return [CONSTRUCT_STICHED, domain, bounds, encode, fns];\n    },\n\n    constructStichedFromIR({ xref, isEvalSupported, IR }) {\n      var domain = IR[1];\n      var bounds = IR[2];\n      var encode = IR[3];\n      var fns = IR[4];\n      var tmpBuf = new Float32Array(1);\n\n      return function constructStichedFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var clip = function constructStichedFromIRClip(v, min, max) {\n          if (v > max) {\n            v = max;\n          } else if (v < min) {\n            v = min;\n          }\n          return v;\n        };\n\n        // clip to domain\n        var v = clip(src[srcOffset], domain[0], domain[1]);\n        // calculate which bound the value is in\n        for (var i = 0, ii = bounds.length; i < ii; ++i) {\n          if (v < bounds[i]) {\n            break;\n          }\n        }\n\n        // encode value into domain of function\n        var dmin = domain[0];\n        if (i > 0) {\n          dmin = bounds[i - 1];\n        }\n        var dmax = domain[1];\n        if (i < bounds.length) {\n          dmax = bounds[i];\n        }\n\n        var rmin = encode[2 * i];\n        var rmax = encode[2 * i + 1];\n\n        // Prevent the value from becoming NaN as a result\n        // of division by zero (fixes issue6113.pdf).\n        tmpBuf[0] =\n          dmin === dmax\n            ? rmin\n            : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n        // call the appropriate function\n        fns[i](tmpBuf, 0, dest, destOffset);\n      };\n    },\n\n    constructPostScript({ xref, isEvalSupported, fn, dict }) {\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n      var range = toNumberArray(dict.getArray(\"Range\"));\n\n      if (!domain) {\n        throw new FormatError(\"No domain.\");\n      }\n\n      if (!range) {\n        throw new FormatError(\"No range.\");\n      }\n\n      var lexer = new PostScriptLexer(fn);\n      var parser = new PostScriptParser(lexer);\n      var code = parser.parse();\n\n      return [CONSTRUCT_POSTSCRIPT, domain, range, code];\n    },\n\n    constructPostScriptFromIR({ xref, isEvalSupported, IR }) {\n      var domain = IR[1];\n      var range = IR[2];\n      var code = IR[3];\n\n      if (isEvalSupported && IsEvalSupportedCached.value) {\n        const compiled = new PostScriptCompiler().compile(code, domain, range);\n        if (compiled) {\n          // Compiled function consists of simple expressions such as addition,\n          // subtraction, Math.max, and also contains 'var' and 'return'\n          // statements. See the generation in the PostScriptCompiler below.\n          // eslint-disable-next-line no-new-func\n          return new Function(\n            \"src\",\n            \"srcOffset\",\n            \"dest\",\n            \"destOffset\",\n            compiled\n          );\n        }\n      }\n      info(\"Unable to compile PS function\");\n\n      var numOutputs = range.length >> 1;\n      var numInputs = domain.length >> 1;\n      var evaluator = new PostScriptEvaluator(code);\n      // Cache the values for a big speed up, the cache size is limited though\n      // since the number of possible values can be huge from a PS function.\n      var cache = Object.create(null);\n      // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n      // seen in our tests.\n      var MAX_CACHE_SIZE = 2048 * 4;\n      var cache_available = MAX_CACHE_SIZE;\n      var tmpBuf = new Float32Array(numInputs);\n\n      return function constructPostScriptFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var i, value;\n        var key = \"\";\n        var input = tmpBuf;\n        for (i = 0; i < numInputs; i++) {\n          value = src[srcOffset + i];\n          input[i] = value;\n          key += value + \"_\";\n        }\n\n        var cachedValue = cache[key];\n        if (cachedValue !== undefined) {\n          dest.set(cachedValue, destOffset);\n          return;\n        }\n\n        var output = new Float32Array(numOutputs);\n        var stack = evaluator.execute(input);\n        var stackIndex = stack.length - numOutputs;\n        for (i = 0; i < numOutputs; i++) {\n          value = stack[stackIndex + i];\n          var bound = range[i * 2];\n          if (value < bound) {\n            value = bound;\n          } else {\n            bound = range[i * 2 + 1];\n            if (value > bound) {\n              value = bound;\n            }\n          }\n          output[i] = value;\n        }\n        if (cache_available > 0) {\n          cache_available--;\n          cache[key] = output;\n        }\n        dest.set(output, destOffset);\n      };\n    },\n  };\n})();\n\nfunction isPDFFunction(v) {\n  var fnDict;\n  if (typeof v !== \"object\") {\n    return false;\n  } else if (isDict(v)) {\n    fnDict = v;\n  } else if (isStream(v)) {\n    fnDict = v.dict;\n  } else {\n    return false;\n  }\n  return fnDict.has(\"FunctionType\");\n}\n\nvar PostScriptStack = (function PostScriptStackClosure() {\n  var MAX_STACK_SIZE = 100;\n  function PostScriptStack(initialStack) {\n    this.stack = !initialStack\n      ? []\n      : Array.prototype.slice.call(initialStack, 0);\n  }\n\n  PostScriptStack.prototype = {\n    push: function PostScriptStack_push(value) {\n      if (this.stack.length >= MAX_STACK_SIZE) {\n        throw new Error(\"PostScript function stack overflow.\");\n      }\n      this.stack.push(value);\n    },\n    pop: function PostScriptStack_pop() {\n      if (this.stack.length <= 0) {\n        throw new Error(\"PostScript function stack underflow.\");\n      }\n      return this.stack.pop();\n    },\n    copy: function PostScriptStack_copy(n) {\n      if (this.stack.length + n >= MAX_STACK_SIZE) {\n        throw new Error(\"PostScript function stack overflow.\");\n      }\n      var stack = this.stack;\n      for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n        stack.push(stack[i]);\n      }\n    },\n    index: function PostScriptStack_index(n) {\n      this.push(this.stack[this.stack.length - n - 1]);\n    },\n    // rotate the last n stack elements p times\n    roll: function PostScriptStack_roll(n, p) {\n      var stack = this.stack;\n      var l = stack.length - n;\n      var r = stack.length - 1,\n        c = l + (p - Math.floor(p / n) * n),\n        i,\n        j,\n        t;\n      for (i = l, j = r; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n      for (i = l, j = c - 1; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n      for (i = c, j = r; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n    },\n  };\n  return PostScriptStack;\n})();\nvar PostScriptEvaluator = (function PostScriptEvaluatorClosure() {\n  function PostScriptEvaluator(operators) {\n    this.operators = operators;\n  }\n  PostScriptEvaluator.prototype = {\n    execute: function PostScriptEvaluator_execute(initialStack) {\n      var stack = new PostScriptStack(initialStack);\n      var counter = 0;\n      var operators = this.operators;\n      var length = operators.length;\n      var operator, a, b;\n      while (counter < length) {\n        operator = operators[counter++];\n        if (typeof operator === \"number\") {\n          // Operator is really an operand and should be pushed to the stack.\n          stack.push(operator);\n          continue;\n        }\n        switch (operator) {\n          // non standard ps operators\n          case \"jz\": // jump if false\n            b = stack.pop();\n            a = stack.pop();\n            if (!a) {\n              counter = b;\n            }\n            break;\n          case \"j\": // jump\n            a = stack.pop();\n            counter = a;\n            break;\n\n          // all ps operators in alphabetical order (excluding if/ifelse)\n          case \"abs\":\n            a = stack.pop();\n            stack.push(Math.abs(a));\n            break;\n          case \"add\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a + b);\n            break;\n          case \"and\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a && b);\n            } else {\n              stack.push(a & b);\n            }\n            break;\n          case \"atan\":\n            a = stack.pop();\n            stack.push(Math.atan(a));\n            break;\n          case \"bitshift\":\n            b = stack.pop();\n            a = stack.pop();\n            if (a > 0) {\n              stack.push(a << b);\n            } else {\n              stack.push(a >> b);\n            }\n            break;\n          case \"ceiling\":\n            a = stack.pop();\n            stack.push(Math.ceil(a));\n            break;\n          case \"copy\":\n            a = stack.pop();\n            stack.copy(a);\n            break;\n          case \"cos\":\n            a = stack.pop();\n            stack.push(Math.cos(a));\n            break;\n          case \"cvi\":\n            a = stack.pop() | 0;\n            stack.push(a);\n            break;\n          case \"cvr\":\n            // noop\n            break;\n          case \"div\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a / b);\n            break;\n          case \"dup\":\n            stack.copy(1);\n            break;\n          case \"eq\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a === b);\n            break;\n          case \"exch\":\n            stack.roll(2, 1);\n            break;\n          case \"exp\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a ** b);\n            break;\n          case \"false\":\n            stack.push(false);\n            break;\n          case \"floor\":\n            a = stack.pop();\n            stack.push(Math.floor(a));\n            break;\n          case \"ge\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a >= b);\n            break;\n          case \"gt\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a > b);\n            break;\n          case \"idiv\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push((a / b) | 0);\n            break;\n          case \"index\":\n            a = stack.pop();\n            stack.index(a);\n            break;\n          case \"le\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a <= b);\n            break;\n          case \"ln\":\n            a = stack.pop();\n            stack.push(Math.log(a));\n            break;\n          case \"log\":\n            a = stack.pop();\n            stack.push(Math.log(a) / Math.LN10);\n            break;\n          case \"lt\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a < b);\n            break;\n          case \"mod\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a % b);\n            break;\n          case \"mul\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a * b);\n            break;\n          case \"ne\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a !== b);\n            break;\n          case \"neg\":\n            a = stack.pop();\n            stack.push(-a);\n            break;\n          case \"not\":\n            a = stack.pop();\n            if (isBool(a)) {\n              stack.push(!a);\n            } else {\n              stack.push(~a);\n            }\n            break;\n          case \"or\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a || b);\n            } else {\n              stack.push(a | b);\n            }\n            break;\n          case \"pop\":\n            stack.pop();\n            break;\n          case \"roll\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.roll(a, b);\n            break;\n          case \"round\":\n            a = stack.pop();\n            stack.push(Math.round(a));\n            break;\n          case \"sin\":\n            a = stack.pop();\n            stack.push(Math.sin(a));\n            break;\n          case \"sqrt\":\n            a = stack.pop();\n            stack.push(Math.sqrt(a));\n            break;\n          case \"sub\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a - b);\n            break;\n          case \"true\":\n            stack.push(true);\n            break;\n          case \"truncate\":\n            a = stack.pop();\n            a = a < 0 ? Math.ceil(a) : Math.floor(a);\n            stack.push(a);\n            break;\n          case \"xor\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a !== b);\n            } else {\n              stack.push(a ^ b);\n            }\n            break;\n          default:\n            throw new FormatError(`Unknown operator ${operator}`);\n        }\n      }\n      return stack.stack;\n    },\n  };\n  return PostScriptEvaluator;\n})();\n\n// Most of the PDFs functions consist of simple operations such as:\n//   roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nvar PostScriptCompiler = (function PostScriptCompilerClosure() {\n  function AstNode(type) {\n    this.type = type;\n  }\n  AstNode.prototype.visit = function(visitor) {\n    unreachable(\"abstract method\");\n  };\n\n  function AstArgument(index, min, max) {\n    AstNode.call(this, \"args\");\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstArgument.prototype = Object.create(AstNode.prototype);\n  AstArgument.prototype.visit = function(visitor) {\n    visitor.visitArgument(this);\n  };\n\n  function AstLiteral(number) {\n    AstNode.call(this, \"literal\");\n    this.number = number;\n    this.min = number;\n    this.max = number;\n  }\n  AstLiteral.prototype = Object.create(AstNode.prototype);\n  AstLiteral.prototype.visit = function(visitor) {\n    visitor.visitLiteral(this);\n  };\n\n  function AstBinaryOperation(op, arg1, arg2, min, max) {\n    AstNode.call(this, \"binary\");\n    this.op = op;\n    this.arg1 = arg1;\n    this.arg2 = arg2;\n    this.min = min;\n    this.max = max;\n  }\n  AstBinaryOperation.prototype = Object.create(AstNode.prototype);\n  AstBinaryOperation.prototype.visit = function(visitor) {\n    visitor.visitBinaryOperation(this);\n  };\n\n  function AstMin(arg, max) {\n    AstNode.call(this, \"max\");\n    this.arg = arg;\n    this.min = arg.min;\n    this.max = max;\n  }\n  AstMin.prototype = Object.create(AstNode.prototype);\n  AstMin.prototype.visit = function(visitor) {\n    visitor.visitMin(this);\n  };\n\n  function AstVariable(index, min, max) {\n    AstNode.call(this, \"var\");\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstVariable.prototype = Object.create(AstNode.prototype);\n  AstVariable.prototype.visit = function(visitor) {\n    visitor.visitVariable(this);\n  };\n\n  function AstVariableDefinition(variable, arg) {\n    AstNode.call(this, \"definition\");\n    this.variable = variable;\n    this.arg = arg;\n  }\n  AstVariableDefinition.prototype = Object.create(AstNode.prototype);\n  AstVariableDefinition.prototype.visit = function(visitor) {\n    visitor.visitVariableDefinition(this);\n  };\n\n  function ExpressionBuilderVisitor() {\n    this.parts = [];\n  }\n  ExpressionBuilderVisitor.prototype = {\n    visitArgument(arg) {\n      this.parts.push(\n        \"Math.max(\",\n        arg.min,\n        \", Math.min(\",\n        arg.max,\n        \", src[srcOffset + \",\n        arg.index,\n        \"]))\"\n      );\n    },\n    visitVariable(variable) {\n      this.parts.push(\"v\", variable.index);\n    },\n    visitLiteral(literal) {\n      this.parts.push(literal.number);\n    },\n    visitBinaryOperation(operation) {\n      this.parts.push(\"(\");\n      operation.arg1.visit(this);\n      this.parts.push(\" \", operation.op, \" \");\n      operation.arg2.visit(this);\n      this.parts.push(\")\");\n    },\n    visitVariableDefinition(definition) {\n      this.parts.push(\"var \");\n      definition.variable.visit(this);\n      this.parts.push(\" = \");\n      definition.arg.visit(this);\n      this.parts.push(\";\");\n    },\n    visitMin(max) {\n      this.parts.push(\"Math.min(\");\n      max.arg.visit(this);\n      this.parts.push(\", \", max.max, \")\");\n    },\n    toString() {\n      return this.parts.join(\"\");\n    },\n  };\n\n  function buildAddOperation(num1, num2) {\n    if (num2.type === \"literal\" && num2.number === 0) {\n      // optimization: second operand is 0\n      return num1;\n    }\n    if (num1.type === \"literal\" && num1.number === 0) {\n      // optimization: first operand is 0\n      return num2;\n    }\n    if (num2.type === \"literal\" && num1.type === \"literal\") {\n      // optimization: operands operand are literals\n      return new AstLiteral(num1.number + num2.number);\n    }\n    return new AstBinaryOperation(\n      \"+\",\n      num1,\n      num2,\n      num1.min + num2.min,\n      num1.max + num2.max\n    );\n  }\n\n  function buildMulOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num2.number === 1) {\n        return num1; // and it's 1\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number * num2.number);\n      }\n    }\n    if (num1.type === \"literal\") {\n      // optimization: first operands is a literal...\n      if (num1.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num1.number === 1) {\n        return num2; // and it's 1\n      }\n    }\n    var min = Math.min(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    var max = Math.max(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    return new AstBinaryOperation(\"*\", num1, num2, min, max);\n  }\n\n  function buildSubOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return num1; // ... and it's 0\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number - num2.number);\n      }\n    }\n    if (\n      num2.type === \"binary\" &&\n      num2.op === \"-\" &&\n      num1.type === \"literal\" &&\n      num1.number === 1 &&\n      num2.arg1.type === \"literal\" &&\n      num2.arg1.number === 1\n    ) {\n      // optimization for case: 1 - (1 - x)\n      return num2.arg2;\n    }\n    return new AstBinaryOperation(\n      \"-\",\n      num1,\n      num2,\n      num1.min - num2.max,\n      num1.max - num2.min\n    );\n  }\n\n  function buildMinOperation(num1, max) {\n    if (num1.min >= max) {\n      // optimization: num1 min value is not less than required max\n      return new AstLiteral(max); // just returning max\n    } else if (num1.max <= max) {\n      // optimization: num1 max value is not greater than required max\n      return num1; // just returning an argument\n    }\n    return new AstMin(num1, max);\n  }\n\n  function PostScriptCompiler() {}\n  PostScriptCompiler.prototype = {\n    compile: function PostScriptCompiler_compile(code, domain, range) {\n      var stack = [];\n      var i, ii;\n      var instructions = [];\n      var inputSize = domain.length >> 1,\n        outputSize = range.length >> 1;\n      var lastRegister = 0;\n      var n, j;\n      var num1, num2, ast1, ast2, tmpVar, item;\n      for (i = 0; i < inputSize; i++) {\n        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n      }\n\n      for (i = 0, ii = code.length; i < ii; i++) {\n        item = code[i];\n        if (typeof item === \"number\") {\n          stack.push(new AstLiteral(item));\n          continue;\n        }\n\n        switch (item) {\n          case \"add\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildAddOperation(num1, num2));\n            break;\n          case \"cvr\":\n            if (stack.length < 1) {\n              return null;\n            }\n            break;\n          case \"mul\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildMulOperation(num1, num2));\n            break;\n          case \"sub\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildSubOperation(num1, num2));\n            break;\n          case \"exch\":\n            if (stack.length < 2) {\n              return null;\n            }\n            ast1 = stack.pop();\n            ast2 = stack.pop();\n            stack.push(ast1, ast2);\n            break;\n          case \"pop\":\n            if (stack.length < 1) {\n              return null;\n            }\n            stack.pop();\n            break;\n          case \"index\":\n            if (stack.length < 1) {\n              return null;\n            }\n            num1 = stack.pop();\n            if (num1.type !== \"literal\") {\n              return null;\n            }\n            n = num1.number;\n            if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n              return null;\n            }\n            ast1 = stack[stack.length - n - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - n - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"dup\":\n            if (stack.length < 1) {\n              return null;\n            }\n            if (\n              typeof code[i + 1] === \"number\" &&\n              code[i + 2] === \"gt\" &&\n              code[i + 3] === i + 7 &&\n              code[i + 4] === \"jz\" &&\n              code[i + 5] === \"pop\" &&\n              code[i + 6] === code[i + 1]\n            ) {\n              // special case of the commands sequence for the min operation\n              num1 = stack.pop();\n              stack.push(buildMinOperation(num1, code[i + 1]));\n              i += 6;\n              break;\n            }\n            ast1 = stack[stack.length - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              // we don't have to save into intermediate variable a literal or\n              // variable.\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"roll\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n              // both roll operands must be numbers\n              return null;\n            }\n            j = num2.number;\n            n = num1.number;\n            if (\n              n <= 0 ||\n              !Number.isInteger(n) ||\n              !Number.isInteger(j) ||\n              stack.length < n\n            ) {\n              // ... and integers\n              return null;\n            }\n            j = ((j % n) + n) % n;\n            if (j === 0) {\n              break; // just skipping -- there are nothing to rotate\n            }\n            Array.prototype.push.apply(\n              stack,\n              stack.splice(stack.length - n, n - j)\n            );\n            break;\n          default:\n            return null; // unsupported operator\n        }\n      }\n\n      if (stack.length !== outputSize) {\n        return null;\n      }\n\n      var result = [];\n      instructions.forEach(function(instruction) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        instruction.visit(statementBuilder);\n        result.push(statementBuilder.toString());\n      });\n      stack.forEach(function(expr, i) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        expr.visit(statementBuilder);\n        var min = range[i * 2],\n          max = range[i * 2 + 1];\n        var out = [statementBuilder.toString()];\n        if (min > expr.min) {\n          out.unshift(\"Math.max(\", min, \", \");\n          out.push(\")\");\n        }\n        if (max < expr.max) {\n          out.unshift(\"Math.min(\", max, \", \");\n          out.push(\")\");\n        }\n        out.unshift(\"dest[destOffset + \", i, \"] = \");\n        out.push(\";\");\n        result.push(out.join(\"\"));\n      });\n      return result.join(\"\\n\");\n    },\n  };\n\n  return PostScriptCompiler;\n})();\n\nexport {\n  isPDFFunction,\n  PDFFunctionFactory,\n  PostScriptEvaluator,\n  PostScriptCompiler,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n  constructor(lexer) {\n    this.lexer = lexer;\n    this.operators = [];\n    this.token = null;\n    this.prev = null;\n  }\n\n  nextToken() {\n    this.prev = this.token;\n    this.token = this.lexer.getToken();\n  }\n\n  accept(type) {\n    if (this.token.type === type) {\n      this.nextToken();\n      return true;\n    }\n    return false;\n  }\n\n  expect(type) {\n    if (this.accept(type)) {\n      return true;\n    }\n    throw new FormatError(\n      `Unexpected symbol: found ${this.token.type} expected ${type}.`\n    );\n  }\n\n  parse() {\n    this.nextToken();\n    this.expect(PostScriptTokenTypes.LBRACE);\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    return this.operators;\n  }\n\n  parseBlock() {\n    while (true) {\n      if (this.accept(PostScriptTokenTypes.NUMBER)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n        this.parseCondition();\n      } else {\n        return;\n      }\n    }\n  }\n\n  parseCondition() {\n    // Add two place holders that will be updated later\n    const conditionLocation = this.operators.length;\n    this.operators.push(null, null);\n\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    if (this.accept(PostScriptTokenTypes.IF)) {\n      // The true block is right after the 'if' so it just falls through on true\n      // else it jumps and skips the true block.\n      this.operators[conditionLocation] = this.operators.length;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n      const jumpLocation = this.operators.length;\n      this.operators.push(null, null);\n      const endOfTrue = this.operators.length;\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      this.expect(PostScriptTokenTypes.IFELSE);\n      // The jump is added at the end of the true block to skip the false block.\n      this.operators[jumpLocation] = this.operators.length;\n      this.operators[jumpLocation + 1] = \"j\";\n\n      this.operators[conditionLocation] = endOfTrue;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else {\n      throw new FormatError(\"PS Function: error parsing conditional.\");\n    }\n  }\n}\n\nconst PostScriptTokenTypes = {\n  LBRACE: 0,\n  RBRACE: 1,\n  NUMBER: 2,\n  OPERATOR: 3,\n  IF: 4,\n  IFELSE: 5,\n};\n\nconst PostScriptToken = (function PostScriptTokenClosure() {\n  const opCache = Object.create(null);\n\n  class PostScriptToken {\n    constructor(type, value) {\n      this.type = type;\n      this.value = value;\n    }\n\n    static getOperator(op) {\n      const opValue = opCache[op];\n      if (opValue) {\n        return opValue;\n      }\n      return (opCache[op] = new PostScriptToken(\n        PostScriptTokenTypes.OPERATOR,\n        op\n      ));\n    }\n\n    static get LBRACE() {\n      return shadow(\n        this,\n        \"LBRACE\",\n        new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n      );\n    }\n\n    static get RBRACE() {\n      return shadow(\n        this,\n        \"RBRACE\",\n        new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n      );\n    }\n\n    static get IF() {\n      return shadow(\n        this,\n        \"IF\",\n        new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n      );\n    }\n\n    static get IFELSE() {\n      return shadow(\n        this,\n        \"IFELSE\",\n        new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n      );\n    }\n  }\n  return PostScriptToken;\n})();\n\nclass PostScriptLexer {\n  constructor(stream) {\n    this.stream = stream;\n    this.nextChar();\n\n    this.strBuf = [];\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  getToken() {\n    let comment = false;\n    let ch = this.currentChar;\n\n    // skip comments\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (!isWhiteSpace(ch)) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return new PostScriptToken(\n          PostScriptTokenTypes.NUMBER,\n          this.getNumber()\n        );\n      case 0x7b: // '{'\n        this.nextChar();\n        return PostScriptToken.LBRACE;\n      case 0x7d: // '}'\n        this.nextChar();\n        return PostScriptToken.RBRACE;\n    }\n    // operator\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while (\n      (ch = this.nextChar()) >= 0 &&\n      ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n    ) {\n      strBuf.push(String.fromCharCode(ch));\n    }\n    const str = strBuf.join(\"\");\n    switch (str.toLowerCase()) {\n      case \"if\":\n        return PostScriptToken.IF;\n      case \"ifelse\":\n        return PostScriptToken.IFELSE;\n      default:\n        return PostScriptToken.getOperator(str);\n    }\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (\n        (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n        ch === /* '-' = */ 0x2d ||\n        ch === /* '.' = */ 0x2e\n      ) {\n        strBuf.push(String.fromCharCode(ch));\n      } else {\n        break;\n      }\n    }\n    const value = parseFloat(strBuf.join(\"\"));\n    if (isNaN(value)) {\n      throw new FormatError(`Invalid floating point number: ${value}`);\n    }\n    return value;\n  }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n/* eslint no-var: error */\n\nimport { isArrayBuffer, isString } from \"../shared/util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n\n  update(input) {\n    let data, length;\n    if (isString(input)) {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (isArrayBuffer(input)) {\n      data = input;\n      length = data.byteLength;\n    } else {\n      throw new Error(\n        \"Wrong data format in MurmurHash3_64_update. \" +\n          \"Input must be a string or array.\"\n      );\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    // We don't care about endianness here.\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        h1 ^= k1;\n        h1 = (h1 << 13) | (h1 >>> 19);\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n        k2 = (k2 << 15) | (k2 >>> 17);\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n        h2 ^= k2;\n        h2 = (h2 << 13) | (h2 >>> 19);\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n\n    k1 = 0;\n\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      /* falls through */\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      /* falls through */\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        /* falls through */\n\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n    h2 =\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n    h2 =\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n\n    const hex1 = (h1 >>> 0).toString(16),\n      hex2 = (h2 >>> 0).toString(16);\n    return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n  }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { ColorSpace } from \"./colorspace.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { Stream } from \"./stream.js\";\n\nclass NativeImageDecoder {\n  constructor({\n    xref,\n    resources,\n    handler,\n    forceDataSchema = false,\n    pdfFunctionFactory,\n  }) {\n    this.xref = xref;\n    this.resources = resources;\n    this.handler = handler;\n    this.forceDataSchema = forceDataSchema;\n    this.pdfFunctionFactory = pdfFunctionFactory;\n  }\n\n  canDecode(image) {\n    return (\n      image instanceof JpegStream &&\n      NativeImageDecoder.isDecodable(\n        image,\n        this.xref,\n        this.resources,\n        this.pdfFunctionFactory\n      ) &&\n      image.maybeValidDimensions\n    );\n  }\n\n  decode(image) {\n    // For natively supported JPEGs send them to the main thread for decoding.\n    const dict = image.dict;\n    let colorSpace = dict.get(\"ColorSpace\", \"CS\");\n    colorSpace = ColorSpace.parse(\n      colorSpace,\n      this.xref,\n      this.resources,\n      this.pdfFunctionFactory\n    );\n\n    return this.handler\n      .sendWithPromise(\"JpegDecode\", [\n        image.getIR(this.forceDataSchema),\n        colorSpace.numComps,\n      ])\n      .then(function({ data, width, height }) {\n        return new Stream(data, 0, data.length, dict);\n      });\n  }\n\n  /**\n   * Checks if the image can be decoded and displayed by the browser without any\n   * further processing such as color space conversions.\n   */\n  static isSupported(image, xref, res, pdfFunctionFactory) {\n    const dict = image.dict;\n    if (dict.has(\"DecodeParms\") || dict.has(\"DP\")) {\n      return false;\n    }\n    const cs = ColorSpace.parse(\n      dict.get(\"ColorSpace\", \"CS\"),\n      xref,\n      res,\n      pdfFunctionFactory\n    );\n    // isDefaultDecode() of DeviceGray and DeviceRGB needs no `bpc` argument.\n    return (\n      (cs.name === \"DeviceGray\" || cs.name === \"DeviceRGB\") &&\n      cs.isDefaultDecode(dict.getArray(\"Decode\", \"D\"))\n    );\n  }\n\n  /**\n   * Checks if the image can be decoded by the browser.\n   */\n  static isDecodable(image, xref, res, pdfFunctionFactory) {\n    const dict = image.dict;\n    if (dict.has(\"DecodeParms\") || dict.has(\"DP\")) {\n      return false;\n    }\n    const cs = ColorSpace.parse(\n      dict.get(\"ColorSpace\", \"CS\"),\n      xref,\n      res,\n      pdfFunctionFactory\n    );\n    const bpc = dict.get(\"BitsPerComponent\", \"BPC\") || 1;\n    return (\n      (cs.numComps === 1 || cs.numComps === 3) &&\n      cs.isDefaultDecode(dict.getArray(\"Decode\", \"D\"), bpc)\n    );\n  }\n}\n\nexport { NativeImageDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FormatError, ImageKind, info, warn } from \"../shared/util.js\";\nimport { isName, isStream, Name } from \"./primitives.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\n\nvar PDFImage = (function PDFImageClosure() {\n  /**\n   * Decodes the image using native decoder if possible. Resolves the promise\n   * when the image data is ready.\n   */\n  function handleImageData(image, nativeDecoder) {\n    if (nativeDecoder && nativeDecoder.canDecode(image)) {\n      return nativeDecoder.decode(image).catch(reason => {\n        warn(\n          \"Native image decoding failed -- trying to recover: \" +\n            (reason && reason.message)\n        );\n        return image;\n      });\n    }\n    return Promise.resolve(image);\n  }\n\n  /**\n   * Decode and clamp a value. The formula is different from the spec because we\n   * don't decode to float range [0,1], we decode it in the [0,max] range.\n   */\n  function decodeAndClamp(value, addend, coefficient, max) {\n    value = addend + value * coefficient;\n    // Clamp the value to the range\n    if (value < 0) {\n      value = 0;\n    } else if (value > max) {\n      value = max;\n    }\n    return value;\n  }\n\n  /**\n   * Resizes an image mask with 1 component.\n   * @param {TypedArray} src - The source buffer.\n   * @param {number} bpc - Number of bits per component.\n   * @param {number} w1 - Original width.\n   * @param {number} h1 - Original height.\n   * @param {number} w2 - New width.\n   * @param {number} h2 - New height.\n   * @returns {TypedArray} The resized image mask buffer.\n   */\n  function resizeImageMask(src, bpc, w1, h1, w2, h2) {\n    var length = w2 * h2;\n    let dest;\n    if (bpc <= 8) {\n      dest = new Uint8Array(length);\n    } else if (bpc <= 16) {\n      dest = new Uint16Array(length);\n    } else {\n      dest = new Uint32Array(length);\n    }\n    var xRatio = w1 / w2;\n    var yRatio = h1 / h2;\n    var i,\n      j,\n      py,\n      newIndex = 0,\n      oldIndex;\n    var xScaled = new Uint16Array(w2);\n    var w1Scanline = w1;\n\n    for (i = 0; i < w2; i++) {\n      xScaled[i] = Math.floor(i * xRatio);\n    }\n    for (i = 0; i < h2; i++) {\n      py = Math.floor(i * yRatio) * w1Scanline;\n      for (j = 0; j < w2; j++) {\n        oldIndex = py + xScaled[j];\n        dest[newIndex++] = src[oldIndex];\n      }\n    }\n    return dest;\n  }\n\n  function PDFImage({\n    xref,\n    res,\n    image,\n    isInline = false,\n    smask = null,\n    mask = null,\n    isMask = false,\n    pdfFunctionFactory,\n  }) {\n    this.image = image;\n    var dict = image.dict;\n\n    const filter = dict.get(\"Filter\");\n    if (isName(filter)) {\n      switch (filter.name) {\n        case \"JPXDecode\":\n          var jpxImage = new JpxImage();\n          jpxImage.parseImageProperties(image.stream);\n          image.stream.reset();\n\n          image.width = jpxImage.width;\n          image.height = jpxImage.height;\n          image.bitsPerComponent = jpxImage.bitsPerComponent;\n          image.numComps = jpxImage.componentsCount;\n          break;\n        case \"JBIG2Decode\":\n          image.bitsPerComponent = 1;\n          image.numComps = 1;\n          break;\n      }\n    }\n    // TODO cache rendered images?\n\n    let width = dict.get(\"Width\", \"W\");\n    let height = dict.get(\"Height\", \"H\");\n\n    if (\n      Number.isInteger(image.width) &&\n      image.width > 0 &&\n      Number.isInteger(image.height) &&\n      image.height > 0 &&\n      (image.width !== width || image.height !== height)\n    ) {\n      warn(\n        \"PDFImage - using the Width/Height of the image data, \" +\n          \"rather than the image dictionary.\"\n      );\n      width = image.width;\n      height = image.height;\n    }\n    if (width < 1 || height < 1) {\n      throw new FormatError(\n        `Invalid image width: ${width} or height: ${height}`\n      );\n    }\n    this.width = width;\n    this.height = height;\n\n    this.interpolate = dict.get(\"Interpolate\", \"I\") || false;\n    this.imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n    this.matte = dict.get(\"Matte\") || false;\n\n    var bitsPerComponent = image.bitsPerComponent;\n    if (!bitsPerComponent) {\n      bitsPerComponent = dict.get(\"BitsPerComponent\", \"BPC\");\n      if (!bitsPerComponent) {\n        if (this.imageMask) {\n          bitsPerComponent = 1;\n        } else {\n          throw new FormatError(\n            `Bits per component missing in image: ${this.imageMask}`\n          );\n        }\n      }\n    }\n    this.bpc = bitsPerComponent;\n\n    if (!this.imageMask) {\n      var colorSpace = dict.get(\"ColorSpace\", \"CS\");\n      if (!colorSpace) {\n        info(\"JPX images (which do not require color spaces)\");\n        switch (image.numComps) {\n          case 1:\n            colorSpace = Name.get(\"DeviceGray\");\n            break;\n          case 3:\n            colorSpace = Name.get(\"DeviceRGB\");\n            break;\n          case 4:\n            colorSpace = Name.get(\"DeviceCMYK\");\n            break;\n          default:\n            throw new Error(\n              `JPX images with ${image.numComps} ` +\n                \"color components not supported.\"\n            );\n        }\n      }\n      const resources = isInline ? res : null;\n      this.colorSpace = ColorSpace.parse(\n        colorSpace,\n        xref,\n        resources,\n        pdfFunctionFactory\n      );\n      this.numComps = this.colorSpace.numComps;\n    }\n\n    this.decode = dict.getArray(\"Decode\", \"D\");\n    this.needsDecode = false;\n    if (\n      this.decode &&\n      ((this.colorSpace &&\n        !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n        (isMask &&\n          !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n    ) {\n      this.needsDecode = true;\n      // Do some preprocessing to avoid more math.\n      var max = (1 << bitsPerComponent) - 1;\n      this.decodeCoefficients = [];\n      this.decodeAddends = [];\n      const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n        var dmin = this.decode[i];\n        var dmax = this.decode[i + 1];\n        this.decodeCoefficients[j] = isIndexed\n          ? (dmax - dmin) / max\n          : dmax - dmin;\n        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n      }\n    }\n\n    if (smask) {\n      this.smask = new PDFImage({\n        xref,\n        res,\n        image: smask,\n        isInline,\n        pdfFunctionFactory,\n      });\n    } else if (mask) {\n      if (isStream(mask)) {\n        var maskDict = mask.dict,\n          imageMask = maskDict.get(\"ImageMask\", \"IM\");\n        if (!imageMask) {\n          warn(\"Ignoring /Mask in image without /ImageMask.\");\n        } else {\n          this.mask = new PDFImage({\n            xref,\n            res,\n            image: mask,\n            isInline,\n            isMask: true,\n            pdfFunctionFactory,\n          });\n        }\n      } else {\n        // Color key mask (just an array).\n        this.mask = mask;\n      }\n    }\n  }\n  /**\n   * Handles processing of image data and returns the Promise that is resolved\n   * with a PDFImage when the image is ready to be used.\n   */\n  PDFImage.buildImage = function({\n    handler,\n    xref,\n    res,\n    image,\n    isInline = false,\n    nativeDecoder = null,\n    pdfFunctionFactory,\n  }) {\n    var imagePromise = handleImageData(image, nativeDecoder);\n    var smaskPromise;\n    var maskPromise;\n\n    var smask = image.dict.get(\"SMask\");\n    var mask = image.dict.get(\"Mask\");\n\n    if (smask) {\n      smaskPromise = handleImageData(smask, nativeDecoder);\n      maskPromise = Promise.resolve(null);\n    } else {\n      smaskPromise = Promise.resolve(null);\n      if (mask) {\n        if (isStream(mask)) {\n          maskPromise = handleImageData(mask, nativeDecoder);\n        } else if (Array.isArray(mask)) {\n          maskPromise = Promise.resolve(mask);\n        } else {\n          warn(\"Unsupported mask format.\");\n          maskPromise = Promise.resolve(null);\n        }\n      } else {\n        maskPromise = Promise.resolve(null);\n      }\n    }\n    return Promise.all([imagePromise, smaskPromise, maskPromise]).then(\n      function([imageData, smaskData, maskData]) {\n        return new PDFImage({\n          xref,\n          res,\n          image: imageData,\n          isInline,\n          smask: smaskData,\n          mask: maskData,\n          pdfFunctionFactory,\n        });\n      }\n    );\n  };\n\n  PDFImage.createMask = function({\n    imgArray,\n    width,\n    height,\n    imageIsFromDecodeStream,\n    inverseDecode,\n  }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        imgArray instanceof Uint8ClampedArray,\n        'PDFImage.createMask: Unsupported \"imgArray\" type.'\n      );\n    }\n    // |imgArray| might not contain full data for every pixel of the mask, so\n    // we need to distinguish between |computedLength| and |actualLength|.\n    // In particular, if inverseDecode is true, then the array we return must\n    // have a length of |computedLength|.\n\n    var computedLength = ((width + 7) >> 3) * height;\n    var actualLength = imgArray.byteLength;\n    var haveFullData = computedLength === actualLength;\n    var data, i;\n\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n      // imgArray came from a DecodeStream and its data is in an appropriate\n      // form, so we can just transfer it.\n      data = imgArray;\n    } else if (!inverseDecode) {\n      data = new Uint8ClampedArray(actualLength);\n      data.set(imgArray);\n    } else {\n      data = new Uint8ClampedArray(computedLength);\n      data.set(imgArray);\n      for (i = actualLength; i < computedLength; i++) {\n        data[i] = 0xff;\n      }\n    }\n\n    // If necessary, invert the original mask data (but not any extra we might\n    // have added above). It's safe to modify the array -- whether it's the\n    // original or a copy, we're about to transfer it anyway, so nothing else\n    // in this thread can be relying on its contents.\n    if (inverseDecode) {\n      for (i = 0; i < actualLength; i++) {\n        data[i] ^= 0xff;\n      }\n    }\n\n    return { data, width, height };\n  };\n\n  PDFImage.prototype = {\n    get drawWidth() {\n      return Math.max(\n        this.width,\n        (this.smask && this.smask.width) || 0,\n        (this.mask && this.mask.width) || 0\n      );\n    },\n\n    get drawHeight() {\n      return Math.max(\n        this.height,\n        (this.smask && this.smask.height) || 0,\n        (this.mask && this.mask.height) || 0\n      );\n    },\n\n    decodeBuffer(buffer) {\n      var bpc = this.bpc;\n      var numComps = this.numComps;\n\n      var decodeAddends = this.decodeAddends;\n      var decodeCoefficients = this.decodeCoefficients;\n      var max = (1 << bpc) - 1;\n      var i, ii;\n\n      if (bpc === 1) {\n        // If the buffer needed decode that means it just needs to be inverted.\n        for (i = 0, ii = buffer.length; i < ii; i++) {\n          buffer[i] = +!buffer[i];\n        }\n        return;\n      }\n      var index = 0;\n      for (i = 0, ii = this.width * this.height; i < ii; i++) {\n        for (var j = 0; j < numComps; j++) {\n          buffer[index] = decodeAndClamp(\n            buffer[index],\n            decodeAddends[j],\n            decodeCoefficients[j],\n            max\n          );\n          index++;\n        }\n      }\n    },\n\n    getComponents(buffer) {\n      var bpc = this.bpc;\n\n      // This image doesn't require any extra work.\n      if (bpc === 8) {\n        return buffer;\n      }\n\n      var width = this.width;\n      var height = this.height;\n      var numComps = this.numComps;\n\n      var length = width * height * numComps;\n      var bufferPos = 0;\n      let output;\n      if (bpc <= 8) {\n        output = new Uint8Array(length);\n      } else if (bpc <= 16) {\n        output = new Uint16Array(length);\n      } else {\n        output = new Uint32Array(length);\n      }\n      var rowComps = width * numComps;\n\n      var max = (1 << bpc) - 1;\n      var i = 0,\n        ii,\n        buf;\n\n      if (bpc === 1) {\n        // Optimization for reading 1 bpc images.\n        var mask, loop1End, loop2End;\n        for (var j = 0; j < height; j++) {\n          loop1End = i + (rowComps & ~7);\n          loop2End = i + rowComps;\n\n          // unroll loop for all full bytes\n          while (i < loop1End) {\n            buf = buffer[bufferPos++];\n            output[i] = (buf >> 7) & 1;\n            output[i + 1] = (buf >> 6) & 1;\n            output[i + 2] = (buf >> 5) & 1;\n            output[i + 3] = (buf >> 4) & 1;\n            output[i + 4] = (buf >> 3) & 1;\n            output[i + 5] = (buf >> 2) & 1;\n            output[i + 6] = (buf >> 1) & 1;\n            output[i + 7] = buf & 1;\n            i += 8;\n          }\n\n          // handle remaining bits\n          if (i < loop2End) {\n            buf = buffer[bufferPos++];\n            mask = 128;\n            while (i < loop2End) {\n              output[i++] = +!!(buf & mask);\n              mask >>= 1;\n            }\n          }\n        }\n      } else {\n        // The general case that handles all other bpc values.\n        var bits = 0;\n        buf = 0;\n        for (i = 0, ii = length; i < ii; ++i) {\n          if (i % rowComps === 0) {\n            buf = 0;\n            bits = 0;\n          }\n\n          while (bits < bpc) {\n            buf = (buf << 8) | buffer[bufferPos++];\n            bits += 8;\n          }\n\n          var remainingBits = bits - bpc;\n          let value = buf >> remainingBits;\n          if (value < 0) {\n            value = 0;\n          } else if (value > max) {\n            value = max;\n          }\n          output[i] = value;\n          buf = buf & ((1 << remainingBits) - 1);\n          bits = remainingBits;\n        }\n      }\n      return output;\n    },\n\n    fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          rgbaBuf instanceof Uint8ClampedArray,\n          'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n        );\n      }\n      var smask = this.smask;\n      var mask = this.mask;\n      var alphaBuf, sw, sh, i, ii, j;\n\n      if (smask) {\n        sw = smask.width;\n        sh = smask.height;\n        alphaBuf = new Uint8ClampedArray(sw * sh);\n        smask.fillGrayBuffer(alphaBuf);\n        if (sw !== width || sh !== height) {\n          alphaBuf = resizeImageMask(\n            alphaBuf,\n            smask.bpc,\n            sw,\n            sh,\n            width,\n            height\n          );\n        }\n      } else if (mask) {\n        if (mask instanceof PDFImage) {\n          sw = mask.width;\n          sh = mask.height;\n          alphaBuf = new Uint8ClampedArray(sw * sh);\n          mask.numComps = 1;\n          mask.fillGrayBuffer(alphaBuf);\n\n          // Need to invert values in rgbaBuf\n          for (i = 0, ii = sw * sh; i < ii; ++i) {\n            alphaBuf[i] = 255 - alphaBuf[i];\n          }\n\n          if (sw !== width || sh !== height) {\n            alphaBuf = resizeImageMask(\n              alphaBuf,\n              mask.bpc,\n              sw,\n              sh,\n              width,\n              height\n            );\n          }\n        } else if (Array.isArray(mask)) {\n          // Color key mask: if any of the components are outside the range\n          // then they should be painted.\n          alphaBuf = new Uint8ClampedArray(width * height);\n          var numComps = this.numComps;\n          for (i = 0, ii = width * height; i < ii; ++i) {\n            var opacity = 0;\n            var imageOffset = i * numComps;\n            for (j = 0; j < numComps; ++j) {\n              var color = image[imageOffset + j];\n              var maskOffset = j * 2;\n              if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n                opacity = 255;\n                break;\n              }\n            }\n            alphaBuf[i] = opacity;\n          }\n        } else {\n          throw new FormatError(\"Unknown mask format.\");\n        }\n      }\n\n      if (alphaBuf) {\n        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n          rgbaBuf[j] = alphaBuf[i];\n        }\n      } else {\n        // No mask.\n        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n          rgbaBuf[j] = 255;\n        }\n      }\n    },\n\n    undoPreblend(buffer, width, height) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          buffer instanceof Uint8ClampedArray,\n          'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n        );\n      }\n      var matte = this.smask && this.smask.matte;\n      if (!matte) {\n        return;\n      }\n      var matteRgb = this.colorSpace.getRgb(matte, 0);\n      var matteR = matteRgb[0];\n      var matteG = matteRgb[1];\n      var matteB = matteRgb[2];\n      var length = width * height * 4;\n      for (var i = 0; i < length; i += 4) {\n        var alpha = buffer[i + 3];\n        if (alpha === 0) {\n          // according formula we have to get Infinity in all components\n          // making it white (typical paper color) should be okay\n          buffer[i] = 255;\n          buffer[i + 1] = 255;\n          buffer[i + 2] = 255;\n          continue;\n        }\n        var k = 255 / alpha;\n        buffer[i] = (buffer[i] - matteR) * k + matteR;\n        buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n        buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n      }\n    },\n\n    createImageData(forceRGBA = false) {\n      var drawWidth = this.drawWidth;\n      var drawHeight = this.drawHeight;\n      var imgData = {\n        width: drawWidth,\n        height: drawHeight,\n        kind: 0,\n        data: null,\n        // Other fields are filled in below.\n      };\n\n      var numComps = this.numComps;\n      var originalWidth = this.width;\n      var originalHeight = this.height;\n      var bpc = this.bpc;\n\n      // Rows start at byte boundary.\n      var rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n      var imgArray;\n\n      if (!forceRGBA) {\n        // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n        // without any complications, we pass a same-sized copy to the main\n        // thread rather than expanding by 32x to RGBA form. This saves *lots*\n        // of memory for many scanned documents. It's also much faster.\n        //\n        // Similarly, if it is a 24-bit-per pixel RGB image without any\n        // complications, we avoid expanding by 1.333x to RGBA form.\n        var kind;\n        if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n          kind = ImageKind.GRAYSCALE_1BPP;\n        } else if (\n          this.colorSpace.name === \"DeviceRGB\" &&\n          bpc === 8 &&\n          !this.needsDecode\n        ) {\n          kind = ImageKind.RGB_24BPP;\n        }\n        if (\n          kind &&\n          !this.smask &&\n          !this.mask &&\n          drawWidth === originalWidth &&\n          drawHeight === originalHeight\n        ) {\n          imgData.kind = kind;\n\n          imgArray = this.getImageBytes(originalHeight * rowBytes);\n          // If imgArray came from a DecodeStream, we're safe to transfer it\n          // (and thus detach its underlying buffer) because it will constitute\n          // the entire DecodeStream's data.  But if it came from a Stream, we\n          // need to copy it because it'll only be a portion of the Stream's\n          // data, and the rest will be read later on.\n          if (this.image instanceof DecodeStream) {\n            imgData.data = imgArray;\n          } else {\n            var newArray = new Uint8ClampedArray(imgArray.length);\n            newArray.set(imgArray);\n            imgData.data = newArray;\n          }\n          if (this.needsDecode) {\n            // Invert the buffer (which must be grayscale if we reached here).\n            assert(\n              kind === ImageKind.GRAYSCALE_1BPP,\n              \"PDFImage.createImageData: The image must be grayscale.\"\n            );\n            var buffer = imgData.data;\n            for (var i = 0, ii = buffer.length; i < ii; i++) {\n              buffer[i] ^= 0xff;\n            }\n          }\n          return imgData;\n        }\n        if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n          let imageLength = originalHeight * rowBytes;\n          switch (this.colorSpace.name) {\n            case \"DeviceGray\":\n              // Avoid truncating the image, since `JpegImage.getData`\n              // will expand the image data when `forceRGB === true`.\n              imageLength *= 3;\n            /* falls through */\n            case \"DeviceRGB\":\n            case \"DeviceCMYK\":\n              imgData.kind = ImageKind.RGB_24BPP;\n              imgData.data = this.getImageBytes(\n                imageLength,\n                drawWidth,\n                drawHeight,\n                /* forceRGB = */ true\n              );\n              return imgData;\n          }\n        }\n      }\n\n      imgArray = this.getImageBytes(originalHeight * rowBytes);\n      // imgArray can be incomplete (e.g. after CCITT fax encoding).\n      var actualHeight =\n        0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n      var comps = this.getComponents(imgArray);\n\n      // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n      // more compact RGB_24BPP form if allowable.\n      var alpha01, maybeUndoPreblend;\n      if (!forceRGBA && !this.smask && !this.mask) {\n        imgData.kind = ImageKind.RGB_24BPP;\n        imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n        alpha01 = 0;\n        maybeUndoPreblend = false;\n      } else {\n        imgData.kind = ImageKind.RGBA_32BPP;\n        imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n        alpha01 = 1;\n        maybeUndoPreblend = true;\n\n        // Color key masking (opacity) must be performed before decoding.\n        this.fillOpacity(\n          imgData.data,\n          drawWidth,\n          drawHeight,\n          actualHeight,\n          comps\n        );\n      }\n\n      if (this.needsDecode) {\n        this.decodeBuffer(comps);\n      }\n      this.colorSpace.fillRgb(\n        imgData.data,\n        originalWidth,\n        originalHeight,\n        drawWidth,\n        drawHeight,\n        actualHeight,\n        bpc,\n        comps,\n        alpha01\n      );\n      if (maybeUndoPreblend) {\n        this.undoPreblend(imgData.data, drawWidth, actualHeight);\n      }\n\n      return imgData;\n    },\n\n    fillGrayBuffer(buffer) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          buffer instanceof Uint8ClampedArray,\n          'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n        );\n      }\n      var numComps = this.numComps;\n      if (numComps !== 1) {\n        throw new FormatError(\n          `Reading gray scale from a color image: ${numComps}`\n        );\n      }\n\n      var width = this.width;\n      var height = this.height;\n      var bpc = this.bpc;\n\n      // rows start at byte boundary\n      var rowBytes = (width * numComps * bpc + 7) >> 3;\n      var imgArray = this.getImageBytes(height * rowBytes);\n\n      var comps = this.getComponents(imgArray);\n      var i, length;\n\n      if (bpc === 1) {\n        // inline decoding (= inversion) for 1 bpc images\n        length = width * height;\n        if (this.needsDecode) {\n          // invert and scale to {0, 255}\n          for (i = 0; i < length; ++i) {\n            buffer[i] = (comps[i] - 1) & 255;\n          }\n        } else {\n          // scale to {0, 255}\n          for (i = 0; i < length; ++i) {\n            buffer[i] = -comps[i] & 255;\n          }\n        }\n        return;\n      }\n\n      if (this.needsDecode) {\n        this.decodeBuffer(comps);\n      }\n      length = width * height;\n      // we aren't using a colorspace so we need to scale the value\n      var scale = 255 / ((1 << bpc) - 1);\n      for (i = 0; i < length; ++i) {\n        buffer[i] = scale * comps[i];\n      }\n    },\n\n    getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n      this.image.reset();\n      this.image.drawWidth = drawWidth || this.width;\n      this.image.drawHeight = drawHeight || this.height;\n      this.image.forceRGB = !!forceRGB;\n      return this.image.getBytes(length, /* forceClamped = */ true);\n    },\n  };\n  return PDFImage;\n})();\n\nexport { PDFImage };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://electronjs.org/docs/api/process#processversionselectron\nconst isNodeJS =\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions[\"nw\"] &&\n  !process.versions[\"electron\"];\n\nexport { isNodeJS };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error, prefer-const: error */\n\nimport {\n  AbortException,\n  assert,\n  createPromiseCapability,\n  MissingPDFException,\n  UnexpectedResponseException,\n  UnknownErrorException,\n} from \"./util.js\";\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2,\n};\n\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      reason instanceof Error ||\n        (typeof reason === \"object\" && reason !== null),\n      'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n    );\n  } else {\n    if (typeof reason !== \"object\" || reason === null) {\n      return reason;\n    }\n  }\n  switch (reason.name) {\n    case \"AbortException\":\n      return new AbortException(reason.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(reason.message);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(reason.message, reason.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(reason.message, reason.details);\n    default:\n      return new UnknownErrorException(reason.message, reason.toString());\n  }\n}\n\nclass MessageHandler {\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.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      if (data.targetName !== this.sourceName) {\n        return;\n      }\n      if (data.stream) {\n        this._processStreamMessage(data);\n        return;\n      }\n      if (data.callback) {\n        const callbackId = data.callbackId;\n        const capability = this.callbackCapabilities[callbackId];\n        if (!capability) {\n          throw new Error(`Cannot resolve callback ${callbackId}`);\n        }\n        delete this.callbackCapabilities[callbackId];\n\n        if (data.callback === CallbackKind.DATA) {\n          capability.resolve(data.data);\n        } else if (data.callback === CallbackKind.ERROR) {\n          capability.reject(wrapReason(data.reason));\n        } else {\n          throw new Error(\"Unexpected callback case\");\n        }\n        return;\n      }\n      const action = this.actionHandler[data.action];\n      if (!action) {\n        throw new Error(`Unknown action from worker: ${data.action}`);\n      }\n      if (data.callbackId) {\n        const sourceName = this.sourceName;\n        const targetName = data.sourceName;\n        new Promise(function(resolve) {\n          resolve(action(data.data));\n        }).then(\n          function(result) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              callback: CallbackKind.DATA,\n              callbackId: data.callbackId,\n              data: result,\n            });\n          },\n          function(reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              callback: CallbackKind.ERROR,\n              callbackId: data.callbackId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        return;\n      }\n      if (data.streamId) {\n        this._createStreamSink(data);\n        return;\n      }\n      action(data.data);\n    };\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n  on(actionName, handler) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        typeof handler === \"function\",\n        'MessageHandler.on: Expected \"handler\" to be a function.'\n      );\n    }\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   */\n  send(actionName, data, transfers) {\n    this._postMessage(\n      {\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        data,\n      },\n      transfers\n    );\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = createPromiseCapability();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this._postMessage(\n        {\n          sourceName: this.sourceName,\n          targetName: this.targetName,\n          action: actionName,\n          callbackId,\n          data,\n        },\n        transfers\n      );\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++;\n    const sourceName = this.sourceName;\n    const targetName = this.targetName;\n    const comObj = this.comObj;\n\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = createPromiseCapability();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          this._postMessage(\n            {\n              sourceName,\n              targetName,\n              action: actionName,\n              streamId,\n              data,\n              desiredSize: controller.desiredSize,\n            },\n            transfers\n          );\n          // Return Promise for Async process, to signal success/failure.\n          return startCapability.promise;\n        },\n\n        pull: controller => {\n          const pullCapability = createPromiseCapability();\n          this.streamControllers[streamId].pullCall = pullCapability;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL,\n            streamId,\n            desiredSize: controller.desiredSize,\n          });\n          // Returning Promise will not call \"pull\"\n          // again until current pull is resolved.\n          return pullCapability.promise;\n        },\n\n        cancel: reason => {\n          assert(reason instanceof Error, \"cancel must have a valid reason\");\n          const cancelCapability = createPromiseCapability();\n          this.streamControllers[streamId].cancelCall = cancelCapability;\n          this.streamControllers[streamId].isClosed = true;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL,\n            streamId,\n            reason: wrapReason(reason),\n          });\n          // Return Promise to signal success or failure.\n          return cancelCapability.promise;\n        },\n      },\n      queueingStrategy\n    );\n  }\n\n  /**\n   * @private\n   */\n  _createStreamSink(data) {\n    const 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\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = createPromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        self._postMessage(\n          {\n            sourceName,\n            targetName,\n            stream: StreamKind.ENQUEUE,\n            streamId,\n            chunk,\n          },\n          transfers\n        );\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId,\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      },\n\n      sinkCapability: createPromiseCapability(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    new Promise(function(resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(\n      function() {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          success: true,\n        });\n      },\n      function(reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      }\n    );\n  }\n\n  /**\n   * @private\n   */\n  _processStreamMessage(data) {\n    const streamId = data.streamId;\n    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(\n            wrapReason(data.reason)\n          );\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].pullCall.resolve();\n        } else {\n          this.streamControllers[streamId].pullCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        break;\n      case StreamKind.PULL:\n        // Ignore any pull after close is called.\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        // Pull increases the desiredSize property of sink,\n        // so when it changes from negative to positive,\n        // set ready property as resolved promise.\n        if (\n          this.streamSinks[streamId].desiredSize <= 0 &&\n          data.desiredSize > 0\n        ) {\n          this.streamSinks[streamId].sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        this.streamSinks[streamId].desiredSize = data.desiredSize;\n        const { onPull } = this.streamSinks[data.streamId];\n        new Promise(function(resolve) {\n          resolve(onPull && onPull());\n        }).then(\n          function() {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function(reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        break;\n      case StreamKind.ENQUEUE:\n        assert(\n          this.streamControllers[streamId],\n          \"enqueue should have stream controller\"\n        );\n        if (this.streamControllers[streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[streamId].controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(\n          this.streamControllers[streamId],\n          \"close should have stream controller\"\n        );\n        if (this.streamControllers[streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[streamId].isClosed = true;\n        this.streamControllers[streamId].controller.close();\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(\n          this.streamControllers[streamId],\n          \"error should have stream controller\"\n        );\n        this.streamControllers[streamId].controller.error(\n          wrapReason(data.reason)\n        );\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].cancelCall.resolve();\n        } else {\n          this.streamControllers[streamId].cancelCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!this.streamSinks[streamId]) {\n          break;\n        }\n        const { onCancel } = this.streamSinks[data.streamId];\n        new Promise(function(resolve) {\n          resolve(onCancel && onCancel(wrapReason(data.reason)));\n        }).then(\n          function() {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function(reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        this.streamSinks[streamId].sinkCapability.reject(\n          wrapReason(data.reason)\n        );\n        this.streamSinks[streamId].isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  /**\n   * @private\n   */\n  async _deleteStreamController(streamId) {\n    // Delete the `streamController` only when the start, pull, and cancel\n    // capabilities have settled, to prevent `TypeError`s.\n    await Promise.allSettled(\n      [\n        this.streamControllers[streamId].startCall,\n        this.streamControllers[streamId].pullCall,\n        this.streamControllers[streamId].cancelCall,\n      ].map(function(capability) {\n        return capability && capability.promise;\n      })\n    );\n    delete this.streamControllers[streamId];\n  }\n\n  /**\n   * Sends raw message to the comObj.\n   * @param {Object} message - Raw message.\n   * @param transfers List of transfers/ArrayBuffers, or undefined.\n   * @private\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\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  getFullReader() {\n    assert(!this._fullRequestReader);\n    this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    const readers = this._rangeRequestReaders.slice(0);\n    readers.forEach(function(reader) {\n      reader.cancel(reason);\n    });\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    this._contentLength = null;\n    this._isRangeSupported = false;\n    this._isStreamingSupported = false;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n    this._reader = readableStream.getReader();\n\n    this._headersReady = this._msgHandler\n      .sendWithPromise(\"ReaderHeadersReady\")\n      .then(data => {\n        this._isStreamingSupported = data.isStreamingSupported;\n        this._isRangeSupported = data.isRangeSupported;\n        this._contentLength = data.contentLength;\n      });\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    // `value` is wrapped into Uint8Array, we need to\n    // unwrap it to ArrayBuffer for further processing.\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n  constructor(begin, end, msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n      begin,\n      end,\n    });\n    this._reader = readableStream.getReader();\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\nexport { PDFWorkerStream };\n"],"sourceRoot":""}