1/**
2 * @licstart The following is the entire license notice for the
3 * Javascript code in this page
4 *
5 * Copyright 2019 Mozilla Foundation
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 *     http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 * @licend The above is the entire license notice for the
20 * Javascript code in this page
21 */
22
23(function webpackUniversalModuleDefinition(root, factory) {
24	if(typeof exports === 'object' && typeof module === 'object')
25		module.exports = factory();
26	else if(typeof define === 'function' && define.amd)
27		define("pdfjs-dist/build/pdf", [], factory);
28	else if(typeof exports === 'object')
29		exports["pdfjs-dist/build/pdf"] = factory();
30	else
31		root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory();
32})(this, function() {
33return /******/ (function(modules) { // webpackBootstrap
34/******/ 	// The module cache
35/******/ 	var installedModules = {};
36/******/
37/******/ 	// The require function
38/******/ 	function __w_pdfjs_require__(moduleId) {
39/******/
40/******/ 		// Check if module is in cache
41/******/ 		if(installedModules[moduleId]) {
42/******/ 			return installedModules[moduleId].exports;
43/******/ 		}
44/******/ 		// Create a new module (and put it into the cache)
45/******/ 		var module = installedModules[moduleId] = {
46/******/ 			i: moduleId,
47/******/ 			l: false,
48/******/ 			exports: {}
49/******/ 		};
50/******/
51/******/ 		// Execute the module function
52/******/ 		modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
53/******/
54/******/ 		// Flag the module as loaded
55/******/ 		module.l = true;
56/******/
57/******/ 		// Return the exports of the module
58/******/ 		return module.exports;
59/******/ 	}
60/******/
61/******/
62/******/ 	// expose the modules object (__webpack_modules__)
63/******/ 	__w_pdfjs_require__.m = modules;
64/******/
65/******/ 	// expose the module cache
66/******/ 	__w_pdfjs_require__.c = installedModules;
67/******/
68/******/ 	// define getter function for harmony exports
69/******/ 	__w_pdfjs_require__.d = function(exports, name, getter) {
70/******/ 		if(!__w_pdfjs_require__.o(exports, name)) {
71/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
72/******/ 		}
73/******/ 	};
74/******/
75/******/ 	// define __esModule on exports
76/******/ 	__w_pdfjs_require__.r = function(exports) {
77/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
78/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
79/******/ 		}
80/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
81/******/ 	};
82/******/
83/******/ 	// create a fake namespace object
84/******/ 	// mode & 1: value is a module id, require it
85/******/ 	// mode & 2: merge all properties of value into the ns
86/******/ 	// mode & 4: return value when already ns object
87/******/ 	// mode & 8|1: behave like require
88/******/ 	__w_pdfjs_require__.t = function(value, mode) {
89/******/ 		if(mode & 1) value = __w_pdfjs_require__(value);
90/******/ 		if(mode & 8) return value;
91/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
92/******/ 		var ns = Object.create(null);
93/******/ 		__w_pdfjs_require__.r(ns);
94/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
95/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
96/******/ 		return ns;
97/******/ 	};
98/******/
99/******/ 	// getDefaultExport function for compatibility with non-harmony modules
100/******/ 	__w_pdfjs_require__.n = function(module) {
101/******/ 		var getter = module && module.__esModule ?
102/******/ 			function getDefault() { return module['default']; } :
103/******/ 			function getModuleExports() { return module; };
104/******/ 		__w_pdfjs_require__.d(getter, 'a', getter);
105/******/ 		return getter;
106/******/ 	};
107/******/
108/******/ 	// Object.prototype.hasOwnProperty.call
109/******/ 	__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
110/******/
111/******/ 	// __webpack_public_path__
112/******/ 	__w_pdfjs_require__.p = "";
113/******/
114/******/
115/******/ 	// Load entry module and return exports
116/******/ 	return __w_pdfjs_require__(__w_pdfjs_require__.s = 0);
117/******/ })
118/************************************************************************/
119/******/ ([
120/* 0 */
121/***/ (function(module, exports, __w_pdfjs_require__) {
122
123"use strict";
124
125
126var pdfjsVersion = '2.2.228';
127var pdfjsBuild = 'd7afb74a';
128
129var pdfjsSharedUtil = __w_pdfjs_require__(1);
130
131var pdfjsDisplayAPI = __w_pdfjs_require__(147);
132
133var pdfjsDisplayTextLayer = __w_pdfjs_require__(162);
134
135var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(163);
136
137var pdfjsDisplayDisplayUtils = __w_pdfjs_require__(151);
138
139var pdfjsDisplaySVG = __w_pdfjs_require__(164);
140
141var pdfjsDisplayWorkerOptions = __w_pdfjs_require__(156);
142
143var pdfjsDisplayAPICompatibility = __w_pdfjs_require__(153);
144
145{
146  var isNodeJS = __w_pdfjs_require__(4);
147
148  if (isNodeJS()) {
149    var PDFNodeStream = __w_pdfjs_require__(165).PDFNodeStream;
150
151    pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {
152      return new PDFNodeStream(params);
153    });
154  } else {
155    var PDFNetworkStream = __w_pdfjs_require__(168).PDFNetworkStream;
156
157    var PDFFetchStream;
158
159    if (pdfjsDisplayDisplayUtils.isFetchSupported()) {
160      PDFFetchStream = __w_pdfjs_require__(169).PDFFetchStream;
161    }
162
163    pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {
164      if (PDFFetchStream && pdfjsDisplayDisplayUtils.isValidFetchUrl(params.url)) {
165        return new PDFFetchStream(params);
166      }
167
168      return new PDFNetworkStream(params);
169    });
170  }
171}
172exports.build = pdfjsDisplayAPI.build;
173exports.version = pdfjsDisplayAPI.version;
174exports.getDocument = pdfjsDisplayAPI.getDocument;
175exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;
176exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;
177exports.PDFWorker = pdfjsDisplayAPI.PDFWorker;
178exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;
179exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;
180exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;
181exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;
182exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;
183exports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;
184exports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;
185exports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;
186exports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType;
187exports.PermissionFlag = pdfjsSharedUtil.PermissionFlag;
188exports.UnexpectedResponseException = pdfjsSharedUtil.UnexpectedResponseException;
189exports.OPS = pdfjsSharedUtil.OPS;
190exports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel;
191exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;
192exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;
193exports.createObjectURL = pdfjsSharedUtil.createObjectURL;
194exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;
195exports.shadow = pdfjsSharedUtil.shadow;
196exports.Util = pdfjsSharedUtil.Util;
197exports.ReadableStream = pdfjsSharedUtil.ReadableStream;
198exports.URL = pdfjsSharedUtil.URL;
199exports.RenderingCancelledException = pdfjsDisplayDisplayUtils.RenderingCancelledException;
200exports.getFilenameFromUrl = pdfjsDisplayDisplayUtils.getFilenameFromUrl;
201exports.LinkTarget = pdfjsDisplayDisplayUtils.LinkTarget;
202exports.addLinkAttributes = pdfjsDisplayDisplayUtils.addLinkAttributes;
203exports.loadScript = pdfjsDisplayDisplayUtils.loadScript;
204exports.PDFDateString = pdfjsDisplayDisplayUtils.PDFDateString;
205exports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions;
206exports.apiCompatibilityParams = pdfjsDisplayAPICompatibility.apiCompatibilityParams;
207
208/***/ }),
209/* 1 */
210/***/ (function(module, exports, __w_pdfjs_require__) {
211
212"use strict";
213
214
215Object.defineProperty(exports, "__esModule", {
216  value: true
217});
218exports.arrayByteLength = arrayByteLength;
219exports.arraysToBytes = arraysToBytes;
220exports.assert = assert;
221exports.bytesToString = bytesToString;
222exports.createPromiseCapability = createPromiseCapability;
223exports.getVerbosityLevel = getVerbosityLevel;
224exports.info = info;
225exports.isArrayBuffer = isArrayBuffer;
226exports.isArrayEqual = isArrayEqual;
227exports.isBool = isBool;
228exports.isEmptyObj = isEmptyObj;
229exports.isNum = isNum;
230exports.isString = isString;
231exports.isSpace = isSpace;
232exports.isSameOrigin = isSameOrigin;
233exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
234exports.isLittleEndian = isLittleEndian;
235exports.isEvalSupported = isEvalSupported;
236exports.log2 = log2;
237exports.readInt8 = readInt8;
238exports.readUint16 = readUint16;
239exports.readUint32 = readUint32;
240exports.removeNullCharacters = removeNullCharacters;
241exports.setVerbosityLevel = setVerbosityLevel;
242exports.shadow = shadow;
243exports.string32 = string32;
244exports.stringToBytes = stringToBytes;
245exports.stringToPDFString = stringToPDFString;
246exports.stringToUTF8String = stringToUTF8String;
247exports.utf8StringToString = utf8StringToString;
248exports.warn = warn;
249exports.unreachable = unreachable;
250Object.defineProperty(exports, "ReadableStream", {
251  enumerable: true,
252  get: function get() {
253    return _streams_polyfill.ReadableStream;
254  }
255});
256Object.defineProperty(exports, "URL", {
257  enumerable: true,
258  get: function get() {
259    return _url_polyfill.URL;
260  }
261});
262exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.NativeImageDecoding = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = void 0;
263
264__w_pdfjs_require__(2);
265
266var _streams_polyfill = __w_pdfjs_require__(143);
267
268var _url_polyfill = __w_pdfjs_require__(145);
269
270function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
271
272var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
273exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
274var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
275exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
276var NativeImageDecoding = {
277  NONE: 'none',
278  DECODE: 'decode',
279  DISPLAY: 'display'
280};
281exports.NativeImageDecoding = NativeImageDecoding;
282var PermissionFlag = {
283  PRINT: 0x04,
284  MODIFY_CONTENTS: 0x08,
285  COPY: 0x10,
286  MODIFY_ANNOTATIONS: 0x20,
287  FILL_INTERACTIVE_FORMS: 0x100,
288  COPY_FOR_ACCESSIBILITY: 0x200,
289  ASSEMBLE: 0x400,
290  PRINT_HIGH_QUALITY: 0x800
291};
292exports.PermissionFlag = PermissionFlag;
293var TextRenderingMode = {
294  FILL: 0,
295  STROKE: 1,
296  FILL_STROKE: 2,
297  INVISIBLE: 3,
298  FILL_ADD_TO_PATH: 4,
299  STROKE_ADD_TO_PATH: 5,
300  FILL_STROKE_ADD_TO_PATH: 6,
301  ADD_TO_PATH: 7,
302  FILL_STROKE_MASK: 3,
303  ADD_TO_PATH_FLAG: 4
304};
305exports.TextRenderingMode = TextRenderingMode;
306var ImageKind = {
307  GRAYSCALE_1BPP: 1,
308  RGB_24BPP: 2,
309  RGBA_32BPP: 3
310};
311exports.ImageKind = ImageKind;
312var AnnotationType = {
313  TEXT: 1,
314  LINK: 2,
315  FREETEXT: 3,
316  LINE: 4,
317  SQUARE: 5,
318  CIRCLE: 6,
319  POLYGON: 7,
320  POLYLINE: 8,
321  HIGHLIGHT: 9,
322  UNDERLINE: 10,
323  SQUIGGLY: 11,
324  STRIKEOUT: 12,
325  STAMP: 13,
326  CARET: 14,
327  INK: 15,
328  POPUP: 16,
329  FILEATTACHMENT: 17,
330  SOUND: 18,
331  MOVIE: 19,
332  WIDGET: 20,
333  SCREEN: 21,
334  PRINTERMARK: 22,
335  TRAPNET: 23,
336  WATERMARK: 24,
337  THREED: 25,
338  REDACT: 26
339};
340exports.AnnotationType = AnnotationType;
341var AnnotationFlag = {
342  INVISIBLE: 0x01,
343  HIDDEN: 0x02,
344  PRINT: 0x04,
345  NOZOOM: 0x08,
346  NOROTATE: 0x10,
347  NOVIEW: 0x20,
348  READONLY: 0x40,
349  LOCKED: 0x80,
350  TOGGLENOVIEW: 0x100,
351  LOCKEDCONTENTS: 0x200
352};
353exports.AnnotationFlag = AnnotationFlag;
354var AnnotationFieldFlag = {
355  READONLY: 0x0000001,
356  REQUIRED: 0x0000002,
357  NOEXPORT: 0x0000004,
358  MULTILINE: 0x0001000,
359  PASSWORD: 0x0002000,
360  NOTOGGLETOOFF: 0x0004000,
361  RADIO: 0x0008000,
362  PUSHBUTTON: 0x0010000,
363  COMBO: 0x0020000,
364  EDIT: 0x0040000,
365  SORT: 0x0080000,
366  FILESELECT: 0x0100000,
367  MULTISELECT: 0x0200000,
368  DONOTSPELLCHECK: 0x0400000,
369  DONOTSCROLL: 0x0800000,
370  COMB: 0x1000000,
371  RICHTEXT: 0x2000000,
372  RADIOSINUNISON: 0x2000000,
373  COMMITONSELCHANGE: 0x4000000
374};
375exports.AnnotationFieldFlag = AnnotationFieldFlag;
376var AnnotationBorderStyleType = {
377  SOLID: 1,
378  DASHED: 2,
379  BEVELED: 3,
380  INSET: 4,
381  UNDERLINE: 5
382};
383exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
384var StreamType = {
385  UNKNOWN: 0,
386  FLATE: 1,
387  LZW: 2,
388  DCT: 3,
389  JPX: 4,
390  JBIG: 5,
391  A85: 6,
392  AHX: 7,
393  CCF: 8,
394  RL: 9
395};
396exports.StreamType = StreamType;
397var FontType = {
398  UNKNOWN: 0,
399  TYPE1: 1,
400  TYPE1C: 2,
401  CIDFONTTYPE0: 3,
402  CIDFONTTYPE0C: 4,
403  TRUETYPE: 5,
404  CIDFONTTYPE2: 6,
405  TYPE3: 7,
406  OPENTYPE: 8,
407  TYPE0: 9,
408  MMTYPE1: 10
409};
410exports.FontType = FontType;
411var VerbosityLevel = {
412  ERRORS: 0,
413  WARNINGS: 1,
414  INFOS: 5
415};
416exports.VerbosityLevel = VerbosityLevel;
417var CMapCompressionType = {
418  NONE: 0,
419  BINARY: 1,
420  STREAM: 2
421};
422exports.CMapCompressionType = CMapCompressionType;
423var OPS = {
424  dependency: 1,
425  setLineWidth: 2,
426  setLineCap: 3,
427  setLineJoin: 4,
428  setMiterLimit: 5,
429  setDash: 6,
430  setRenderingIntent: 7,
431  setFlatness: 8,
432  setGState: 9,
433  save: 10,
434  restore: 11,
435  transform: 12,
436  moveTo: 13,
437  lineTo: 14,
438  curveTo: 15,
439  curveTo2: 16,
440  curveTo3: 17,
441  closePath: 18,
442  rectangle: 19,
443  stroke: 20,
444  closeStroke: 21,
445  fill: 22,
446  eoFill: 23,
447  fillStroke: 24,
448  eoFillStroke: 25,
449  closeFillStroke: 26,
450  closeEOFillStroke: 27,
451  endPath: 28,
452  clip: 29,
453  eoClip: 30,
454  beginText: 31,
455  endText: 32,
456  setCharSpacing: 33,
457  setWordSpacing: 34,
458  setHScale: 35,
459  setLeading: 36,
460  setFont: 37,
461  setTextRenderingMode: 38,
462  setTextRise: 39,
463  moveText: 40,
464  setLeadingMoveText: 41,
465  setTextMatrix: 42,
466  nextLine: 43,
467  showText: 44,
468  showSpacedText: 45,
469  nextLineShowText: 46,
470  nextLineSetSpacingShowText: 47,
471  setCharWidth: 48,
472  setCharWidthAndBounds: 49,
473  setStrokeColorSpace: 50,
474  setFillColorSpace: 51,
475  setStrokeColor: 52,
476  setStrokeColorN: 53,
477  setFillColor: 54,
478  setFillColorN: 55,
479  setStrokeGray: 56,
480  setFillGray: 57,
481  setStrokeRGBColor: 58,
482  setFillRGBColor: 59,
483  setStrokeCMYKColor: 60,
484  setFillCMYKColor: 61,
485  shadingFill: 62,
486  beginInlineImage: 63,
487  beginImageData: 64,
488  endInlineImage: 65,
489  paintXObject: 66,
490  markPoint: 67,
491  markPointProps: 68,
492  beginMarkedContent: 69,
493  beginMarkedContentProps: 70,
494  endMarkedContent: 71,
495  beginCompat: 72,
496  endCompat: 73,
497  paintFormXObjectBegin: 74,
498  paintFormXObjectEnd: 75,
499  beginGroup: 76,
500  endGroup: 77,
501  beginAnnotations: 78,
502  endAnnotations: 79,
503  beginAnnotation: 80,
504  endAnnotation: 81,
505  paintJpegXObject: 82,
506  paintImageMaskXObject: 83,
507  paintImageMaskXObjectGroup: 84,
508  paintImageXObject: 85,
509  paintInlineImageXObject: 86,
510  paintInlineImageXObjectGroup: 87,
511  paintImageXObjectRepeat: 88,
512  paintImageMaskXObjectRepeat: 89,
513  paintSolidColorImageMask: 90,
514  constructPath: 91
515};
516exports.OPS = OPS;
517var UNSUPPORTED_FEATURES = {
518  unknown: 'unknown',
519  forms: 'forms',
520  javaScript: 'javaScript',
521  smask: 'smask',
522  shadingPattern: 'shadingPattern',
523  font: 'font'
524};
525exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
526var PasswordResponses = {
527  NEED_PASSWORD: 1,
528  INCORRECT_PASSWORD: 2
529};
530exports.PasswordResponses = PasswordResponses;
531var verbosity = VerbosityLevel.WARNINGS;
532
533function setVerbosityLevel(level) {
534  if (Number.isInteger(level)) {
535    verbosity = level;
536  }
537}
538
539function getVerbosityLevel() {
540  return verbosity;
541}
542
543function info(msg) {
544  if (verbosity >= VerbosityLevel.INFOS) {
545    console.log('Info: ' + msg);
546  }
547}
548
549function warn(msg) {
550  if (verbosity >= VerbosityLevel.WARNINGS) {
551    console.log('Warning: ' + msg);
552  }
553}
554
555function unreachable(msg) {
556  throw new Error(msg);
557}
558
559function assert(cond, msg) {
560  if (!cond) {
561    unreachable(msg);
562  }
563}
564
565function isSameOrigin(baseUrl, otherUrl) {
566  try {
567    var base = new _url_polyfill.URL(baseUrl);
568
569    if (!base.origin || base.origin === 'null') {
570      return false;
571    }
572  } catch (e) {
573    return false;
574  }
575
576  var other = new _url_polyfill.URL(otherUrl, base);
577  return base.origin === other.origin;
578}
579
580function _isValidProtocol(url) {
581  if (!url) {
582    return false;
583  }
584
585  switch (url.protocol) {
586    case 'http:':
587    case 'https:':
588    case 'ftp:':
589    case 'mailto:':
590    case 'tel:':
591      return true;
592
593    default:
594      return false;
595  }
596}
597
598function createValidAbsoluteUrl(url, baseUrl) {
599  if (!url) {
600    return null;
601  }
602
603  try {
604    var absoluteUrl = baseUrl ? new _url_polyfill.URL(url, baseUrl) : new _url_polyfill.URL(url);
605
606    if (_isValidProtocol(absoluteUrl)) {
607      return absoluteUrl;
608    }
609  } catch (ex) {}
610
611  return null;
612}
613
614function shadow(obj, prop, value) {
615  Object.defineProperty(obj, prop, {
616    value: value,
617    enumerable: true,
618    configurable: true,
619    writable: false
620  });
621  return value;
622}
623
624var PasswordException = function PasswordExceptionClosure() {
625  function PasswordException(msg, code) {
626    this.name = 'PasswordException';
627    this.message = msg;
628    this.code = code;
629  }
630
631  PasswordException.prototype = new Error();
632  PasswordException.constructor = PasswordException;
633  return PasswordException;
634}();
635
636exports.PasswordException = PasswordException;
637
638var UnknownErrorException = function UnknownErrorExceptionClosure() {
639  function UnknownErrorException(msg, details) {
640    this.name = 'UnknownErrorException';
641    this.message = msg;
642    this.details = details;
643  }
644
645  UnknownErrorException.prototype = new Error();
646  UnknownErrorException.constructor = UnknownErrorException;
647  return UnknownErrorException;
648}();
649
650exports.UnknownErrorException = UnknownErrorException;
651
652var InvalidPDFException = function InvalidPDFExceptionClosure() {
653  function InvalidPDFException(msg) {
654    this.name = 'InvalidPDFException';
655    this.message = msg;
656  }
657
658  InvalidPDFException.prototype = new Error();
659  InvalidPDFException.constructor = InvalidPDFException;
660  return InvalidPDFException;
661}();
662
663exports.InvalidPDFException = InvalidPDFException;
664
665var MissingPDFException = function MissingPDFExceptionClosure() {
666  function MissingPDFException(msg) {
667    this.name = 'MissingPDFException';
668    this.message = msg;
669  }
670
671  MissingPDFException.prototype = new Error();
672  MissingPDFException.constructor = MissingPDFException;
673  return MissingPDFException;
674}();
675
676exports.MissingPDFException = MissingPDFException;
677
678var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() {
679  function UnexpectedResponseException(msg, status) {
680    this.name = 'UnexpectedResponseException';
681    this.message = msg;
682    this.status = status;
683  }
684
685  UnexpectedResponseException.prototype = new Error();
686  UnexpectedResponseException.constructor = UnexpectedResponseException;
687  return UnexpectedResponseException;
688}();
689
690exports.UnexpectedResponseException = UnexpectedResponseException;
691
692var FormatError = function FormatErrorClosure() {
693  function FormatError(msg) {
694    this.message = msg;
695  }
696
697  FormatError.prototype = new Error();
698  FormatError.prototype.name = 'FormatError';
699  FormatError.constructor = FormatError;
700  return FormatError;
701}();
702
703exports.FormatError = FormatError;
704
705var AbortException = function AbortExceptionClosure() {
706  function AbortException(msg) {
707    this.name = 'AbortException';
708    this.message = msg;
709  }
710
711  AbortException.prototype = new Error();
712  AbortException.constructor = AbortException;
713  return AbortException;
714}();
715
716exports.AbortException = AbortException;
717var NullCharactersRegExp = /\x00/g;
718
719function removeNullCharacters(str) {
720  if (typeof str !== 'string') {
721    warn('The argument for removeNullCharacters must be a string.');
722    return str;
723  }
724
725  return str.replace(NullCharactersRegExp, '');
726}
727
728function bytesToString(bytes) {
729  assert(bytes !== null && _typeof(bytes) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString');
730  var length = bytes.length;
731  var MAX_ARGUMENT_COUNT = 8192;
732
733  if (length < MAX_ARGUMENT_COUNT) {
734    return String.fromCharCode.apply(null, bytes);
735  }
736
737  var strBuf = [];
738
739  for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
740    var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
741    var chunk = bytes.subarray(i, chunkEnd);
742    strBuf.push(String.fromCharCode.apply(null, chunk));
743  }
744
745  return strBuf.join('');
746}
747
748function stringToBytes(str) {
749  assert(typeof str === 'string', 'Invalid argument for stringToBytes');
750  var length = str.length;
751  var bytes = new Uint8Array(length);
752
753  for (var i = 0; i < length; ++i) {
754    bytes[i] = str.charCodeAt(i) & 0xFF;
755  }
756
757  return bytes;
758}
759
760function arrayByteLength(arr) {
761  if (arr.length !== undefined) {
762    return arr.length;
763  }
764
765  assert(arr.byteLength !== undefined);
766  return arr.byteLength;
767}
768
769function arraysToBytes(arr) {
770  if (arr.length === 1 && arr[0] instanceof Uint8Array) {
771    return arr[0];
772  }
773
774  var resultLength = 0;
775  var i,
776      ii = arr.length;
777  var item, itemLength;
778
779  for (i = 0; i < ii; i++) {
780    item = arr[i];
781    itemLength = arrayByteLength(item);
782    resultLength += itemLength;
783  }
784
785  var pos = 0;
786  var data = new Uint8Array(resultLength);
787
788  for (i = 0; i < ii; i++) {
789    item = arr[i];
790
791    if (!(item instanceof Uint8Array)) {
792      if (typeof item === 'string') {
793        item = stringToBytes(item);
794      } else {
795        item = new Uint8Array(item);
796      }
797    }
798
799    itemLength = item.byteLength;
800    data.set(item, pos);
801    pos += itemLength;
802  }
803
804  return data;
805}
806
807function string32(value) {
808  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
809}
810
811function log2(x) {
812  if (x <= 0) {
813    return 0;
814  }
815
816  return Math.ceil(Math.log2(x));
817}
818
819function readInt8(data, start) {
820  return data[start] << 24 >> 24;
821}
822
823function readUint16(data, offset) {
824  return data[offset] << 8 | data[offset + 1];
825}
826
827function readUint32(data, offset) {
828  return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;
829}
830
831function isLittleEndian() {
832  var buffer8 = new Uint8Array(4);
833  buffer8[0] = 1;
834  var view32 = new Uint32Array(buffer8.buffer, 0, 1);
835  return view32[0] === 1;
836}
837
838function isEvalSupported() {
839  try {
840    new Function('');
841    return true;
842  } catch (e) {
843    return false;
844  }
845}
846
847var Util = function UtilClosure() {
848  function Util() {}
849
850  var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
851
852  Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
853    rgbBuf[1] = r;
854    rgbBuf[3] = g;
855    rgbBuf[5] = b;
856    return rgbBuf.join('');
857  };
858
859  Util.transform = function Util_transform(m1, m2) {
860    return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];
861  };
862
863  Util.applyTransform = function Util_applyTransform(p, m) {
864    var xt = p[0] * m[0] + p[1] * m[2] + m[4];
865    var yt = p[0] * m[1] + p[1] * m[3] + m[5];
866    return [xt, yt];
867  };
868
869  Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
870    var d = m[0] * m[3] - m[1] * m[2];
871    var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
872    var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
873    return [xt, yt];
874  };
875
876  Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) {
877    var p1 = Util.applyTransform(r, m);
878    var p2 = Util.applyTransform(r.slice(2, 4), m);
879    var p3 = Util.applyTransform([r[0], r[3]], m);
880    var p4 = Util.applyTransform([r[2], r[1]], m);
881    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];
882  };
883
884  Util.inverseTransform = function Util_inverseTransform(m) {
885    var d = m[0] * m[3] - m[1] * m[2];
886    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
887  };
888
889  Util.apply3dTransform = function Util_apply3dTransform(m, v) {
890    return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];
891  };
892
893  Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) {
894    var transpose = [m[0], m[2], m[1], m[3]];
895    var a = m[0] * transpose[0] + m[1] * transpose[2];
896    var b = m[0] * transpose[1] + m[1] * transpose[3];
897    var c = m[2] * transpose[0] + m[3] * transpose[2];
898    var d = m[2] * transpose[1] + m[3] * transpose[3];
899    var first = (a + d) / 2;
900    var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
901    var sx = first + second || 1;
902    var sy = first - second || 1;
903    return [Math.sqrt(sx), Math.sqrt(sy)];
904  };
905
906  Util.normalizeRect = function Util_normalizeRect(rect) {
907    var r = rect.slice(0);
908
909    if (rect[0] > rect[2]) {
910      r[0] = rect[2];
911      r[2] = rect[0];
912    }
913
914    if (rect[1] > rect[3]) {
915      r[1] = rect[3];
916      r[3] = rect[1];
917    }
918
919    return r;
920  };
921
922  Util.intersect = function Util_intersect(rect1, rect2) {
923    function compare(a, b) {
924      return a - b;
925    }
926
927    var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
928        orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
929        result = [];
930    rect1 = Util.normalizeRect(rect1);
931    rect2 = Util.normalizeRect(rect2);
932
933    if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
934      result[0] = orderedX[1];
935      result[2] = orderedX[2];
936    } else {
937      return false;
938    }
939
940    if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
941      result[1] = orderedY[1];
942      result[3] = orderedY[2];
943    } else {
944      return false;
945    }
946
947    return result;
948  };
949
950  return Util;
951}();
952
953exports.Util = Util;
954var PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];
955
956function stringToPDFString(str) {
957  var i,
958      n = str.length,
959      strBuf = [];
960
961  if (str[0] === '\xFE' && str[1] === '\xFF') {
962    for (i = 2; i < n; i += 2) {
963      strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
964    }
965  } else {
966    for (i = 0; i < n; ++i) {
967      var code = PDFStringTranslateTable[str.charCodeAt(i)];
968      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
969    }
970  }
971
972  return strBuf.join('');
973}
974
975function stringToUTF8String(str) {
976  return decodeURIComponent(escape(str));
977}
978
979function utf8StringToString(str) {
980  return unescape(encodeURIComponent(str));
981}
982
983function isEmptyObj(obj) {
984  for (var key in obj) {
985    return false;
986  }
987
988  return true;
989}
990
991function isBool(v) {
992  return typeof v === 'boolean';
993}
994
995function isNum(v) {
996  return typeof v === 'number';
997}
998
999function isString(v) {
1000  return typeof v === 'string';
1001}
1002
1003function isArrayBuffer(v) {
1004  return _typeof(v) === 'object' && v !== null && v.byteLength !== undefined;
1005}
1006
1007function isArrayEqual(arr1, arr2) {
1008  if (arr1.length !== arr2.length) {
1009    return false;
1010  }
1011
1012  return arr1.every(function (element, index) {
1013    return element === arr2[index];
1014  });
1015}
1016
1017function isSpace(ch) {
1018  return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A;
1019}
1020
1021function createPromiseCapability() {
1022  var capability = Object.create(null);
1023  var isSettled = false;
1024  Object.defineProperty(capability, 'settled', {
1025    get: function get() {
1026      return isSettled;
1027    }
1028  });
1029  capability.promise = new Promise(function (resolve, reject) {
1030    capability.resolve = function (data) {
1031      isSettled = true;
1032      resolve(data);
1033    };
1034
1035    capability.reject = function (reason) {
1036      isSettled = true;
1037      reject(reason);
1038    };
1039  });
1040  return capability;
1041}
1042
1043var createObjectURL = function createObjectURLClosure() {
1044  var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
1045  return function createObjectURL(data, contentType) {
1046    var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1047
1048    if (!forceDataSchema && _url_polyfill.URL.createObjectURL) {
1049      var blob = new Blob([data], {
1050        type: contentType
1051      });
1052      return _url_polyfill.URL.createObjectURL(blob);
1053    }
1054
1055    var buffer = 'data:' + contentType + ';base64,';
1056
1057    for (var i = 0, ii = data.length; i < ii; i += 3) {
1058      var b1 = data[i] & 0xFF;
1059      var b2 = data[i + 1] & 0xFF;
1060      var b3 = data[i + 2] & 0xFF;
1061      var d1 = b1 >> 2,
1062          d2 = (b1 & 3) << 4 | b2 >> 4;
1063      var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64;
1064      var d4 = i + 2 < ii ? b3 & 0x3F : 64;
1065      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
1066    }
1067
1068    return buffer;
1069  };
1070}();
1071
1072exports.createObjectURL = createObjectURL;
1073
1074/***/ }),
1075/* 2 */
1076/***/ (function(module, exports, __w_pdfjs_require__) {
1077
1078"use strict";
1079
1080
1081function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1082
1083var globalScope = __w_pdfjs_require__(3);
1084
1085if (!globalScope._pdfjsCompatibilityChecked) {
1086  globalScope._pdfjsCompatibilityChecked = true;
1087
1088  var isNodeJS = __w_pdfjs_require__(4);
1089
1090  var hasDOM = (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object';
1091
1092  (function checkNodeBtoa() {
1093    if (globalScope.btoa || !isNodeJS()) {
1094      return;
1095    }
1096
1097    globalScope.btoa = function (chars) {
1098      return Buffer.from(chars, 'binary').toString('base64');
1099    };
1100  })();
1101
1102  (function checkNodeAtob() {
1103    if (globalScope.atob || !isNodeJS()) {
1104      return;
1105    }
1106
1107    globalScope.atob = function (input) {
1108      return Buffer.from(input, 'base64').toString('binary');
1109    };
1110  })();
1111
1112  (function checkChildNodeRemove() {
1113    if (!hasDOM) {
1114      return;
1115    }
1116
1117    if (typeof Element.prototype.remove !== 'undefined') {
1118      return;
1119    }
1120
1121    Element.prototype.remove = function () {
1122      if (this.parentNode) {
1123        this.parentNode.removeChild(this);
1124      }
1125    };
1126  })();
1127
1128  (function checkDOMTokenListAddRemove() {
1129    if (!hasDOM || isNodeJS()) {
1130      return;
1131    }
1132
1133    var div = document.createElement('div');
1134    div.classList.add('testOne', 'testTwo');
1135
1136    if (div.classList.contains('testOne') === true && div.classList.contains('testTwo') === true) {
1137      return;
1138    }
1139
1140    var OriginalDOMTokenListAdd = DOMTokenList.prototype.add;
1141    var OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;
1142
1143    DOMTokenList.prototype.add = function () {
1144      for (var _len = arguments.length, tokens = new Array(_len), _key = 0; _key < _len; _key++) {
1145        tokens[_key] = arguments[_key];
1146      }
1147
1148      for (var _i = 0, _tokens = tokens; _i < _tokens.length; _i++) {
1149        var token = _tokens[_i];
1150        OriginalDOMTokenListAdd.call(this, token);
1151      }
1152    };
1153
1154    DOMTokenList.prototype.remove = function () {
1155      for (var _len2 = arguments.length, tokens = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1156        tokens[_key2] = arguments[_key2];
1157      }
1158
1159      for (var _i2 = 0, _tokens2 = tokens; _i2 < _tokens2.length; _i2++) {
1160        var token = _tokens2[_i2];
1161        OriginalDOMTokenListRemove.call(this, token);
1162      }
1163    };
1164  })();
1165
1166  (function checkDOMTokenListToggle() {
1167    if (!hasDOM || isNodeJS()) {
1168      return;
1169    }
1170
1171    var div = document.createElement('div');
1172
1173    if (div.classList.toggle('test', 0) === false) {
1174      return;
1175    }
1176
1177    DOMTokenList.prototype.toggle = function (token) {
1178      var force = arguments.length > 1 ? !!arguments[1] : !this.contains(token);
1179      return this[force ? 'add' : 'remove'](token), force;
1180    };
1181  })();
1182
1183  (function checkStringStartsWith() {
1184    if (String.prototype.startsWith) {
1185      return;
1186    }
1187
1188    __w_pdfjs_require__(5);
1189  })();
1190
1191  (function checkStringEndsWith() {
1192    if (String.prototype.endsWith) {
1193      return;
1194    }
1195
1196    __w_pdfjs_require__(36);
1197  })();
1198
1199  (function checkStringIncludes() {
1200    if (String.prototype.includes) {
1201      return;
1202    }
1203
1204    __w_pdfjs_require__(38);
1205  })();
1206
1207  (function checkArrayIncludes() {
1208    if (Array.prototype.includes) {
1209      return;
1210    }
1211
1212    __w_pdfjs_require__(40);
1213  })();
1214
1215  (function checkArrayFrom() {
1216    if (Array.from) {
1217      return;
1218    }
1219
1220    __w_pdfjs_require__(47);
1221  })();
1222
1223  (function checkObjectAssign() {
1224    if (Object.assign) {
1225      return;
1226    }
1227
1228    __w_pdfjs_require__(70);
1229  })();
1230
1231  (function checkMathLog2() {
1232    if (Math.log2) {
1233      return;
1234    }
1235
1236    Math.log2 = __w_pdfjs_require__(75);
1237  })();
1238
1239  (function checkNumberIsNaN() {
1240    if (Number.isNaN) {
1241      return;
1242    }
1243
1244    Number.isNaN = __w_pdfjs_require__(77);
1245  })();
1246
1247  (function checkNumberIsInteger() {
1248    if (Number.isInteger) {
1249      return;
1250    }
1251
1252    Number.isInteger = __w_pdfjs_require__(79);
1253  })();
1254
1255  (function checkPromise() {
1256    if (globalScope.Promise && globalScope.Promise.prototype && globalScope.Promise.prototype["finally"]) {
1257      return;
1258    }
1259
1260    globalScope.Promise = __w_pdfjs_require__(82);
1261  })();
1262
1263  (function checkWeakMap() {
1264    if (globalScope.WeakMap) {
1265      return;
1266    }
1267
1268    globalScope.WeakMap = __w_pdfjs_require__(102);
1269  })();
1270
1271  (function checkWeakSet() {
1272    if (globalScope.WeakSet) {
1273      return;
1274    }
1275
1276    globalScope.WeakSet = __w_pdfjs_require__(119);
1277  })();
1278
1279  (function checkStringCodePointAt() {
1280    if (String.codePointAt) {
1281      return;
1282    }
1283
1284    String.codePointAt = __w_pdfjs_require__(123);
1285  })();
1286
1287  (function checkStringFromCodePoint() {
1288    if (String.fromCodePoint) {
1289      return;
1290    }
1291
1292    String.fromCodePoint = __w_pdfjs_require__(125);
1293  })();
1294
1295  (function checkSymbol() {
1296    if (globalScope.Symbol) {
1297      return;
1298    }
1299
1300    __w_pdfjs_require__(127);
1301  })();
1302
1303  (function checkStringPadStart() {
1304    if (String.prototype.padStart) {
1305      return;
1306    }
1307
1308    __w_pdfjs_require__(134);
1309  })();
1310
1311  (function checkStringPadEnd() {
1312    if (String.prototype.padEnd) {
1313      return;
1314    }
1315
1316    __w_pdfjs_require__(138);
1317  })();
1318
1319  (function checkObjectValues() {
1320    if (Object.values) {
1321      return;
1322    }
1323
1324    Object.values = __w_pdfjs_require__(140);
1325  })();
1326}
1327
1328/***/ }),
1329/* 3 */
1330/***/ (function(module, exports, __w_pdfjs_require__) {
1331
1332"use strict";
1333
1334
1335module.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {};
1336
1337/***/ }),
1338/* 4 */
1339/***/ (function(module, exports, __w_pdfjs_require__) {
1340
1341"use strict";
1342
1343
1344function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1345
1346module.exports = function isNodeJS() {
1347  return (typeof process === "undefined" ? "undefined" : _typeof(process)) === 'object' && process + '' === '[object process]' && !process.versions['nw'] && !process.versions['electron'];
1348};
1349
1350/***/ }),
1351/* 5 */
1352/***/ (function(module, exports, __w_pdfjs_require__) {
1353
1354"use strict";
1355
1356
1357__w_pdfjs_require__(6);
1358
1359module.exports = __w_pdfjs_require__(9).String.startsWith;
1360
1361/***/ }),
1362/* 6 */
1363/***/ (function(module, exports, __w_pdfjs_require__) {
1364
1365"use strict";
1366
1367
1368var $export = __w_pdfjs_require__(7);
1369
1370var toLength = __w_pdfjs_require__(28);
1371
1372var context = __w_pdfjs_require__(30);
1373
1374var STARTS_WITH = 'startsWith';
1375var $startsWith = ''[STARTS_WITH];
1376$export($export.P + $export.F * __w_pdfjs_require__(35)(STARTS_WITH), 'String', {
1377  startsWith: function startsWith(searchString) {
1378    var that = context(this, searchString, STARTS_WITH);
1379    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
1380    var search = String(searchString);
1381    return $startsWith ? $startsWith.call(that, search, index) : that.slice(index, index + search.length) === search;
1382  }
1383});
1384
1385/***/ }),
1386/* 7 */
1387/***/ (function(module, exports, __w_pdfjs_require__) {
1388
1389"use strict";
1390
1391
1392var global = __w_pdfjs_require__(8);
1393
1394var core = __w_pdfjs_require__(9);
1395
1396var hide = __w_pdfjs_require__(10);
1397
1398var redefine = __w_pdfjs_require__(20);
1399
1400var ctx = __w_pdfjs_require__(26);
1401
1402var PROTOTYPE = 'prototype';
1403
1404var $export = function $export(type, name, source) {
1405  var IS_FORCED = type & $export.F;
1406  var IS_GLOBAL = type & $export.G;
1407  var IS_STATIC = type & $export.S;
1408  var IS_PROTO = type & $export.P;
1409  var IS_BIND = type & $export.B;
1410  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
1411  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
1412  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
1413  var key, own, out, exp;
1414  if (IS_GLOBAL) source = name;
1415
1416  for (key in source) {
1417    own = !IS_FORCED && target && target[key] !== undefined;
1418    out = (own ? target : source)[key];
1419    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
1420    if (target) redefine(target, key, out, type & $export.U);
1421    if (exports[key] != out) hide(exports, key, exp);
1422    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
1423  }
1424};
1425
1426global.core = core;
1427$export.F = 1;
1428$export.G = 2;
1429$export.S = 4;
1430$export.P = 8;
1431$export.B = 16;
1432$export.W = 32;
1433$export.U = 64;
1434$export.R = 128;
1435module.exports = $export;
1436
1437/***/ }),
1438/* 8 */
1439/***/ (function(module, exports, __w_pdfjs_require__) {
1440
1441"use strict";
1442
1443
1444var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
1445if (typeof __g == 'number') __g = global;
1446
1447/***/ }),
1448/* 9 */
1449/***/ (function(module, exports, __w_pdfjs_require__) {
1450
1451"use strict";
1452
1453
1454var core = module.exports = {
1455  version: '2.6.9'
1456};
1457if (typeof __e == 'number') __e = core;
1458
1459/***/ }),
1460/* 10 */
1461/***/ (function(module, exports, __w_pdfjs_require__) {
1462
1463"use strict";
1464
1465
1466var dP = __w_pdfjs_require__(11);
1467
1468var createDesc = __w_pdfjs_require__(19);
1469
1470module.exports = __w_pdfjs_require__(15) ? function (object, key, value) {
1471  return dP.f(object, key, createDesc(1, value));
1472} : function (object, key, value) {
1473  object[key] = value;
1474  return object;
1475};
1476
1477/***/ }),
1478/* 11 */
1479/***/ (function(module, exports, __w_pdfjs_require__) {
1480
1481"use strict";
1482
1483
1484var anObject = __w_pdfjs_require__(12);
1485
1486var IE8_DOM_DEFINE = __w_pdfjs_require__(14);
1487
1488var toPrimitive = __w_pdfjs_require__(18);
1489
1490var dP = Object.defineProperty;
1491exports.f = __w_pdfjs_require__(15) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
1492  anObject(O);
1493  P = toPrimitive(P, true);
1494  anObject(Attributes);
1495  if (IE8_DOM_DEFINE) try {
1496    return dP(O, P, Attributes);
1497  } catch (e) {}
1498  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
1499  if ('value' in Attributes) O[P] = Attributes.value;
1500  return O;
1501};
1502
1503/***/ }),
1504/* 12 */
1505/***/ (function(module, exports, __w_pdfjs_require__) {
1506
1507"use strict";
1508
1509
1510var isObject = __w_pdfjs_require__(13);
1511
1512module.exports = function (it) {
1513  if (!isObject(it)) throw TypeError(it + ' is not an object!');
1514  return it;
1515};
1516
1517/***/ }),
1518/* 13 */
1519/***/ (function(module, exports, __w_pdfjs_require__) {
1520
1521"use strict";
1522
1523
1524function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1525
1526module.exports = function (it) {
1527  return _typeof(it) === 'object' ? it !== null : typeof it === 'function';
1528};
1529
1530/***/ }),
1531/* 14 */
1532/***/ (function(module, exports, __w_pdfjs_require__) {
1533
1534"use strict";
1535
1536
1537module.exports = !__w_pdfjs_require__(15) && !__w_pdfjs_require__(16)(function () {
1538  return Object.defineProperty(__w_pdfjs_require__(17)('div'), 'a', {
1539    get: function get() {
1540      return 7;
1541    }
1542  }).a != 7;
1543});
1544
1545/***/ }),
1546/* 15 */
1547/***/ (function(module, exports, __w_pdfjs_require__) {
1548
1549"use strict";
1550
1551
1552module.exports = !__w_pdfjs_require__(16)(function () {
1553  return Object.defineProperty({}, 'a', {
1554    get: function get() {
1555      return 7;
1556    }
1557  }).a != 7;
1558});
1559
1560/***/ }),
1561/* 16 */
1562/***/ (function(module, exports, __w_pdfjs_require__) {
1563
1564"use strict";
1565
1566
1567module.exports = function (exec) {
1568  try {
1569    return !!exec();
1570  } catch (e) {
1571    return true;
1572  }
1573};
1574
1575/***/ }),
1576/* 17 */
1577/***/ (function(module, exports, __w_pdfjs_require__) {
1578
1579"use strict";
1580
1581
1582var isObject = __w_pdfjs_require__(13);
1583
1584var document = __w_pdfjs_require__(8).document;
1585
1586var is = isObject(document) && isObject(document.createElement);
1587
1588module.exports = function (it) {
1589  return is ? document.createElement(it) : {};
1590};
1591
1592/***/ }),
1593/* 18 */
1594/***/ (function(module, exports, __w_pdfjs_require__) {
1595
1596"use strict";
1597
1598
1599var isObject = __w_pdfjs_require__(13);
1600
1601module.exports = function (it, S) {
1602  if (!isObject(it)) return it;
1603  var fn, val;
1604  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1605  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
1606  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1607  throw TypeError("Can't convert object to primitive value");
1608};
1609
1610/***/ }),
1611/* 19 */
1612/***/ (function(module, exports, __w_pdfjs_require__) {
1613
1614"use strict";
1615
1616
1617module.exports = function (bitmap, value) {
1618  return {
1619    enumerable: !(bitmap & 1),
1620    configurable: !(bitmap & 2),
1621    writable: !(bitmap & 4),
1622    value: value
1623  };
1624};
1625
1626/***/ }),
1627/* 20 */
1628/***/ (function(module, exports, __w_pdfjs_require__) {
1629
1630"use strict";
1631
1632
1633var global = __w_pdfjs_require__(8);
1634
1635var hide = __w_pdfjs_require__(10);
1636
1637var has = __w_pdfjs_require__(21);
1638
1639var SRC = __w_pdfjs_require__(22)('src');
1640
1641var $toString = __w_pdfjs_require__(23);
1642
1643var TO_STRING = 'toString';
1644var TPL = ('' + $toString).split(TO_STRING);
1645
1646__w_pdfjs_require__(9).inspectSource = function (it) {
1647  return $toString.call(it);
1648};
1649
1650(module.exports = function (O, key, val, safe) {
1651  var isFunction = typeof val == 'function';
1652  if (isFunction) has(val, 'name') || hide(val, 'name', key);
1653  if (O[key] === val) return;
1654  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
1655
1656  if (O === global) {
1657    O[key] = val;
1658  } else if (!safe) {
1659    delete O[key];
1660    hide(O, key, val);
1661  } else if (O[key]) {
1662    O[key] = val;
1663  } else {
1664    hide(O, key, val);
1665  }
1666})(Function.prototype, TO_STRING, function toString() {
1667  return typeof this == 'function' && this[SRC] || $toString.call(this);
1668});
1669
1670/***/ }),
1671/* 21 */
1672/***/ (function(module, exports, __w_pdfjs_require__) {
1673
1674"use strict";
1675
1676
1677var hasOwnProperty = {}.hasOwnProperty;
1678
1679module.exports = function (it, key) {
1680  return hasOwnProperty.call(it, key);
1681};
1682
1683/***/ }),
1684/* 22 */
1685/***/ (function(module, exports, __w_pdfjs_require__) {
1686
1687"use strict";
1688
1689
1690var id = 0;
1691var px = Math.random();
1692
1693module.exports = function (key) {
1694  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
1695};
1696
1697/***/ }),
1698/* 23 */
1699/***/ (function(module, exports, __w_pdfjs_require__) {
1700
1701"use strict";
1702
1703
1704module.exports = __w_pdfjs_require__(24)('native-function-to-string', Function.toString);
1705
1706/***/ }),
1707/* 24 */
1708/***/ (function(module, exports, __w_pdfjs_require__) {
1709
1710"use strict";
1711
1712
1713var core = __w_pdfjs_require__(9);
1714
1715var global = __w_pdfjs_require__(8);
1716
1717var SHARED = '__core-js_shared__';
1718var store = global[SHARED] || (global[SHARED] = {});
1719(module.exports = function (key, value) {
1720  return store[key] || (store[key] = value !== undefined ? value : {});
1721})('versions', []).push({
1722  version: core.version,
1723  mode: __w_pdfjs_require__(25) ? 'pure' : 'global',
1724  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
1725});
1726
1727/***/ }),
1728/* 25 */
1729/***/ (function(module, exports, __w_pdfjs_require__) {
1730
1731"use strict";
1732
1733
1734module.exports = false;
1735
1736/***/ }),
1737/* 26 */
1738/***/ (function(module, exports, __w_pdfjs_require__) {
1739
1740"use strict";
1741
1742
1743var aFunction = __w_pdfjs_require__(27);
1744
1745module.exports = function (fn, that, length) {
1746  aFunction(fn);
1747  if (that === undefined) return fn;
1748
1749  switch (length) {
1750    case 1:
1751      return function (a) {
1752        return fn.call(that, a);
1753      };
1754
1755    case 2:
1756      return function (a, b) {
1757        return fn.call(that, a, b);
1758      };
1759
1760    case 3:
1761      return function (a, b, c) {
1762        return fn.call(that, a, b, c);
1763      };
1764  }
1765
1766  return function () {
1767    return fn.apply(that, arguments);
1768  };
1769};
1770
1771/***/ }),
1772/* 27 */
1773/***/ (function(module, exports, __w_pdfjs_require__) {
1774
1775"use strict";
1776
1777
1778module.exports = function (it) {
1779  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
1780  return it;
1781};
1782
1783/***/ }),
1784/* 28 */
1785/***/ (function(module, exports, __w_pdfjs_require__) {
1786
1787"use strict";
1788
1789
1790var toInteger = __w_pdfjs_require__(29);
1791
1792var min = Math.min;
1793
1794module.exports = function (it) {
1795  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0;
1796};
1797
1798/***/ }),
1799/* 29 */
1800/***/ (function(module, exports, __w_pdfjs_require__) {
1801
1802"use strict";
1803
1804
1805var ceil = Math.ceil;
1806var floor = Math.floor;
1807
1808module.exports = function (it) {
1809  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
1810};
1811
1812/***/ }),
1813/* 30 */
1814/***/ (function(module, exports, __w_pdfjs_require__) {
1815
1816"use strict";
1817
1818
1819var isRegExp = __w_pdfjs_require__(31);
1820
1821var defined = __w_pdfjs_require__(34);
1822
1823module.exports = function (that, searchString, NAME) {
1824  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
1825  return String(defined(that));
1826};
1827
1828/***/ }),
1829/* 31 */
1830/***/ (function(module, exports, __w_pdfjs_require__) {
1831
1832"use strict";
1833
1834
1835var isObject = __w_pdfjs_require__(13);
1836
1837var cof = __w_pdfjs_require__(32);
1838
1839var MATCH = __w_pdfjs_require__(33)('match');
1840
1841module.exports = function (it) {
1842  var isRegExp;
1843  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
1844};
1845
1846/***/ }),
1847/* 32 */
1848/***/ (function(module, exports, __w_pdfjs_require__) {
1849
1850"use strict";
1851
1852
1853var toString = {}.toString;
1854
1855module.exports = function (it) {
1856  return toString.call(it).slice(8, -1);
1857};
1858
1859/***/ }),
1860/* 33 */
1861/***/ (function(module, exports, __w_pdfjs_require__) {
1862
1863"use strict";
1864
1865
1866var store = __w_pdfjs_require__(24)('wks');
1867
1868var uid = __w_pdfjs_require__(22);
1869
1870var _Symbol = __w_pdfjs_require__(8).Symbol;
1871
1872var USE_SYMBOL = typeof _Symbol == 'function';
1873
1874var $exports = module.exports = function (name) {
1875  return store[name] || (store[name] = USE_SYMBOL && _Symbol[name] || (USE_SYMBOL ? _Symbol : uid)('Symbol.' + name));
1876};
1877
1878$exports.store = store;
1879
1880/***/ }),
1881/* 34 */
1882/***/ (function(module, exports, __w_pdfjs_require__) {
1883
1884"use strict";
1885
1886
1887module.exports = function (it) {
1888  if (it == undefined) throw TypeError("Can't call method on  " + it);
1889  return it;
1890};
1891
1892/***/ }),
1893/* 35 */
1894/***/ (function(module, exports, __w_pdfjs_require__) {
1895
1896"use strict";
1897
1898
1899var MATCH = __w_pdfjs_require__(33)('match');
1900
1901module.exports = function (KEY) {
1902  var re = /./;
1903
1904  try {
1905    '/./'[KEY](re);
1906  } catch (e) {
1907    try {
1908      re[MATCH] = false;
1909      return !'/./'[KEY](re);
1910    } catch (f) {}
1911  }
1912
1913  return true;
1914};
1915
1916/***/ }),
1917/* 36 */
1918/***/ (function(module, exports, __w_pdfjs_require__) {
1919
1920"use strict";
1921
1922
1923__w_pdfjs_require__(37);
1924
1925module.exports = __w_pdfjs_require__(9).String.endsWith;
1926
1927/***/ }),
1928/* 37 */
1929/***/ (function(module, exports, __w_pdfjs_require__) {
1930
1931"use strict";
1932
1933
1934var $export = __w_pdfjs_require__(7);
1935
1936var toLength = __w_pdfjs_require__(28);
1937
1938var context = __w_pdfjs_require__(30);
1939
1940var ENDS_WITH = 'endsWith';
1941var $endsWith = ''[ENDS_WITH];
1942$export($export.P + $export.F * __w_pdfjs_require__(35)(ENDS_WITH), 'String', {
1943  endsWith: function endsWith(searchString) {
1944    var that = context(this, searchString, ENDS_WITH);
1945    var endPosition = arguments.length > 1 ? arguments[1] : undefined;
1946    var len = toLength(that.length);
1947    var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);
1948    var search = String(searchString);
1949    return $endsWith ? $endsWith.call(that, search, end) : that.slice(end - search.length, end) === search;
1950  }
1951});
1952
1953/***/ }),
1954/* 38 */
1955/***/ (function(module, exports, __w_pdfjs_require__) {
1956
1957"use strict";
1958
1959
1960__w_pdfjs_require__(39);
1961
1962module.exports = __w_pdfjs_require__(9).String.includes;
1963
1964/***/ }),
1965/* 39 */
1966/***/ (function(module, exports, __w_pdfjs_require__) {
1967
1968"use strict";
1969
1970
1971var $export = __w_pdfjs_require__(7);
1972
1973var context = __w_pdfjs_require__(30);
1974
1975var INCLUDES = 'includes';
1976$export($export.P + $export.F * __w_pdfjs_require__(35)(INCLUDES), 'String', {
1977  includes: function includes(searchString) {
1978    return !!~context(this, searchString, INCLUDES).indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
1979  }
1980});
1981
1982/***/ }),
1983/* 40 */
1984/***/ (function(module, exports, __w_pdfjs_require__) {
1985
1986"use strict";
1987
1988
1989__w_pdfjs_require__(41);
1990
1991module.exports = __w_pdfjs_require__(9).Array.includes;
1992
1993/***/ }),
1994/* 41 */
1995/***/ (function(module, exports, __w_pdfjs_require__) {
1996
1997"use strict";
1998
1999
2000var $export = __w_pdfjs_require__(7);
2001
2002var $includes = __w_pdfjs_require__(42)(true);
2003
2004$export($export.P, 'Array', {
2005  includes: function includes(el) {
2006    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
2007  }
2008});
2009
2010__w_pdfjs_require__(46)('includes');
2011
2012/***/ }),
2013/* 42 */
2014/***/ (function(module, exports, __w_pdfjs_require__) {
2015
2016"use strict";
2017
2018
2019var toIObject = __w_pdfjs_require__(43);
2020
2021var toLength = __w_pdfjs_require__(28);
2022
2023var toAbsoluteIndex = __w_pdfjs_require__(45);
2024
2025module.exports = function (IS_INCLUDES) {
2026  return function ($this, el, fromIndex) {
2027    var O = toIObject($this);
2028    var length = toLength(O.length);
2029    var index = toAbsoluteIndex(fromIndex, length);
2030    var value;
2031    if (IS_INCLUDES && el != el) while (length > index) {
2032      value = O[index++];
2033      if (value != value) return true;
2034    } else for (; length > index; index++) {
2035      if (IS_INCLUDES || index in O) {
2036        if (O[index] === el) return IS_INCLUDES || index || 0;
2037      }
2038    }
2039    return !IS_INCLUDES && -1;
2040  };
2041};
2042
2043/***/ }),
2044/* 43 */
2045/***/ (function(module, exports, __w_pdfjs_require__) {
2046
2047"use strict";
2048
2049
2050var IObject = __w_pdfjs_require__(44);
2051
2052var defined = __w_pdfjs_require__(34);
2053
2054module.exports = function (it) {
2055  return IObject(defined(it));
2056};
2057
2058/***/ }),
2059/* 44 */
2060/***/ (function(module, exports, __w_pdfjs_require__) {
2061
2062"use strict";
2063
2064
2065var cof = __w_pdfjs_require__(32);
2066
2067module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
2068  return cof(it) == 'String' ? it.split('') : Object(it);
2069};
2070
2071/***/ }),
2072/* 45 */
2073/***/ (function(module, exports, __w_pdfjs_require__) {
2074
2075"use strict";
2076
2077
2078var toInteger = __w_pdfjs_require__(29);
2079
2080var max = Math.max;
2081var min = Math.min;
2082
2083module.exports = function (index, length) {
2084  index = toInteger(index);
2085  return index < 0 ? max(index + length, 0) : min(index, length);
2086};
2087
2088/***/ }),
2089/* 46 */
2090/***/ (function(module, exports, __w_pdfjs_require__) {
2091
2092"use strict";
2093
2094
2095var UNSCOPABLES = __w_pdfjs_require__(33)('unscopables');
2096
2097var ArrayProto = Array.prototype;
2098if (ArrayProto[UNSCOPABLES] == undefined) __w_pdfjs_require__(10)(ArrayProto, UNSCOPABLES, {});
2099
2100module.exports = function (key) {
2101  ArrayProto[UNSCOPABLES][key] = true;
2102};
2103
2104/***/ }),
2105/* 47 */
2106/***/ (function(module, exports, __w_pdfjs_require__) {
2107
2108"use strict";
2109
2110
2111__w_pdfjs_require__(48);
2112
2113__w_pdfjs_require__(63);
2114
2115module.exports = __w_pdfjs_require__(9).Array.from;
2116
2117/***/ }),
2118/* 48 */
2119/***/ (function(module, exports, __w_pdfjs_require__) {
2120
2121"use strict";
2122
2123
2124var $at = __w_pdfjs_require__(49)(true);
2125
2126__w_pdfjs_require__(50)(String, 'String', function (iterated) {
2127  this._t = String(iterated);
2128  this._i = 0;
2129}, function () {
2130  var O = this._t;
2131  var index = this._i;
2132  var point;
2133  if (index >= O.length) return {
2134    value: undefined,
2135    done: true
2136  };
2137  point = $at(O, index);
2138  this._i += point.length;
2139  return {
2140    value: point,
2141    done: false
2142  };
2143});
2144
2145/***/ }),
2146/* 49 */
2147/***/ (function(module, exports, __w_pdfjs_require__) {
2148
2149"use strict";
2150
2151
2152var toInteger = __w_pdfjs_require__(29);
2153
2154var defined = __w_pdfjs_require__(34);
2155
2156module.exports = function (TO_STRING) {
2157  return function (that, pos) {
2158    var s = String(defined(that));
2159    var i = toInteger(pos);
2160    var l = s.length;
2161    var a, b;
2162    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
2163    a = s.charCodeAt(i);
2164    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
2165  };
2166};
2167
2168/***/ }),
2169/* 50 */
2170/***/ (function(module, exports, __w_pdfjs_require__) {
2171
2172"use strict";
2173
2174
2175var LIBRARY = __w_pdfjs_require__(25);
2176
2177var $export = __w_pdfjs_require__(7);
2178
2179var redefine = __w_pdfjs_require__(20);
2180
2181var hide = __w_pdfjs_require__(10);
2182
2183var Iterators = __w_pdfjs_require__(51);
2184
2185var $iterCreate = __w_pdfjs_require__(52);
2186
2187var setToStringTag = __w_pdfjs_require__(60);
2188
2189var getPrototypeOf = __w_pdfjs_require__(61);
2190
2191var ITERATOR = __w_pdfjs_require__(33)('iterator');
2192
2193var BUGGY = !([].keys && 'next' in [].keys());
2194var FF_ITERATOR = '@@iterator';
2195var KEYS = 'keys';
2196var VALUES = 'values';
2197
2198var returnThis = function returnThis() {
2199  return this;
2200};
2201
2202module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
2203  $iterCreate(Constructor, NAME, next);
2204
2205  var getMethod = function getMethod(kind) {
2206    if (!BUGGY && kind in proto) return proto[kind];
2207
2208    switch (kind) {
2209      case KEYS:
2210        return function keys() {
2211          return new Constructor(this, kind);
2212        };
2213
2214      case VALUES:
2215        return function values() {
2216          return new Constructor(this, kind);
2217        };
2218    }
2219
2220    return function entries() {
2221      return new Constructor(this, kind);
2222    };
2223  };
2224
2225  var TAG = NAME + ' Iterator';
2226  var DEF_VALUES = DEFAULT == VALUES;
2227  var VALUES_BUG = false;
2228  var proto = Base.prototype;
2229  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
2230  var $default = $native || getMethod(DEFAULT);
2231  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
2232  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
2233  var methods, key, IteratorPrototype;
2234
2235  if ($anyNative) {
2236    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
2237
2238    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
2239      setToStringTag(IteratorPrototype, TAG, true);
2240      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
2241    }
2242  }
2243
2244  if (DEF_VALUES && $native && $native.name !== VALUES) {
2245    VALUES_BUG = true;
2246
2247    $default = function values() {
2248      return $native.call(this);
2249    };
2250  }
2251
2252  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
2253    hide(proto, ITERATOR, $default);
2254  }
2255
2256  Iterators[NAME] = $default;
2257  Iterators[TAG] = returnThis;
2258
2259  if (DEFAULT) {
2260    methods = {
2261      values: DEF_VALUES ? $default : getMethod(VALUES),
2262      keys: IS_SET ? $default : getMethod(KEYS),
2263      entries: $entries
2264    };
2265    if (FORCED) for (key in methods) {
2266      if (!(key in proto)) redefine(proto, key, methods[key]);
2267    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
2268  }
2269
2270  return methods;
2271};
2272
2273/***/ }),
2274/* 51 */
2275/***/ (function(module, exports, __w_pdfjs_require__) {
2276
2277"use strict";
2278
2279
2280module.exports = {};
2281
2282/***/ }),
2283/* 52 */
2284/***/ (function(module, exports, __w_pdfjs_require__) {
2285
2286"use strict";
2287
2288
2289var create = __w_pdfjs_require__(53);
2290
2291var descriptor = __w_pdfjs_require__(19);
2292
2293var setToStringTag = __w_pdfjs_require__(60);
2294
2295var IteratorPrototype = {};
2296
2297__w_pdfjs_require__(10)(IteratorPrototype, __w_pdfjs_require__(33)('iterator'), function () {
2298  return this;
2299});
2300
2301module.exports = function (Constructor, NAME, next) {
2302  Constructor.prototype = create(IteratorPrototype, {
2303    next: descriptor(1, next)
2304  });
2305  setToStringTag(Constructor, NAME + ' Iterator');
2306};
2307
2308/***/ }),
2309/* 53 */
2310/***/ (function(module, exports, __w_pdfjs_require__) {
2311
2312"use strict";
2313
2314
2315var anObject = __w_pdfjs_require__(12);
2316
2317var dPs = __w_pdfjs_require__(54);
2318
2319var enumBugKeys = __w_pdfjs_require__(58);
2320
2321var IE_PROTO = __w_pdfjs_require__(57)('IE_PROTO');
2322
2323var Empty = function Empty() {};
2324
2325var PROTOTYPE = 'prototype';
2326
2327var _createDict = function createDict() {
2328  var iframe = __w_pdfjs_require__(17)('iframe');
2329
2330  var i = enumBugKeys.length;
2331  var lt = '<';
2332  var gt = '>';
2333  var iframeDocument;
2334  iframe.style.display = 'none';
2335
2336  __w_pdfjs_require__(59).appendChild(iframe);
2337
2338  iframe.src = 'javascript:';
2339  iframeDocument = iframe.contentWindow.document;
2340  iframeDocument.open();
2341  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
2342  iframeDocument.close();
2343  _createDict = iframeDocument.F;
2344
2345  while (i--) {
2346    delete _createDict[PROTOTYPE][enumBugKeys[i]];
2347  }
2348
2349  return _createDict();
2350};
2351
2352module.exports = Object.create || function create(O, Properties) {
2353  var result;
2354
2355  if (O !== null) {
2356    Empty[PROTOTYPE] = anObject(O);
2357    result = new Empty();
2358    Empty[PROTOTYPE] = null;
2359    result[IE_PROTO] = O;
2360  } else result = _createDict();
2361
2362  return Properties === undefined ? result : dPs(result, Properties);
2363};
2364
2365/***/ }),
2366/* 54 */
2367/***/ (function(module, exports, __w_pdfjs_require__) {
2368
2369"use strict";
2370
2371
2372var dP = __w_pdfjs_require__(11);
2373
2374var anObject = __w_pdfjs_require__(12);
2375
2376var getKeys = __w_pdfjs_require__(55);
2377
2378module.exports = __w_pdfjs_require__(15) ? Object.defineProperties : function defineProperties(O, Properties) {
2379  anObject(O);
2380  var keys = getKeys(Properties);
2381  var length = keys.length;
2382  var i = 0;
2383  var P;
2384
2385  while (length > i) {
2386    dP.f(O, P = keys[i++], Properties[P]);
2387  }
2388
2389  return O;
2390};
2391
2392/***/ }),
2393/* 55 */
2394/***/ (function(module, exports, __w_pdfjs_require__) {
2395
2396"use strict";
2397
2398
2399var $keys = __w_pdfjs_require__(56);
2400
2401var enumBugKeys = __w_pdfjs_require__(58);
2402
2403module.exports = Object.keys || function keys(O) {
2404  return $keys(O, enumBugKeys);
2405};
2406
2407/***/ }),
2408/* 56 */
2409/***/ (function(module, exports, __w_pdfjs_require__) {
2410
2411"use strict";
2412
2413
2414var has = __w_pdfjs_require__(21);
2415
2416var toIObject = __w_pdfjs_require__(43);
2417
2418var arrayIndexOf = __w_pdfjs_require__(42)(false);
2419
2420var IE_PROTO = __w_pdfjs_require__(57)('IE_PROTO');
2421
2422module.exports = function (object, names) {
2423  var O = toIObject(object);
2424  var i = 0;
2425  var result = [];
2426  var key;
2427
2428  for (key in O) {
2429    if (key != IE_PROTO) has(O, key) && result.push(key);
2430  }
2431
2432  while (names.length > i) {
2433    if (has(O, key = names[i++])) {
2434      ~arrayIndexOf(result, key) || result.push(key);
2435    }
2436  }
2437
2438  return result;
2439};
2440
2441/***/ }),
2442/* 57 */
2443/***/ (function(module, exports, __w_pdfjs_require__) {
2444
2445"use strict";
2446
2447
2448var shared = __w_pdfjs_require__(24)('keys');
2449
2450var uid = __w_pdfjs_require__(22);
2451
2452module.exports = function (key) {
2453  return shared[key] || (shared[key] = uid(key));
2454};
2455
2456/***/ }),
2457/* 58 */
2458/***/ (function(module, exports, __w_pdfjs_require__) {
2459
2460"use strict";
2461
2462
2463module.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(',');
2464
2465/***/ }),
2466/* 59 */
2467/***/ (function(module, exports, __w_pdfjs_require__) {
2468
2469"use strict";
2470
2471
2472var document = __w_pdfjs_require__(8).document;
2473
2474module.exports = document && document.documentElement;
2475
2476/***/ }),
2477/* 60 */
2478/***/ (function(module, exports, __w_pdfjs_require__) {
2479
2480"use strict";
2481
2482
2483var def = __w_pdfjs_require__(11).f;
2484
2485var has = __w_pdfjs_require__(21);
2486
2487var TAG = __w_pdfjs_require__(33)('toStringTag');
2488
2489module.exports = function (it, tag, stat) {
2490  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {
2491    configurable: true,
2492    value: tag
2493  });
2494};
2495
2496/***/ }),
2497/* 61 */
2498/***/ (function(module, exports, __w_pdfjs_require__) {
2499
2500"use strict";
2501
2502
2503var has = __w_pdfjs_require__(21);
2504
2505var toObject = __w_pdfjs_require__(62);
2506
2507var IE_PROTO = __w_pdfjs_require__(57)('IE_PROTO');
2508
2509var ObjectProto = Object.prototype;
2510
2511module.exports = Object.getPrototypeOf || function (O) {
2512  O = toObject(O);
2513  if (has(O, IE_PROTO)) return O[IE_PROTO];
2514
2515  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
2516    return O.constructor.prototype;
2517  }
2518
2519  return O instanceof Object ? ObjectProto : null;
2520};
2521
2522/***/ }),
2523/* 62 */
2524/***/ (function(module, exports, __w_pdfjs_require__) {
2525
2526"use strict";
2527
2528
2529var defined = __w_pdfjs_require__(34);
2530
2531module.exports = function (it) {
2532  return Object(defined(it));
2533};
2534
2535/***/ }),
2536/* 63 */
2537/***/ (function(module, exports, __w_pdfjs_require__) {
2538
2539"use strict";
2540
2541
2542var ctx = __w_pdfjs_require__(26);
2543
2544var $export = __w_pdfjs_require__(7);
2545
2546var toObject = __w_pdfjs_require__(62);
2547
2548var call = __w_pdfjs_require__(64);
2549
2550var isArrayIter = __w_pdfjs_require__(65);
2551
2552var toLength = __w_pdfjs_require__(28);
2553
2554var createProperty = __w_pdfjs_require__(66);
2555
2556var getIterFn = __w_pdfjs_require__(67);
2557
2558$export($export.S + $export.F * !__w_pdfjs_require__(69)(function (iter) {
2559  Array.from(iter);
2560}), 'Array', {
2561  from: function from(arrayLike) {
2562    var O = toObject(arrayLike);
2563    var C = typeof this == 'function' ? this : Array;
2564    var aLen = arguments.length;
2565    var mapfn = aLen > 1 ? arguments[1] : undefined;
2566    var mapping = mapfn !== undefined;
2567    var index = 0;
2568    var iterFn = getIterFn(O);
2569    var length, result, step, iterator;
2570    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
2571
2572    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
2573      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
2574        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
2575      }
2576    } else {
2577      length = toLength(O.length);
2578
2579      for (result = new C(length); length > index; index++) {
2580        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
2581      }
2582    }
2583
2584    result.length = index;
2585    return result;
2586  }
2587});
2588
2589/***/ }),
2590/* 64 */
2591/***/ (function(module, exports, __w_pdfjs_require__) {
2592
2593"use strict";
2594
2595
2596var anObject = __w_pdfjs_require__(12);
2597
2598module.exports = function (iterator, fn, value, entries) {
2599  try {
2600    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
2601  } catch (e) {
2602    var ret = iterator['return'];
2603    if (ret !== undefined) anObject(ret.call(iterator));
2604    throw e;
2605  }
2606};
2607
2608/***/ }),
2609/* 65 */
2610/***/ (function(module, exports, __w_pdfjs_require__) {
2611
2612"use strict";
2613
2614
2615var Iterators = __w_pdfjs_require__(51);
2616
2617var ITERATOR = __w_pdfjs_require__(33)('iterator');
2618
2619var ArrayProto = Array.prototype;
2620
2621module.exports = function (it) {
2622  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
2623};
2624
2625/***/ }),
2626/* 66 */
2627/***/ (function(module, exports, __w_pdfjs_require__) {
2628
2629"use strict";
2630
2631
2632var $defineProperty = __w_pdfjs_require__(11);
2633
2634var createDesc = __w_pdfjs_require__(19);
2635
2636module.exports = function (object, index, value) {
2637  if (index in object) $defineProperty.f(object, index, createDesc(0, value));else object[index] = value;
2638};
2639
2640/***/ }),
2641/* 67 */
2642/***/ (function(module, exports, __w_pdfjs_require__) {
2643
2644"use strict";
2645
2646
2647var classof = __w_pdfjs_require__(68);
2648
2649var ITERATOR = __w_pdfjs_require__(33)('iterator');
2650
2651var Iterators = __w_pdfjs_require__(51);
2652
2653module.exports = __w_pdfjs_require__(9).getIteratorMethod = function (it) {
2654  if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];
2655};
2656
2657/***/ }),
2658/* 68 */
2659/***/ (function(module, exports, __w_pdfjs_require__) {
2660
2661"use strict";
2662
2663
2664var cof = __w_pdfjs_require__(32);
2665
2666var TAG = __w_pdfjs_require__(33)('toStringTag');
2667
2668var ARG = cof(function () {
2669  return arguments;
2670}()) == 'Arguments';
2671
2672var tryGet = function tryGet(it, key) {
2673  try {
2674    return it[key];
2675  } catch (e) {}
2676};
2677
2678module.exports = function (it) {
2679  var O, T, B;
2680  return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T : ARG ? cof(O) : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
2681};
2682
2683/***/ }),
2684/* 69 */
2685/***/ (function(module, exports, __w_pdfjs_require__) {
2686
2687"use strict";
2688
2689
2690var ITERATOR = __w_pdfjs_require__(33)('iterator');
2691
2692var SAFE_CLOSING = false;
2693
2694try {
2695  var riter = [7][ITERATOR]();
2696
2697  riter['return'] = function () {
2698    SAFE_CLOSING = true;
2699  };
2700
2701  Array.from(riter, function () {
2702    throw 2;
2703  });
2704} catch (e) {}
2705
2706module.exports = function (exec, skipClosing) {
2707  if (!skipClosing && !SAFE_CLOSING) return false;
2708  var safe = false;
2709
2710  try {
2711    var arr = [7];
2712    var iter = arr[ITERATOR]();
2713
2714    iter.next = function () {
2715      return {
2716        done: safe = true
2717      };
2718    };
2719
2720    arr[ITERATOR] = function () {
2721      return iter;
2722    };
2723
2724    exec(arr);
2725  } catch (e) {}
2726
2727  return safe;
2728};
2729
2730/***/ }),
2731/* 70 */
2732/***/ (function(module, exports, __w_pdfjs_require__) {
2733
2734"use strict";
2735
2736
2737__w_pdfjs_require__(71);
2738
2739module.exports = __w_pdfjs_require__(9).Object.assign;
2740
2741/***/ }),
2742/* 71 */
2743/***/ (function(module, exports, __w_pdfjs_require__) {
2744
2745"use strict";
2746
2747
2748var $export = __w_pdfjs_require__(7);
2749
2750$export($export.S + $export.F, 'Object', {
2751  assign: __w_pdfjs_require__(72)
2752});
2753
2754/***/ }),
2755/* 72 */
2756/***/ (function(module, exports, __w_pdfjs_require__) {
2757
2758"use strict";
2759
2760
2761var DESCRIPTORS = __w_pdfjs_require__(15);
2762
2763var getKeys = __w_pdfjs_require__(55);
2764
2765var gOPS = __w_pdfjs_require__(73);
2766
2767var pIE = __w_pdfjs_require__(74);
2768
2769var toObject = __w_pdfjs_require__(62);
2770
2771var IObject = __w_pdfjs_require__(44);
2772
2773var $assign = Object.assign;
2774module.exports = !$assign || __w_pdfjs_require__(16)(function () {
2775  var A = {};
2776  var B = {};
2777  var S = Symbol();
2778  var K = 'abcdefghijklmnopqrst';
2779  A[S] = 7;
2780  K.split('').forEach(function (k) {
2781    B[k] = k;
2782  });
2783  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
2784}) ? function assign(target, source) {
2785  var T = toObject(target);
2786  var aLen = arguments.length;
2787  var index = 1;
2788  var getSymbols = gOPS.f;
2789  var isEnum = pIE.f;
2790
2791  while (aLen > index) {
2792    var S = IObject(arguments[index++]);
2793    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
2794    var length = keys.length;
2795    var j = 0;
2796    var key;
2797
2798    while (length > j) {
2799      key = keys[j++];
2800      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
2801    }
2802  }
2803
2804  return T;
2805} : $assign;
2806
2807/***/ }),
2808/* 73 */
2809/***/ (function(module, exports, __w_pdfjs_require__) {
2810
2811"use strict";
2812
2813
2814exports.f = Object.getOwnPropertySymbols;
2815
2816/***/ }),
2817/* 74 */
2818/***/ (function(module, exports, __w_pdfjs_require__) {
2819
2820"use strict";
2821
2822
2823exports.f = {}.propertyIsEnumerable;
2824
2825/***/ }),
2826/* 75 */
2827/***/ (function(module, exports, __w_pdfjs_require__) {
2828
2829"use strict";
2830
2831
2832__w_pdfjs_require__(76);
2833
2834module.exports = __w_pdfjs_require__(9).Math.log2;
2835
2836/***/ }),
2837/* 76 */
2838/***/ (function(module, exports, __w_pdfjs_require__) {
2839
2840"use strict";
2841
2842
2843var $export = __w_pdfjs_require__(7);
2844
2845$export($export.S, 'Math', {
2846  log2: function log2(x) {
2847    return Math.log(x) / Math.LN2;
2848  }
2849});
2850
2851/***/ }),
2852/* 77 */
2853/***/ (function(module, exports, __w_pdfjs_require__) {
2854
2855"use strict";
2856
2857
2858__w_pdfjs_require__(78);
2859
2860module.exports = __w_pdfjs_require__(9).Number.isNaN;
2861
2862/***/ }),
2863/* 78 */
2864/***/ (function(module, exports, __w_pdfjs_require__) {
2865
2866"use strict";
2867
2868
2869var $export = __w_pdfjs_require__(7);
2870
2871$export($export.S, 'Number', {
2872  isNaN: function isNaN(number) {
2873    return number != number;
2874  }
2875});
2876
2877/***/ }),
2878/* 79 */
2879/***/ (function(module, exports, __w_pdfjs_require__) {
2880
2881"use strict";
2882
2883
2884__w_pdfjs_require__(80);
2885
2886module.exports = __w_pdfjs_require__(9).Number.isInteger;
2887
2888/***/ }),
2889/* 80 */
2890/***/ (function(module, exports, __w_pdfjs_require__) {
2891
2892"use strict";
2893
2894
2895var $export = __w_pdfjs_require__(7);
2896
2897$export($export.S, 'Number', {
2898  isInteger: __w_pdfjs_require__(81)
2899});
2900
2901/***/ }),
2902/* 81 */
2903/***/ (function(module, exports, __w_pdfjs_require__) {
2904
2905"use strict";
2906
2907
2908var isObject = __w_pdfjs_require__(13);
2909
2910var floor = Math.floor;
2911
2912module.exports = function isInteger(it) {
2913  return !isObject(it) && isFinite(it) && floor(it) === it;
2914};
2915
2916/***/ }),
2917/* 82 */
2918/***/ (function(module, exports, __w_pdfjs_require__) {
2919
2920"use strict";
2921
2922
2923__w_pdfjs_require__(83);
2924
2925__w_pdfjs_require__(48);
2926
2927__w_pdfjs_require__(84);
2928
2929__w_pdfjs_require__(87);
2930
2931__w_pdfjs_require__(100);
2932
2933__w_pdfjs_require__(101);
2934
2935module.exports = __w_pdfjs_require__(9).Promise;
2936
2937/***/ }),
2938/* 83 */
2939/***/ (function(module, exports, __w_pdfjs_require__) {
2940
2941"use strict";
2942
2943
2944var classof = __w_pdfjs_require__(68);
2945
2946var test = {};
2947test[__w_pdfjs_require__(33)('toStringTag')] = 'z';
2948
2949if (test + '' != '[object z]') {
2950  __w_pdfjs_require__(20)(Object.prototype, 'toString', function toString() {
2951    return '[object ' + classof(this) + ']';
2952  }, true);
2953}
2954
2955/***/ }),
2956/* 84 */
2957/***/ (function(module, exports, __w_pdfjs_require__) {
2958
2959"use strict";
2960
2961
2962var $iterators = __w_pdfjs_require__(85);
2963
2964var getKeys = __w_pdfjs_require__(55);
2965
2966var redefine = __w_pdfjs_require__(20);
2967
2968var global = __w_pdfjs_require__(8);
2969
2970var hide = __w_pdfjs_require__(10);
2971
2972var Iterators = __w_pdfjs_require__(51);
2973
2974var wks = __w_pdfjs_require__(33);
2975
2976var ITERATOR = wks('iterator');
2977var TO_STRING_TAG = wks('toStringTag');
2978var ArrayValues = Iterators.Array;
2979var DOMIterables = {
2980  CSSRuleList: true,
2981  CSSStyleDeclaration: false,
2982  CSSValueList: false,
2983  ClientRectList: false,
2984  DOMRectList: false,
2985  DOMStringList: false,
2986  DOMTokenList: true,
2987  DataTransferItemList: false,
2988  FileList: false,
2989  HTMLAllCollection: false,
2990  HTMLCollection: false,
2991  HTMLFormElement: false,
2992  HTMLSelectElement: false,
2993  MediaList: true,
2994  MimeTypeArray: false,
2995  NamedNodeMap: false,
2996  NodeList: true,
2997  PaintRequestList: false,
2998  Plugin: false,
2999  PluginArray: false,
3000  SVGLengthList: false,
3001  SVGNumberList: false,
3002  SVGPathSegList: false,
3003  SVGPointList: false,
3004  SVGStringList: false,
3005  SVGTransformList: false,
3006  SourceBufferList: false,
3007  StyleSheetList: true,
3008  TextTrackCueList: false,
3009  TextTrackList: false,
3010  TouchList: false
3011};
3012
3013for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
3014  var NAME = collections[i];
3015  var explicit = DOMIterables[NAME];
3016  var Collection = global[NAME];
3017  var proto = Collection && Collection.prototype;
3018  var key;
3019
3020  if (proto) {
3021    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
3022    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
3023    Iterators[NAME] = ArrayValues;
3024    if (explicit) for (key in $iterators) {
3025      if (!proto[key]) redefine(proto, key, $iterators[key], true);
3026    }
3027  }
3028}
3029
3030/***/ }),
3031/* 85 */
3032/***/ (function(module, exports, __w_pdfjs_require__) {
3033
3034"use strict";
3035
3036
3037var addToUnscopables = __w_pdfjs_require__(46);
3038
3039var step = __w_pdfjs_require__(86);
3040
3041var Iterators = __w_pdfjs_require__(51);
3042
3043var toIObject = __w_pdfjs_require__(43);
3044
3045module.exports = __w_pdfjs_require__(50)(Array, 'Array', function (iterated, kind) {
3046  this._t = toIObject(iterated);
3047  this._i = 0;
3048  this._k = kind;
3049}, function () {
3050  var O = this._t;
3051  var kind = this._k;
3052  var index = this._i++;
3053
3054  if (!O || index >= O.length) {
3055    this._t = undefined;
3056    return step(1);
3057  }
3058
3059  if (kind == 'keys') return step(0, index);
3060  if (kind == 'values') return step(0, O[index]);
3061  return step(0, [index, O[index]]);
3062}, 'values');
3063Iterators.Arguments = Iterators.Array;
3064addToUnscopables('keys');
3065addToUnscopables('values');
3066addToUnscopables('entries');
3067
3068/***/ }),
3069/* 86 */
3070/***/ (function(module, exports, __w_pdfjs_require__) {
3071
3072"use strict";
3073
3074
3075module.exports = function (done, value) {
3076  return {
3077    value: value,
3078    done: !!done
3079  };
3080};
3081
3082/***/ }),
3083/* 87 */
3084/***/ (function(module, exports, __w_pdfjs_require__) {
3085
3086"use strict";
3087
3088
3089var LIBRARY = __w_pdfjs_require__(25);
3090
3091var global = __w_pdfjs_require__(8);
3092
3093var ctx = __w_pdfjs_require__(26);
3094
3095var classof = __w_pdfjs_require__(68);
3096
3097var $export = __w_pdfjs_require__(7);
3098
3099var isObject = __w_pdfjs_require__(13);
3100
3101var aFunction = __w_pdfjs_require__(27);
3102
3103var anInstance = __w_pdfjs_require__(88);
3104
3105var forOf = __w_pdfjs_require__(89);
3106
3107var speciesConstructor = __w_pdfjs_require__(90);
3108
3109var task = __w_pdfjs_require__(91).set;
3110
3111var microtask = __w_pdfjs_require__(93)();
3112
3113var newPromiseCapabilityModule = __w_pdfjs_require__(94);
3114
3115var perform = __w_pdfjs_require__(95);
3116
3117var userAgent = __w_pdfjs_require__(96);
3118
3119var promiseResolve = __w_pdfjs_require__(97);
3120
3121var PROMISE = 'Promise';
3122var TypeError = global.TypeError;
3123var process = global.process;
3124var versions = process && process.versions;
3125var v8 = versions && versions.v8 || '';
3126var $Promise = global[PROMISE];
3127var isNode = classof(process) == 'process';
3128
3129var empty = function empty() {};
3130
3131var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
3132var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
3133var USE_NATIVE = !!function () {
3134  try {
3135    var promise = $Promise.resolve(1);
3136
3137    var FakePromise = (promise.constructor = {})[__w_pdfjs_require__(33)('species')] = function (exec) {
3138      exec(empty, empty);
3139    };
3140
3141    return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1;
3142  } catch (e) {}
3143}();
3144
3145var isThenable = function isThenable(it) {
3146  var then;
3147  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
3148};
3149
3150var notify = function notify(promise, isReject) {
3151  if (promise._n) return;
3152  promise._n = true;
3153  var chain = promise._c;
3154  microtask(function () {
3155    var value = promise._v;
3156    var ok = promise._s == 1;
3157    var i = 0;
3158
3159    var run = function run(reaction) {
3160      var handler = ok ? reaction.ok : reaction.fail;
3161      var resolve = reaction.resolve;
3162      var reject = reaction.reject;
3163      var domain = reaction.domain;
3164      var result, then, exited;
3165
3166      try {
3167        if (handler) {
3168          if (!ok) {
3169            if (promise._h == 2) onHandleUnhandled(promise);
3170            promise._h = 1;
3171          }
3172
3173          if (handler === true) result = value;else {
3174            if (domain) domain.enter();
3175            result = handler(value);
3176
3177            if (domain) {
3178              domain.exit();
3179              exited = true;
3180            }
3181          }
3182
3183          if (result === reaction.promise) {
3184            reject(TypeError('Promise-chain cycle'));
3185          } else if (then = isThenable(result)) {
3186            then.call(result, resolve, reject);
3187          } else resolve(result);
3188        } else reject(value);
3189      } catch (e) {
3190        if (domain && !exited) domain.exit();
3191        reject(e);
3192      }
3193    };
3194
3195    while (chain.length > i) {
3196      run(chain[i++]);
3197    }
3198
3199    promise._c = [];
3200    promise._n = false;
3201    if (isReject && !promise._h) onUnhandled(promise);
3202  });
3203};
3204
3205var onUnhandled = function onUnhandled(promise) {
3206  task.call(global, function () {
3207    var value = promise._v;
3208    var unhandled = isUnhandled(promise);
3209    var result, handler, console;
3210
3211    if (unhandled) {
3212      result = perform(function () {
3213        if (isNode) {
3214          process.emit('unhandledRejection', value, promise);
3215        } else if (handler = global.onunhandledrejection) {
3216          handler({
3217            promise: promise,
3218            reason: value
3219          });
3220        } else if ((console = global.console) && console.error) {
3221          console.error('Unhandled promise rejection', value);
3222        }
3223      });
3224      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
3225    }
3226
3227    promise._a = undefined;
3228    if (unhandled && result.e) throw result.v;
3229  });
3230};
3231
3232var isUnhandled = function isUnhandled(promise) {
3233  return promise._h !== 1 && (promise._a || promise._c).length === 0;
3234};
3235
3236var onHandleUnhandled = function onHandleUnhandled(promise) {
3237  task.call(global, function () {
3238    var handler;
3239
3240    if (isNode) {
3241      process.emit('rejectionHandled', promise);
3242    } else if (handler = global.onrejectionhandled) {
3243      handler({
3244        promise: promise,
3245        reason: promise._v
3246      });
3247    }
3248  });
3249};
3250
3251var $reject = function $reject(value) {
3252  var promise = this;
3253  if (promise._d) return;
3254  promise._d = true;
3255  promise = promise._w || promise;
3256  promise._v = value;
3257  promise._s = 2;
3258  if (!promise._a) promise._a = promise._c.slice();
3259  notify(promise, true);
3260};
3261
3262var $resolve = function $resolve(value) {
3263  var promise = this;
3264  var then;
3265  if (promise._d) return;
3266  promise._d = true;
3267  promise = promise._w || promise;
3268
3269  try {
3270    if (promise === value) throw TypeError("Promise can't be resolved itself");
3271
3272    if (then = isThenable(value)) {
3273      microtask(function () {
3274        var wrapper = {
3275          _w: promise,
3276          _d: false
3277        };
3278
3279        try {
3280          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
3281        } catch (e) {
3282          $reject.call(wrapper, e);
3283        }
3284      });
3285    } else {
3286      promise._v = value;
3287      promise._s = 1;
3288      notify(promise, false);
3289    }
3290  } catch (e) {
3291    $reject.call({
3292      _w: promise,
3293      _d: false
3294    }, e);
3295  }
3296};
3297
3298if (!USE_NATIVE) {
3299  $Promise = function Promise(executor) {
3300    anInstance(this, $Promise, PROMISE, '_h');
3301    aFunction(executor);
3302    Internal.call(this);
3303
3304    try {
3305      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
3306    } catch (err) {
3307      $reject.call(this, err);
3308    }
3309  };
3310
3311  Internal = function Promise(executor) {
3312    this._c = [];
3313    this._a = undefined;
3314    this._s = 0;
3315    this._d = false;
3316    this._v = undefined;
3317    this._h = 0;
3318    this._n = false;
3319  };
3320
3321  Internal.prototype = __w_pdfjs_require__(98)($Promise.prototype, {
3322    then: function then(onFulfilled, onRejected) {
3323      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
3324      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
3325      reaction.fail = typeof onRejected == 'function' && onRejected;
3326      reaction.domain = isNode ? process.domain : undefined;
3327
3328      this._c.push(reaction);
3329
3330      if (this._a) this._a.push(reaction);
3331      if (this._s) notify(this, false);
3332      return reaction.promise;
3333    },
3334    'catch': function _catch(onRejected) {
3335      return this.then(undefined, onRejected);
3336    }
3337  });
3338
3339  OwnPromiseCapability = function OwnPromiseCapability() {
3340    var promise = new Internal();
3341    this.promise = promise;
3342    this.resolve = ctx($resolve, promise, 1);
3343    this.reject = ctx($reject, promise, 1);
3344  };
3345
3346  newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) {
3347    return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
3348  };
3349}
3350
3351$export($export.G + $export.W + $export.F * !USE_NATIVE, {
3352  Promise: $Promise
3353});
3354
3355__w_pdfjs_require__(60)($Promise, PROMISE);
3356
3357__w_pdfjs_require__(99)(PROMISE);
3358
3359Wrapper = __w_pdfjs_require__(9)[PROMISE];
3360$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
3361  reject: function reject(r) {
3362    var capability = newPromiseCapability(this);
3363    var $$reject = capability.reject;
3364    $$reject(r);
3365    return capability.promise;
3366  }
3367});
3368$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
3369  resolve: function resolve(x) {
3370    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
3371  }
3372});
3373$export($export.S + $export.F * !(USE_NATIVE && __w_pdfjs_require__(69)(function (iter) {
3374  $Promise.all(iter)['catch'](empty);
3375})), PROMISE, {
3376  all: function all(iterable) {
3377    var C = this;
3378    var capability = newPromiseCapability(C);
3379    var resolve = capability.resolve;
3380    var reject = capability.reject;
3381    var result = perform(function () {
3382      var values = [];
3383      var index = 0;
3384      var remaining = 1;
3385      forOf(iterable, false, function (promise) {
3386        var $index = index++;
3387        var alreadyCalled = false;
3388        values.push(undefined);
3389        remaining++;
3390        C.resolve(promise).then(function (value) {
3391          if (alreadyCalled) return;
3392          alreadyCalled = true;
3393          values[$index] = value;
3394          --remaining || resolve(values);
3395        }, reject);
3396      });
3397      --remaining || resolve(values);
3398    });
3399    if (result.e) reject(result.v);
3400    return capability.promise;
3401  },
3402  race: function race(iterable) {
3403    var C = this;
3404    var capability = newPromiseCapability(C);
3405    var reject = capability.reject;
3406    var result = perform(function () {
3407      forOf(iterable, false, function (promise) {
3408        C.resolve(promise).then(capability.resolve, reject);
3409      });
3410    });
3411    if (result.e) reject(result.v);
3412    return capability.promise;
3413  }
3414});
3415
3416/***/ }),
3417/* 88 */
3418/***/ (function(module, exports, __w_pdfjs_require__) {
3419
3420"use strict";
3421
3422
3423module.exports = function (it, Constructor, name, forbiddenField) {
3424  if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) {
3425    throw TypeError(name + ': incorrect invocation!');
3426  }
3427
3428  return it;
3429};
3430
3431/***/ }),
3432/* 89 */
3433/***/ (function(module, exports, __w_pdfjs_require__) {
3434
3435"use strict";
3436
3437
3438var ctx = __w_pdfjs_require__(26);
3439
3440var call = __w_pdfjs_require__(64);
3441
3442var isArrayIter = __w_pdfjs_require__(65);
3443
3444var anObject = __w_pdfjs_require__(12);
3445
3446var toLength = __w_pdfjs_require__(28);
3447
3448var getIterFn = __w_pdfjs_require__(67);
3449
3450var BREAK = {};
3451var RETURN = {};
3452
3453var _exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
3454  var iterFn = ITERATOR ? function () {
3455    return iterable;
3456  } : getIterFn(iterable);
3457  var f = ctx(fn, that, entries ? 2 : 1);
3458  var index = 0;
3459  var length, step, iterator, result;
3460  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
3461  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
3462    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
3463    if (result === BREAK || result === RETURN) return result;
3464  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
3465    result = call(iterator, f, step.value, entries);
3466    if (result === BREAK || result === RETURN) return result;
3467  }
3468};
3469
3470_exports.BREAK = BREAK;
3471_exports.RETURN = RETURN;
3472
3473/***/ }),
3474/* 90 */
3475/***/ (function(module, exports, __w_pdfjs_require__) {
3476
3477"use strict";
3478
3479
3480var anObject = __w_pdfjs_require__(12);
3481
3482var aFunction = __w_pdfjs_require__(27);
3483
3484var SPECIES = __w_pdfjs_require__(33)('species');
3485
3486module.exports = function (O, D) {
3487  var C = anObject(O).constructor;
3488  var S;
3489  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
3490};
3491
3492/***/ }),
3493/* 91 */
3494/***/ (function(module, exports, __w_pdfjs_require__) {
3495
3496"use strict";
3497
3498
3499var ctx = __w_pdfjs_require__(26);
3500
3501var invoke = __w_pdfjs_require__(92);
3502
3503var html = __w_pdfjs_require__(59);
3504
3505var cel = __w_pdfjs_require__(17);
3506
3507var global = __w_pdfjs_require__(8);
3508
3509var process = global.process;
3510var setTask = global.setImmediate;
3511var clearTask = global.clearImmediate;
3512var MessageChannel = global.MessageChannel;
3513var Dispatch = global.Dispatch;
3514var counter = 0;
3515var queue = {};
3516var ONREADYSTATECHANGE = 'onreadystatechange';
3517var defer, channel, port;
3518
3519var run = function run() {
3520  var id = +this;
3521
3522  if (queue.hasOwnProperty(id)) {
3523    var fn = queue[id];
3524    delete queue[id];
3525    fn();
3526  }
3527};
3528
3529var listener = function listener(event) {
3530  run.call(event.data);
3531};
3532
3533if (!setTask || !clearTask) {
3534  setTask = function setImmediate(fn) {
3535    var args = [];
3536    var i = 1;
3537
3538    while (arguments.length > i) {
3539      args.push(arguments[i++]);
3540    }
3541
3542    queue[++counter] = function () {
3543      invoke(typeof fn == 'function' ? fn : Function(fn), args);
3544    };
3545
3546    defer(counter);
3547    return counter;
3548  };
3549
3550  clearTask = function clearImmediate(id) {
3551    delete queue[id];
3552  };
3553
3554  if (__w_pdfjs_require__(32)(process) == 'process') {
3555    defer = function defer(id) {
3556      process.nextTick(ctx(run, id, 1));
3557    };
3558  } else if (Dispatch && Dispatch.now) {
3559    defer = function defer(id) {
3560      Dispatch.now(ctx(run, id, 1));
3561    };
3562  } else if (MessageChannel) {
3563    channel = new MessageChannel();
3564    port = channel.port2;
3565    channel.port1.onmessage = listener;
3566    defer = ctx(port.postMessage, port, 1);
3567  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
3568    defer = function defer(id) {
3569      global.postMessage(id + '', '*');
3570    };
3571
3572    global.addEventListener('message', listener, false);
3573  } else if (ONREADYSTATECHANGE in cel('script')) {
3574    defer = function defer(id) {
3575      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
3576        html.removeChild(this);
3577        run.call(id);
3578      };
3579    };
3580  } else {
3581    defer = function defer(id) {
3582      setTimeout(ctx(run, id, 1), 0);
3583    };
3584  }
3585}
3586
3587module.exports = {
3588  set: setTask,
3589  clear: clearTask
3590};
3591
3592/***/ }),
3593/* 92 */
3594/***/ (function(module, exports, __w_pdfjs_require__) {
3595
3596"use strict";
3597
3598
3599module.exports = function (fn, args, that) {
3600  var un = that === undefined;
3601
3602  switch (args.length) {
3603    case 0:
3604      return un ? fn() : fn.call(that);
3605
3606    case 1:
3607      return un ? fn(args[0]) : fn.call(that, args[0]);
3608
3609    case 2:
3610      return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]);
3611
3612    case 3:
3613      return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]);
3614
3615    case 4:
3616      return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]);
3617  }
3618
3619  return fn.apply(that, args);
3620};
3621
3622/***/ }),
3623/* 93 */
3624/***/ (function(module, exports, __w_pdfjs_require__) {
3625
3626"use strict";
3627
3628
3629var global = __w_pdfjs_require__(8);
3630
3631var macrotask = __w_pdfjs_require__(91).set;
3632
3633var Observer = global.MutationObserver || global.WebKitMutationObserver;
3634var process = global.process;
3635var Promise = global.Promise;
3636var isNode = __w_pdfjs_require__(32)(process) == 'process';
3637
3638module.exports = function () {
3639  var head, last, notify;
3640
3641  var flush = function flush() {
3642    var parent, fn;
3643    if (isNode && (parent = process.domain)) parent.exit();
3644
3645    while (head) {
3646      fn = head.fn;
3647      head = head.next;
3648
3649      try {
3650        fn();
3651      } catch (e) {
3652        if (head) notify();else last = undefined;
3653        throw e;
3654      }
3655    }
3656
3657    last = undefined;
3658    if (parent) parent.enter();
3659  };
3660
3661  if (isNode) {
3662    notify = function notify() {
3663      process.nextTick(flush);
3664    };
3665  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
3666    var toggle = true;
3667    var node = document.createTextNode('');
3668    new Observer(flush).observe(node, {
3669      characterData: true
3670    });
3671
3672    notify = function notify() {
3673      node.data = toggle = !toggle;
3674    };
3675  } else if (Promise && Promise.resolve) {
3676    var promise = Promise.resolve(undefined);
3677
3678    notify = function notify() {
3679      promise.then(flush);
3680    };
3681  } else {
3682    notify = function notify() {
3683      macrotask.call(global, flush);
3684    };
3685  }
3686
3687  return function (fn) {
3688    var task = {
3689      fn: fn,
3690      next: undefined
3691    };
3692    if (last) last.next = task;
3693
3694    if (!head) {
3695      head = task;
3696      notify();
3697    }
3698
3699    last = task;
3700  };
3701};
3702
3703/***/ }),
3704/* 94 */
3705/***/ (function(module, exports, __w_pdfjs_require__) {
3706
3707"use strict";
3708
3709
3710var aFunction = __w_pdfjs_require__(27);
3711
3712function PromiseCapability(C) {
3713  var resolve, reject;
3714  this.promise = new C(function ($$resolve, $$reject) {
3715    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
3716    resolve = $$resolve;
3717    reject = $$reject;
3718  });
3719  this.resolve = aFunction(resolve);
3720  this.reject = aFunction(reject);
3721}
3722
3723module.exports.f = function (C) {
3724  return new PromiseCapability(C);
3725};
3726
3727/***/ }),
3728/* 95 */
3729/***/ (function(module, exports, __w_pdfjs_require__) {
3730
3731"use strict";
3732
3733
3734module.exports = function (exec) {
3735  try {
3736    return {
3737      e: false,
3738      v: exec()
3739    };
3740  } catch (e) {
3741    return {
3742      e: true,
3743      v: e
3744    };
3745  }
3746};
3747
3748/***/ }),
3749/* 96 */
3750/***/ (function(module, exports, __w_pdfjs_require__) {
3751
3752"use strict";
3753
3754
3755var global = __w_pdfjs_require__(8);
3756
3757var navigator = global.navigator;
3758module.exports = navigator && navigator.userAgent || '';
3759
3760/***/ }),
3761/* 97 */
3762/***/ (function(module, exports, __w_pdfjs_require__) {
3763
3764"use strict";
3765
3766
3767var anObject = __w_pdfjs_require__(12);
3768
3769var isObject = __w_pdfjs_require__(13);
3770
3771var newPromiseCapability = __w_pdfjs_require__(94);
3772
3773module.exports = function (C, x) {
3774  anObject(C);
3775  if (isObject(x) && x.constructor === C) return x;
3776  var promiseCapability = newPromiseCapability.f(C);
3777  var resolve = promiseCapability.resolve;
3778  resolve(x);
3779  return promiseCapability.promise;
3780};
3781
3782/***/ }),
3783/* 98 */
3784/***/ (function(module, exports, __w_pdfjs_require__) {
3785
3786"use strict";
3787
3788
3789var redefine = __w_pdfjs_require__(20);
3790
3791module.exports = function (target, src, safe) {
3792  for (var key in src) {
3793    redefine(target, key, src[key], safe);
3794  }
3795
3796  return target;
3797};
3798
3799/***/ }),
3800/* 99 */
3801/***/ (function(module, exports, __w_pdfjs_require__) {
3802
3803"use strict";
3804
3805
3806var global = __w_pdfjs_require__(8);
3807
3808var dP = __w_pdfjs_require__(11);
3809
3810var DESCRIPTORS = __w_pdfjs_require__(15);
3811
3812var SPECIES = __w_pdfjs_require__(33)('species');
3813
3814module.exports = function (KEY) {
3815  var C = global[KEY];
3816  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
3817    configurable: true,
3818    get: function get() {
3819      return this;
3820    }
3821  });
3822};
3823
3824/***/ }),
3825/* 100 */
3826/***/ (function(module, exports, __w_pdfjs_require__) {
3827
3828"use strict";
3829
3830
3831var $export = __w_pdfjs_require__(7);
3832
3833var core = __w_pdfjs_require__(9);
3834
3835var global = __w_pdfjs_require__(8);
3836
3837var speciesConstructor = __w_pdfjs_require__(90);
3838
3839var promiseResolve = __w_pdfjs_require__(97);
3840
3841$export($export.P + $export.R, 'Promise', {
3842  'finally': function _finally(onFinally) {
3843    var C = speciesConstructor(this, core.Promise || global.Promise);
3844    var isFunction = typeof onFinally == 'function';
3845    return this.then(isFunction ? function (x) {
3846      return promiseResolve(C, onFinally()).then(function () {
3847        return x;
3848      });
3849    } : onFinally, isFunction ? function (e) {
3850      return promiseResolve(C, onFinally()).then(function () {
3851        throw e;
3852      });
3853    } : onFinally);
3854  }
3855});
3856
3857/***/ }),
3858/* 101 */
3859/***/ (function(module, exports, __w_pdfjs_require__) {
3860
3861"use strict";
3862
3863
3864var $export = __w_pdfjs_require__(7);
3865
3866var newPromiseCapability = __w_pdfjs_require__(94);
3867
3868var perform = __w_pdfjs_require__(95);
3869
3870$export($export.S, 'Promise', {
3871  'try': function _try(callbackfn) {
3872    var promiseCapability = newPromiseCapability.f(this);
3873    var result = perform(callbackfn);
3874    (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
3875    return promiseCapability.promise;
3876  }
3877});
3878
3879/***/ }),
3880/* 102 */
3881/***/ (function(module, exports, __w_pdfjs_require__) {
3882
3883"use strict";
3884
3885
3886__w_pdfjs_require__(83);
3887
3888__w_pdfjs_require__(84);
3889
3890__w_pdfjs_require__(103);
3891
3892__w_pdfjs_require__(115);
3893
3894__w_pdfjs_require__(117);
3895
3896module.exports = __w_pdfjs_require__(9).WeakMap;
3897
3898/***/ }),
3899/* 103 */
3900/***/ (function(module, exports, __w_pdfjs_require__) {
3901
3902"use strict";
3903
3904
3905var global = __w_pdfjs_require__(8);
3906
3907var each = __w_pdfjs_require__(104)(0);
3908
3909var redefine = __w_pdfjs_require__(20);
3910
3911var meta = __w_pdfjs_require__(108);
3912
3913var assign = __w_pdfjs_require__(72);
3914
3915var weak = __w_pdfjs_require__(109);
3916
3917var isObject = __w_pdfjs_require__(13);
3918
3919var validate = __w_pdfjs_require__(110);
3920
3921var NATIVE_WEAK_MAP = __w_pdfjs_require__(110);
3922
3923var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
3924var WEAK_MAP = 'WeakMap';
3925var getWeak = meta.getWeak;
3926var isExtensible = Object.isExtensible;
3927var uncaughtFrozenStore = weak.ufstore;
3928var InternalMap;
3929
3930var wrapper = function wrapper(get) {
3931  return function WeakMap() {
3932    return get(this, arguments.length > 0 ? arguments[0] : undefined);
3933  };
3934};
3935
3936var methods = {
3937  get: function get(key) {
3938    if (isObject(key)) {
3939      var data = getWeak(key);
3940      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
3941      return data ? data[this._i] : undefined;
3942    }
3943  },
3944  set: function set(key, value) {
3945    return weak.def(validate(this, WEAK_MAP), key, value);
3946  }
3947};
3948
3949var $WeakMap = module.exports = __w_pdfjs_require__(111)(WEAK_MAP, wrapper, methods, weak, true, true);
3950
3951if (NATIVE_WEAK_MAP && IS_IE11) {
3952  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
3953  assign(InternalMap.prototype, methods);
3954  meta.NEED = true;
3955  each(['delete', 'has', 'get', 'set'], function (key) {
3956    var proto = $WeakMap.prototype;
3957    var method = proto[key];
3958    redefine(proto, key, function (a, b) {
3959      if (isObject(a) && !isExtensible(a)) {
3960        if (!this._f) this._f = new InternalMap();
3961
3962        var result = this._f[key](a, b);
3963
3964        return key == 'set' ? this : result;
3965      }
3966
3967      return method.call(this, a, b);
3968    });
3969  });
3970}
3971
3972/***/ }),
3973/* 104 */
3974/***/ (function(module, exports, __w_pdfjs_require__) {
3975
3976"use strict";
3977
3978
3979var ctx = __w_pdfjs_require__(26);
3980
3981var IObject = __w_pdfjs_require__(44);
3982
3983var toObject = __w_pdfjs_require__(62);
3984
3985var toLength = __w_pdfjs_require__(28);
3986
3987var asc = __w_pdfjs_require__(105);
3988
3989module.exports = function (TYPE, $create) {
3990  var IS_MAP = TYPE == 1;
3991  var IS_FILTER = TYPE == 2;
3992  var IS_SOME = TYPE == 3;
3993  var IS_EVERY = TYPE == 4;
3994  var IS_FIND_INDEX = TYPE == 6;
3995  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
3996  var create = $create || asc;
3997  return function ($this, callbackfn, that) {
3998    var O = toObject($this);
3999    var self = IObject(O);
4000    var f = ctx(callbackfn, that, 3);
4001    var length = toLength(self.length);
4002    var index = 0;
4003    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
4004    var val, res;
4005
4006    for (; length > index; index++) {
4007      if (NO_HOLES || index in self) {
4008        val = self[index];
4009        res = f(val, index, O);
4010
4011        if (TYPE) {
4012          if (IS_MAP) result[index] = res;else if (res) switch (TYPE) {
4013            case 3:
4014              return true;
4015
4016            case 5:
4017              return val;
4018
4019            case 6:
4020              return index;
4021
4022            case 2:
4023              result.push(val);
4024          } else if (IS_EVERY) return false;
4025        }
4026      }
4027    }
4028
4029    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
4030  };
4031};
4032
4033/***/ }),
4034/* 105 */
4035/***/ (function(module, exports, __w_pdfjs_require__) {
4036
4037"use strict";
4038
4039
4040var speciesConstructor = __w_pdfjs_require__(106);
4041
4042module.exports = function (original, length) {
4043  return new (speciesConstructor(original))(length);
4044};
4045
4046/***/ }),
4047/* 106 */
4048/***/ (function(module, exports, __w_pdfjs_require__) {
4049
4050"use strict";
4051
4052
4053var isObject = __w_pdfjs_require__(13);
4054
4055var isArray = __w_pdfjs_require__(107);
4056
4057var SPECIES = __w_pdfjs_require__(33)('species');
4058
4059module.exports = function (original) {
4060  var C;
4061
4062  if (isArray(original)) {
4063    C = original.constructor;
4064    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
4065
4066    if (isObject(C)) {
4067      C = C[SPECIES];
4068      if (C === null) C = undefined;
4069    }
4070  }
4071
4072  return C === undefined ? Array : C;
4073};
4074
4075/***/ }),
4076/* 107 */
4077/***/ (function(module, exports, __w_pdfjs_require__) {
4078
4079"use strict";
4080
4081
4082var cof = __w_pdfjs_require__(32);
4083
4084module.exports = Array.isArray || function isArray(arg) {
4085  return cof(arg) == 'Array';
4086};
4087
4088/***/ }),
4089/* 108 */
4090/***/ (function(module, exports, __w_pdfjs_require__) {
4091
4092"use strict";
4093
4094
4095function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4096
4097var META = __w_pdfjs_require__(22)('meta');
4098
4099var isObject = __w_pdfjs_require__(13);
4100
4101var has = __w_pdfjs_require__(21);
4102
4103var setDesc = __w_pdfjs_require__(11).f;
4104
4105var id = 0;
4106
4107var isExtensible = Object.isExtensible || function () {
4108  return true;
4109};
4110
4111var FREEZE = !__w_pdfjs_require__(16)(function () {
4112  return isExtensible(Object.preventExtensions({}));
4113});
4114
4115var setMeta = function setMeta(it) {
4116  setDesc(it, META, {
4117    value: {
4118      i: 'O' + ++id,
4119      w: {}
4120    }
4121  });
4122};
4123
4124var fastKey = function fastKey(it, create) {
4125  if (!isObject(it)) return _typeof(it) == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
4126
4127  if (!has(it, META)) {
4128    if (!isExtensible(it)) return 'F';
4129    if (!create) return 'E';
4130    setMeta(it);
4131  }
4132
4133  return it[META].i;
4134};
4135
4136var getWeak = function getWeak(it, create) {
4137  if (!has(it, META)) {
4138    if (!isExtensible(it)) return true;
4139    if (!create) return false;
4140    setMeta(it);
4141  }
4142
4143  return it[META].w;
4144};
4145
4146var onFreeze = function onFreeze(it) {
4147  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
4148  return it;
4149};
4150
4151var meta = module.exports = {
4152  KEY: META,
4153  NEED: false,
4154  fastKey: fastKey,
4155  getWeak: getWeak,
4156  onFreeze: onFreeze
4157};
4158
4159/***/ }),
4160/* 109 */
4161/***/ (function(module, exports, __w_pdfjs_require__) {
4162
4163"use strict";
4164
4165
4166var redefineAll = __w_pdfjs_require__(98);
4167
4168var getWeak = __w_pdfjs_require__(108).getWeak;
4169
4170var anObject = __w_pdfjs_require__(12);
4171
4172var isObject = __w_pdfjs_require__(13);
4173
4174var anInstance = __w_pdfjs_require__(88);
4175
4176var forOf = __w_pdfjs_require__(89);
4177
4178var createArrayMethod = __w_pdfjs_require__(104);
4179
4180var $has = __w_pdfjs_require__(21);
4181
4182var validate = __w_pdfjs_require__(110);
4183
4184var arrayFind = createArrayMethod(5);
4185var arrayFindIndex = createArrayMethod(6);
4186var id = 0;
4187
4188var uncaughtFrozenStore = function uncaughtFrozenStore(that) {
4189  return that._l || (that._l = new UncaughtFrozenStore());
4190};
4191
4192var UncaughtFrozenStore = function UncaughtFrozenStore() {
4193  this.a = [];
4194};
4195
4196var findUncaughtFrozen = function findUncaughtFrozen(store, key) {
4197  return arrayFind(store.a, function (it) {
4198    return it[0] === key;
4199  });
4200};
4201
4202UncaughtFrozenStore.prototype = {
4203  get: function get(key) {
4204    var entry = findUncaughtFrozen(this, key);
4205    if (entry) return entry[1];
4206  },
4207  has: function has(key) {
4208    return !!findUncaughtFrozen(this, key);
4209  },
4210  set: function set(key, value) {
4211    var entry = findUncaughtFrozen(this, key);
4212    if (entry) entry[1] = value;else this.a.push([key, value]);
4213  },
4214  'delete': function _delete(key) {
4215    var index = arrayFindIndex(this.a, function (it) {
4216      return it[0] === key;
4217    });
4218    if (~index) this.a.splice(index, 1);
4219    return !!~index;
4220  }
4221};
4222module.exports = {
4223  getConstructor: function getConstructor(wrapper, NAME, IS_MAP, ADDER) {
4224    var C = wrapper(function (that, iterable) {
4225      anInstance(that, C, NAME, '_i');
4226      that._t = NAME;
4227      that._i = id++;
4228      that._l = undefined;
4229      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
4230    });
4231    redefineAll(C.prototype, {
4232      'delete': function _delete(key) {
4233        if (!isObject(key)) return false;
4234        var data = getWeak(key);
4235        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
4236        return data && $has(data, this._i) && delete data[this._i];
4237      },
4238      has: function has(key) {
4239        if (!isObject(key)) return false;
4240        var data = getWeak(key);
4241        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
4242        return data && $has(data, this._i);
4243      }
4244    });
4245    return C;
4246  },
4247  def: function def(that, key, value) {
4248    var data = getWeak(anObject(key), true);
4249    if (data === true) uncaughtFrozenStore(that).set(key, value);else data[that._i] = value;
4250    return that;
4251  },
4252  ufstore: uncaughtFrozenStore
4253};
4254
4255/***/ }),
4256/* 110 */
4257/***/ (function(module, exports, __w_pdfjs_require__) {
4258
4259"use strict";
4260
4261
4262var isObject = __w_pdfjs_require__(13);
4263
4264module.exports = function (it, TYPE) {
4265  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
4266  return it;
4267};
4268
4269/***/ }),
4270/* 111 */
4271/***/ (function(module, exports, __w_pdfjs_require__) {
4272
4273"use strict";
4274
4275
4276var global = __w_pdfjs_require__(8);
4277
4278var $export = __w_pdfjs_require__(7);
4279
4280var redefine = __w_pdfjs_require__(20);
4281
4282var redefineAll = __w_pdfjs_require__(98);
4283
4284var meta = __w_pdfjs_require__(108);
4285
4286var forOf = __w_pdfjs_require__(89);
4287
4288var anInstance = __w_pdfjs_require__(88);
4289
4290var isObject = __w_pdfjs_require__(13);
4291
4292var fails = __w_pdfjs_require__(16);
4293
4294var $iterDetect = __w_pdfjs_require__(69);
4295
4296var setToStringTag = __w_pdfjs_require__(60);
4297
4298var inheritIfRequired = __w_pdfjs_require__(112);
4299
4300module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
4301  var Base = global[NAME];
4302  var C = Base;
4303  var ADDER = IS_MAP ? 'set' : 'add';
4304  var proto = C && C.prototype;
4305  var O = {};
4306
4307  var fixMethod = function fixMethod(KEY) {
4308    var fn = proto[KEY];
4309    redefine(proto, KEY, KEY == 'delete' ? function (a) {
4310      return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
4311    } : KEY == 'has' ? function has(a) {
4312      return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
4313    } : KEY == 'get' ? function get(a) {
4314      return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
4315    } : KEY == 'add' ? function add(a) {
4316      fn.call(this, a === 0 ? 0 : a);
4317      return this;
4318    } : function set(a, b) {
4319      fn.call(this, a === 0 ? 0 : a, b);
4320      return this;
4321    });
4322  };
4323
4324  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
4325    new C().entries().next();
4326  }))) {
4327    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
4328    redefineAll(C.prototype, methods);
4329    meta.NEED = true;
4330  } else {
4331    var instance = new C();
4332    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
4333    var THROWS_ON_PRIMITIVES = fails(function () {
4334      instance.has(1);
4335    });
4336    var ACCEPT_ITERABLES = $iterDetect(function (iter) {
4337      new C(iter);
4338    });
4339    var BUGGY_ZERO = !IS_WEAK && fails(function () {
4340      var $instance = new C();
4341      var index = 5;
4342
4343      while (index--) {
4344        $instance[ADDER](index, index);
4345      }
4346
4347      return !$instance.has(-0);
4348    });
4349
4350    if (!ACCEPT_ITERABLES) {
4351      C = wrapper(function (target, iterable) {
4352        anInstance(target, C, NAME);
4353        var that = inheritIfRequired(new Base(), target, C);
4354        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
4355        return that;
4356      });
4357      C.prototype = proto;
4358      proto.constructor = C;
4359    }
4360
4361    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
4362      fixMethod('delete');
4363      fixMethod('has');
4364      IS_MAP && fixMethod('get');
4365    }
4366
4367    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
4368    if (IS_WEAK && proto.clear) delete proto.clear;
4369  }
4370
4371  setToStringTag(C, NAME);
4372  O[NAME] = C;
4373  $export($export.G + $export.W + $export.F * (C != Base), O);
4374  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
4375  return C;
4376};
4377
4378/***/ }),
4379/* 112 */
4380/***/ (function(module, exports, __w_pdfjs_require__) {
4381
4382"use strict";
4383
4384
4385var isObject = __w_pdfjs_require__(13);
4386
4387var setPrototypeOf = __w_pdfjs_require__(113).set;
4388
4389module.exports = function (that, target, C) {
4390  var S = target.constructor;
4391  var P;
4392
4393  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
4394    setPrototypeOf(that, P);
4395  }
4396
4397  return that;
4398};
4399
4400/***/ }),
4401/* 113 */
4402/***/ (function(module, exports, __w_pdfjs_require__) {
4403
4404"use strict";
4405
4406
4407var isObject = __w_pdfjs_require__(13);
4408
4409var anObject = __w_pdfjs_require__(12);
4410
4411var check = function check(O, proto) {
4412  anObject(O);
4413  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
4414};
4415
4416module.exports = {
4417  set: Object.setPrototypeOf || ('__proto__' in {} ? function (test, buggy, set) {
4418    try {
4419      set = __w_pdfjs_require__(26)(Function.call, __w_pdfjs_require__(114).f(Object.prototype, '__proto__').set, 2);
4420      set(test, []);
4421      buggy = !(test instanceof Array);
4422    } catch (e) {
4423      buggy = true;
4424    }
4425
4426    return function setPrototypeOf(O, proto) {
4427      check(O, proto);
4428      if (buggy) O.__proto__ = proto;else set(O, proto);
4429      return O;
4430    };
4431  }({}, false) : undefined),
4432  check: check
4433};
4434
4435/***/ }),
4436/* 114 */
4437/***/ (function(module, exports, __w_pdfjs_require__) {
4438
4439"use strict";
4440
4441
4442var pIE = __w_pdfjs_require__(74);
4443
4444var createDesc = __w_pdfjs_require__(19);
4445
4446var toIObject = __w_pdfjs_require__(43);
4447
4448var toPrimitive = __w_pdfjs_require__(18);
4449
4450var has = __w_pdfjs_require__(21);
4451
4452var IE8_DOM_DEFINE = __w_pdfjs_require__(14);
4453
4454var gOPD = Object.getOwnPropertyDescriptor;
4455exports.f = __w_pdfjs_require__(15) ? gOPD : function getOwnPropertyDescriptor(O, P) {
4456  O = toIObject(O);
4457  P = toPrimitive(P, true);
4458  if (IE8_DOM_DEFINE) try {
4459    return gOPD(O, P);
4460  } catch (e) {}
4461  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
4462};
4463
4464/***/ }),
4465/* 115 */
4466/***/ (function(module, exports, __w_pdfjs_require__) {
4467
4468"use strict";
4469
4470
4471__w_pdfjs_require__(116)('WeakMap');
4472
4473/***/ }),
4474/* 116 */
4475/***/ (function(module, exports, __w_pdfjs_require__) {
4476
4477"use strict";
4478
4479
4480var $export = __w_pdfjs_require__(7);
4481
4482module.exports = function (COLLECTION) {
4483  $export($export.S, COLLECTION, {
4484    of: function of() {
4485      var length = arguments.length;
4486      var A = new Array(length);
4487
4488      while (length--) {
4489        A[length] = arguments[length];
4490      }
4491
4492      return new this(A);
4493    }
4494  });
4495};
4496
4497/***/ }),
4498/* 117 */
4499/***/ (function(module, exports, __w_pdfjs_require__) {
4500
4501"use strict";
4502
4503
4504__w_pdfjs_require__(118)('WeakMap');
4505
4506/***/ }),
4507/* 118 */
4508/***/ (function(module, exports, __w_pdfjs_require__) {
4509
4510"use strict";
4511
4512
4513var $export = __w_pdfjs_require__(7);
4514
4515var aFunction = __w_pdfjs_require__(27);
4516
4517var ctx = __w_pdfjs_require__(26);
4518
4519var forOf = __w_pdfjs_require__(89);
4520
4521module.exports = function (COLLECTION) {
4522  $export($export.S, COLLECTION, {
4523    from: function from(source) {
4524      var mapFn = arguments[1];
4525      var mapping, A, n, cb;
4526      aFunction(this);
4527      mapping = mapFn !== undefined;
4528      if (mapping) aFunction(mapFn);
4529      if (source == undefined) return new this();
4530      A = [];
4531
4532      if (mapping) {
4533        n = 0;
4534        cb = ctx(mapFn, arguments[2], 2);
4535        forOf(source, false, function (nextItem) {
4536          A.push(cb(nextItem, n++));
4537        });
4538      } else {
4539        forOf(source, false, A.push, A);
4540      }
4541
4542      return new this(A);
4543    }
4544  });
4545};
4546
4547/***/ }),
4548/* 119 */
4549/***/ (function(module, exports, __w_pdfjs_require__) {
4550
4551"use strict";
4552
4553
4554__w_pdfjs_require__(83);
4555
4556__w_pdfjs_require__(84);
4557
4558__w_pdfjs_require__(120);
4559
4560__w_pdfjs_require__(121);
4561
4562__w_pdfjs_require__(122);
4563
4564module.exports = __w_pdfjs_require__(9).WeakSet;
4565
4566/***/ }),
4567/* 120 */
4568/***/ (function(module, exports, __w_pdfjs_require__) {
4569
4570"use strict";
4571
4572
4573var weak = __w_pdfjs_require__(109);
4574
4575var validate = __w_pdfjs_require__(110);
4576
4577var WEAK_SET = 'WeakSet';
4578
4579__w_pdfjs_require__(111)(WEAK_SET, function (get) {
4580  return function WeakSet() {
4581    return get(this, arguments.length > 0 ? arguments[0] : undefined);
4582  };
4583}, {
4584  add: function add(value) {
4585    return weak.def(validate(this, WEAK_SET), value, true);
4586  }
4587}, weak, false, true);
4588
4589/***/ }),
4590/* 121 */
4591/***/ (function(module, exports, __w_pdfjs_require__) {
4592
4593"use strict";
4594
4595
4596__w_pdfjs_require__(116)('WeakSet');
4597
4598/***/ }),
4599/* 122 */
4600/***/ (function(module, exports, __w_pdfjs_require__) {
4601
4602"use strict";
4603
4604
4605__w_pdfjs_require__(118)('WeakSet');
4606
4607/***/ }),
4608/* 123 */
4609/***/ (function(module, exports, __w_pdfjs_require__) {
4610
4611"use strict";
4612
4613
4614__w_pdfjs_require__(124);
4615
4616module.exports = __w_pdfjs_require__(9).String.codePointAt;
4617
4618/***/ }),
4619/* 124 */
4620/***/ (function(module, exports, __w_pdfjs_require__) {
4621
4622"use strict";
4623
4624
4625var $export = __w_pdfjs_require__(7);
4626
4627var $at = __w_pdfjs_require__(49)(false);
4628
4629$export($export.P, 'String', {
4630  codePointAt: function codePointAt(pos) {
4631    return $at(this, pos);
4632  }
4633});
4634
4635/***/ }),
4636/* 125 */
4637/***/ (function(module, exports, __w_pdfjs_require__) {
4638
4639"use strict";
4640
4641
4642__w_pdfjs_require__(126);
4643
4644module.exports = __w_pdfjs_require__(9).String.fromCodePoint;
4645
4646/***/ }),
4647/* 126 */
4648/***/ (function(module, exports, __w_pdfjs_require__) {
4649
4650"use strict";
4651
4652
4653var $export = __w_pdfjs_require__(7);
4654
4655var toAbsoluteIndex = __w_pdfjs_require__(45);
4656
4657var fromCharCode = String.fromCharCode;
4658var $fromCodePoint = String.fromCodePoint;
4659$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
4660  fromCodePoint: function fromCodePoint(x) {
4661    var res = [];
4662    var aLen = arguments.length;
4663    var i = 0;
4664    var code;
4665
4666    while (aLen > i) {
4667      code = +arguments[i++];
4668      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
4669      res.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00));
4670    }
4671
4672    return res.join('');
4673  }
4674});
4675
4676/***/ }),
4677/* 127 */
4678/***/ (function(module, exports, __w_pdfjs_require__) {
4679
4680"use strict";
4681
4682
4683__w_pdfjs_require__(128);
4684
4685__w_pdfjs_require__(83);
4686
4687module.exports = __w_pdfjs_require__(9).Symbol;
4688
4689/***/ }),
4690/* 128 */
4691/***/ (function(module, exports, __w_pdfjs_require__) {
4692
4693"use strict";
4694
4695
4696function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4697
4698var global = __w_pdfjs_require__(8);
4699
4700var has = __w_pdfjs_require__(21);
4701
4702var DESCRIPTORS = __w_pdfjs_require__(15);
4703
4704var $export = __w_pdfjs_require__(7);
4705
4706var redefine = __w_pdfjs_require__(20);
4707
4708var META = __w_pdfjs_require__(108).KEY;
4709
4710var $fails = __w_pdfjs_require__(16);
4711
4712var shared = __w_pdfjs_require__(24);
4713
4714var setToStringTag = __w_pdfjs_require__(60);
4715
4716var uid = __w_pdfjs_require__(22);
4717
4718var wks = __w_pdfjs_require__(33);
4719
4720var wksExt = __w_pdfjs_require__(129);
4721
4722var wksDefine = __w_pdfjs_require__(130);
4723
4724var enumKeys = __w_pdfjs_require__(131);
4725
4726var isArray = __w_pdfjs_require__(107);
4727
4728var anObject = __w_pdfjs_require__(12);
4729
4730var isObject = __w_pdfjs_require__(13);
4731
4732var toObject = __w_pdfjs_require__(62);
4733
4734var toIObject = __w_pdfjs_require__(43);
4735
4736var toPrimitive = __w_pdfjs_require__(18);
4737
4738var createDesc = __w_pdfjs_require__(19);
4739
4740var _create = __w_pdfjs_require__(53);
4741
4742var gOPNExt = __w_pdfjs_require__(132);
4743
4744var $GOPD = __w_pdfjs_require__(114);
4745
4746var $GOPS = __w_pdfjs_require__(73);
4747
4748var $DP = __w_pdfjs_require__(11);
4749
4750var $keys = __w_pdfjs_require__(55);
4751
4752var gOPD = $GOPD.f;
4753var dP = $DP.f;
4754var gOPN = gOPNExt.f;
4755var $Symbol = global.Symbol;
4756var $JSON = global.JSON;
4757
4758var _stringify = $JSON && $JSON.stringify;
4759
4760var PROTOTYPE = 'prototype';
4761var HIDDEN = wks('_hidden');
4762var TO_PRIMITIVE = wks('toPrimitive');
4763var isEnum = {}.propertyIsEnumerable;
4764var SymbolRegistry = shared('symbol-registry');
4765var AllSymbols = shared('symbols');
4766var OPSymbols = shared('op-symbols');
4767var ObjectProto = Object[PROTOTYPE];
4768var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
4769var QObject = global.QObject;
4770var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
4771var setSymbolDesc = DESCRIPTORS && $fails(function () {
4772  return _create(dP({}, 'a', {
4773    get: function get() {
4774      return dP(this, 'a', {
4775        value: 7
4776      }).a;
4777    }
4778  })).a != 7;
4779}) ? function (it, key, D) {
4780  var protoDesc = gOPD(ObjectProto, key);
4781  if (protoDesc) delete ObjectProto[key];
4782  dP(it, key, D);
4783  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
4784} : dP;
4785
4786var wrap = function wrap(tag) {
4787  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
4788
4789  sym._k = tag;
4790  return sym;
4791};
4792
4793var isSymbol = USE_NATIVE && _typeof($Symbol.iterator) == 'symbol' ? function (it) {
4794  return _typeof(it) == 'symbol';
4795} : function (it) {
4796  return it instanceof $Symbol;
4797};
4798
4799var $defineProperty = function defineProperty(it, key, D) {
4800  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
4801  anObject(it);
4802  key = toPrimitive(key, true);
4803  anObject(D);
4804
4805  if (has(AllSymbols, key)) {
4806    if (!D.enumerable) {
4807      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
4808      it[HIDDEN][key] = true;
4809    } else {
4810      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
4811      D = _create(D, {
4812        enumerable: createDesc(0, false)
4813      });
4814    }
4815
4816    return setSymbolDesc(it, key, D);
4817  }
4818
4819  return dP(it, key, D);
4820};
4821
4822var $defineProperties = function defineProperties(it, P) {
4823  anObject(it);
4824  var keys = enumKeys(P = toIObject(P));
4825  var i = 0;
4826  var l = keys.length;
4827  var key;
4828
4829  while (l > i) {
4830    $defineProperty(it, key = keys[i++], P[key]);
4831  }
4832
4833  return it;
4834};
4835
4836var $create = function create(it, P) {
4837  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
4838};
4839
4840var $propertyIsEnumerable = function propertyIsEnumerable(key) {
4841  var E = isEnum.call(this, key = toPrimitive(key, true));
4842  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
4843  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
4844};
4845
4846var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
4847  it = toIObject(it);
4848  key = toPrimitive(key, true);
4849  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
4850  var D = gOPD(it, key);
4851  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
4852  return D;
4853};
4854
4855var $getOwnPropertyNames = function getOwnPropertyNames(it) {
4856  var names = gOPN(toIObject(it));
4857  var result = [];
4858  var i = 0;
4859  var key;
4860
4861  while (names.length > i) {
4862    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
4863  }
4864
4865  return result;
4866};
4867
4868var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
4869  var IS_OP = it === ObjectProto;
4870  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
4871  var result = [];
4872  var i = 0;
4873  var key;
4874
4875  while (names.length > i) {
4876    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
4877  }
4878
4879  return result;
4880};
4881
4882if (!USE_NATIVE) {
4883  $Symbol = function _Symbol() {
4884    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
4885    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
4886
4887    var $set = function $set(value) {
4888      if (this === ObjectProto) $set.call(OPSymbols, value);
4889      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
4890      setSymbolDesc(this, tag, createDesc(1, value));
4891    };
4892
4893    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {
4894      configurable: true,
4895      set: $set
4896    });
4897    return wrap(tag);
4898  };
4899
4900  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
4901    return this._k;
4902  });
4903  $GOPD.f = $getOwnPropertyDescriptor;
4904  $DP.f = $defineProperty;
4905  __w_pdfjs_require__(133).f = gOPNExt.f = $getOwnPropertyNames;
4906  __w_pdfjs_require__(74).f = $propertyIsEnumerable;
4907  $GOPS.f = $getOwnPropertySymbols;
4908
4909  if (DESCRIPTORS && !__w_pdfjs_require__(25)) {
4910    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
4911  }
4912
4913  wksExt.f = function (name) {
4914    return wrap(wks(name));
4915  };
4916}
4917
4918$export($export.G + $export.W + $export.F * !USE_NATIVE, {
4919  Symbol: $Symbol
4920});
4921
4922for (var es6Symbols = 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) {
4923  wks(es6Symbols[j++]);
4924}
4925
4926for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) {
4927  wksDefine(wellKnownSymbols[k++]);
4928}
4929
4930$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
4931  'for': function _for(key) {
4932    return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);
4933  },
4934  keyFor: function keyFor(sym) {
4935    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
4936
4937    for (var key in SymbolRegistry) {
4938      if (SymbolRegistry[key] === sym) return key;
4939    }
4940  },
4941  useSetter: function useSetter() {
4942    setter = true;
4943  },
4944  useSimple: function useSimple() {
4945    setter = false;
4946  }
4947});
4948$export($export.S + $export.F * !USE_NATIVE, 'Object', {
4949  create: $create,
4950  defineProperty: $defineProperty,
4951  defineProperties: $defineProperties,
4952  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
4953  getOwnPropertyNames: $getOwnPropertyNames,
4954  getOwnPropertySymbols: $getOwnPropertySymbols
4955});
4956var FAILS_ON_PRIMITIVES = $fails(function () {
4957  $GOPS.f(1);
4958});
4959$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
4960  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
4961    return $GOPS.f(toObject(it));
4962  }
4963});
4964$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
4965  var S = $Symbol();
4966  return _stringify([S]) != '[null]' || _stringify({
4967    a: S
4968  }) != '{}' || _stringify(Object(S)) != '{}';
4969})), 'JSON', {
4970  stringify: function stringify(it) {
4971    var args = [it];
4972    var i = 1;
4973    var replacer, $replacer;
4974
4975    while (arguments.length > i) {
4976      args.push(arguments[i++]);
4977    }
4978
4979    $replacer = replacer = args[1];
4980    if (!isObject(replacer) && it === undefined || isSymbol(it)) return;
4981    if (!isArray(replacer)) replacer = function replacer(key, value) {
4982      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
4983      if (!isSymbol(value)) return value;
4984    };
4985    args[1] = replacer;
4986    return _stringify.apply($JSON, args);
4987  }
4988});
4989$Symbol[PROTOTYPE][TO_PRIMITIVE] || __w_pdfjs_require__(10)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
4990setToStringTag($Symbol, 'Symbol');
4991setToStringTag(Math, 'Math', true);
4992setToStringTag(global.JSON, 'JSON', true);
4993
4994/***/ }),
4995/* 129 */
4996/***/ (function(module, exports, __w_pdfjs_require__) {
4997
4998"use strict";
4999
5000
5001exports.f = __w_pdfjs_require__(33);
5002
5003/***/ }),
5004/* 130 */
5005/***/ (function(module, exports, __w_pdfjs_require__) {
5006
5007"use strict";
5008
5009
5010var global = __w_pdfjs_require__(8);
5011
5012var core = __w_pdfjs_require__(9);
5013
5014var LIBRARY = __w_pdfjs_require__(25);
5015
5016var wksExt = __w_pdfjs_require__(129);
5017
5018var defineProperty = __w_pdfjs_require__(11).f;
5019
5020module.exports = function (name) {
5021  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
5022  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, {
5023    value: wksExt.f(name)
5024  });
5025};
5026
5027/***/ }),
5028/* 131 */
5029/***/ (function(module, exports, __w_pdfjs_require__) {
5030
5031"use strict";
5032
5033
5034var getKeys = __w_pdfjs_require__(55);
5035
5036var gOPS = __w_pdfjs_require__(73);
5037
5038var pIE = __w_pdfjs_require__(74);
5039
5040module.exports = function (it) {
5041  var result = getKeys(it);
5042  var getSymbols = gOPS.f;
5043
5044  if (getSymbols) {
5045    var symbols = getSymbols(it);
5046    var isEnum = pIE.f;
5047    var i = 0;
5048    var key;
5049
5050    while (symbols.length > i) {
5051      if (isEnum.call(it, key = symbols[i++])) result.push(key);
5052    }
5053  }
5054
5055  return result;
5056};
5057
5058/***/ }),
5059/* 132 */
5060/***/ (function(module, exports, __w_pdfjs_require__) {
5061
5062"use strict";
5063
5064
5065function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5066
5067var toIObject = __w_pdfjs_require__(43);
5068
5069var gOPN = __w_pdfjs_require__(133).f;
5070
5071var toString = {}.toString;
5072var windowNames = (typeof window === "undefined" ? "undefined" : _typeof(window)) == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
5073
5074var getWindowNames = function getWindowNames(it) {
5075  try {
5076    return gOPN(it);
5077  } catch (e) {
5078    return windowNames.slice();
5079  }
5080};
5081
5082module.exports.f = function getOwnPropertyNames(it) {
5083  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
5084};
5085
5086/***/ }),
5087/* 133 */
5088/***/ (function(module, exports, __w_pdfjs_require__) {
5089
5090"use strict";
5091
5092
5093var $keys = __w_pdfjs_require__(56);
5094
5095var hiddenKeys = __w_pdfjs_require__(58).concat('length', 'prototype');
5096
5097exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
5098  return $keys(O, hiddenKeys);
5099};
5100
5101/***/ }),
5102/* 134 */
5103/***/ (function(module, exports, __w_pdfjs_require__) {
5104
5105"use strict";
5106
5107
5108__w_pdfjs_require__(135);
5109
5110module.exports = __w_pdfjs_require__(9).String.padStart;
5111
5112/***/ }),
5113/* 135 */
5114/***/ (function(module, exports, __w_pdfjs_require__) {
5115
5116"use strict";
5117
5118
5119var $export = __w_pdfjs_require__(7);
5120
5121var $pad = __w_pdfjs_require__(136);
5122
5123var userAgent = __w_pdfjs_require__(96);
5124
5125var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
5126$export($export.P + $export.F * WEBKIT_BUG, 'String', {
5127  padStart: function padStart(maxLength) {
5128    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
5129  }
5130});
5131
5132/***/ }),
5133/* 136 */
5134/***/ (function(module, exports, __w_pdfjs_require__) {
5135
5136"use strict";
5137
5138
5139var toLength = __w_pdfjs_require__(28);
5140
5141var repeat = __w_pdfjs_require__(137);
5142
5143var defined = __w_pdfjs_require__(34);
5144
5145module.exports = function (that, maxLength, fillString, left) {
5146  var S = String(defined(that));
5147  var stringLength = S.length;
5148  var fillStr = fillString === undefined ? ' ' : String(fillString);
5149  var intMaxLength = toLength(maxLength);
5150  if (intMaxLength <= stringLength || fillStr == '') return S;
5151  var fillLen = intMaxLength - stringLength;
5152  var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
5153  if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
5154  return left ? stringFiller + S : S + stringFiller;
5155};
5156
5157/***/ }),
5158/* 137 */
5159/***/ (function(module, exports, __w_pdfjs_require__) {
5160
5161"use strict";
5162
5163
5164var toInteger = __w_pdfjs_require__(29);
5165
5166var defined = __w_pdfjs_require__(34);
5167
5168module.exports = function repeat(count) {
5169  var str = String(defined(this));
5170  var res = '';
5171  var n = toInteger(count);
5172  if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
5173
5174  for (; n > 0; (n >>>= 1) && (str += str)) {
5175    if (n & 1) res += str;
5176  }
5177
5178  return res;
5179};
5180
5181/***/ }),
5182/* 138 */
5183/***/ (function(module, exports, __w_pdfjs_require__) {
5184
5185"use strict";
5186
5187
5188__w_pdfjs_require__(139);
5189
5190module.exports = __w_pdfjs_require__(9).String.padEnd;
5191
5192/***/ }),
5193/* 139 */
5194/***/ (function(module, exports, __w_pdfjs_require__) {
5195
5196"use strict";
5197
5198
5199var $export = __w_pdfjs_require__(7);
5200
5201var $pad = __w_pdfjs_require__(136);
5202
5203var userAgent = __w_pdfjs_require__(96);
5204
5205var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
5206$export($export.P + $export.F * WEBKIT_BUG, 'String', {
5207  padEnd: function padEnd(maxLength) {
5208    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
5209  }
5210});
5211
5212/***/ }),
5213/* 140 */
5214/***/ (function(module, exports, __w_pdfjs_require__) {
5215
5216"use strict";
5217
5218
5219__w_pdfjs_require__(141);
5220
5221module.exports = __w_pdfjs_require__(9).Object.values;
5222
5223/***/ }),
5224/* 141 */
5225/***/ (function(module, exports, __w_pdfjs_require__) {
5226
5227"use strict";
5228
5229
5230var $export = __w_pdfjs_require__(7);
5231
5232var $values = __w_pdfjs_require__(142)(false);
5233
5234$export($export.S, 'Object', {
5235  values: function values(it) {
5236    return $values(it);
5237  }
5238});
5239
5240/***/ }),
5241/* 142 */
5242/***/ (function(module, exports, __w_pdfjs_require__) {
5243
5244"use strict";
5245
5246
5247var DESCRIPTORS = __w_pdfjs_require__(15);
5248
5249var getKeys = __w_pdfjs_require__(55);
5250
5251var toIObject = __w_pdfjs_require__(43);
5252
5253var isEnum = __w_pdfjs_require__(74).f;
5254
5255module.exports = function (isEntries) {
5256  return function (it) {
5257    var O = toIObject(it);
5258    var keys = getKeys(O);
5259    var length = keys.length;
5260    var i = 0;
5261    var result = [];
5262    var key;
5263
5264    while (length > i) {
5265      key = keys[i++];
5266
5267      if (!DESCRIPTORS || isEnum.call(O, key)) {
5268        result.push(isEntries ? [key, O[key]] : O[key]);
5269      }
5270    }
5271
5272    return result;
5273  };
5274};
5275
5276/***/ }),
5277/* 143 */
5278/***/ (function(module, exports, __w_pdfjs_require__) {
5279
5280"use strict";
5281
5282
5283{
5284  var isReadableStreamSupported = false;
5285
5286  if (typeof ReadableStream !== 'undefined') {
5287    try {
5288      new ReadableStream({
5289        start: function start(controller) {
5290          controller.close();
5291        }
5292      });
5293      isReadableStreamSupported = true;
5294    } catch (e) {}
5295  }
5296
5297  if (isReadableStreamSupported) {
5298    exports.ReadableStream = ReadableStream;
5299  } else {
5300    exports.ReadableStream = __w_pdfjs_require__(144).ReadableStream;
5301  }
5302}
5303
5304/***/ }),
5305/* 144 */
5306/***/ (function(module, exports, __w_pdfjs_require__) {
5307
5308"use strict";
5309
5310
5311function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
5312
5313(function (e, a) {
5314  for (var i in a) {
5315    e[i] = a[i];
5316  }
5317})(exports, function (modules) {
5318  var installedModules = {};
5319
5320  function __w_pdfjs_require__(moduleId) {
5321    if (installedModules[moduleId]) return installedModules[moduleId].exports;
5322    var module = installedModules[moduleId] = {
5323      i: moduleId,
5324      l: false,
5325      exports: {}
5326    };
5327    modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
5328    module.l = true;
5329    return module.exports;
5330  }
5331
5332  __w_pdfjs_require__.m = modules;
5333  __w_pdfjs_require__.c = installedModules;
5334
5335  __w_pdfjs_require__.i = function (value) {
5336    return value;
5337  };
5338
5339  __w_pdfjs_require__.d = function (exports, name, getter) {
5340    if (!__w_pdfjs_require__.o(exports, name)) {
5341      Object.defineProperty(exports, name, {
5342        configurable: false,
5343        enumerable: true,
5344        get: getter
5345      });
5346    }
5347  };
5348
5349  __w_pdfjs_require__.n = function (module) {
5350    var getter = module && module.__esModule ? function getDefault() {
5351      return module['default'];
5352    } : function getModuleExports() {
5353      return module;
5354    };
5355
5356    __w_pdfjs_require__.d(getter, 'a', getter);
5357
5358    return getter;
5359  };
5360
5361  __w_pdfjs_require__.o = function (object, property) {
5362    return Object.prototype.hasOwnProperty.call(object, property);
5363  };
5364
5365  __w_pdfjs_require__.p = "";
5366  return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);
5367}([function (module, exports, __w_pdfjs_require__) {
5368  "use strict";
5369
5370  var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
5371    return _typeof2(obj);
5372  } : function (obj) {
5373    return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
5374  };
5375
5376  var _require = __w_pdfjs_require__(1),
5377      assert = _require.assert;
5378
5379  function IsPropertyKey(argument) {
5380    return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';
5381  }
5382
5383  exports.typeIsObject = function (x) {
5384    return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';
5385  };
5386
5387  exports.createDataProperty = function (o, p, v) {
5388    assert(exports.typeIsObject(o));
5389    Object.defineProperty(o, p, {
5390      value: v,
5391      writable: true,
5392      enumerable: true,
5393      configurable: true
5394    });
5395  };
5396
5397  exports.createArrayFromList = function (elements) {
5398    return elements.slice();
5399  };
5400
5401  exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {
5402    new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);
5403  };
5404
5405  exports.CreateIterResultObject = function (value, done) {
5406    assert(typeof done === 'boolean');
5407    var obj = {};
5408    Object.defineProperty(obj, 'value', {
5409      value: value,
5410      enumerable: true,
5411      writable: true,
5412      configurable: true
5413    });
5414    Object.defineProperty(obj, 'done', {
5415      value: done,
5416      enumerable: true,
5417      writable: true,
5418      configurable: true
5419    });
5420    return obj;
5421  };
5422
5423  exports.IsFiniteNonNegativeNumber = function (v) {
5424    if (Number.isNaN(v)) {
5425      return false;
5426    }
5427
5428    if (v === Infinity) {
5429      return false;
5430    }
5431
5432    if (v < 0) {
5433      return false;
5434    }
5435
5436    return true;
5437  };
5438
5439  function Call(F, V, args) {
5440    if (typeof F !== 'function') {
5441      throw new TypeError('Argument is not a function');
5442    }
5443
5444    return Function.prototype.apply.call(F, V, args);
5445  }
5446
5447  exports.InvokeOrNoop = function (O, P, args) {
5448    assert(O !== undefined);
5449    assert(IsPropertyKey(P));
5450    assert(Array.isArray(args));
5451    var method = O[P];
5452
5453    if (method === undefined) {
5454      return undefined;
5455    }
5456
5457    return Call(method, O, args);
5458  };
5459
5460  exports.PromiseInvokeOrNoop = function (O, P, args) {
5461    assert(O !== undefined);
5462    assert(IsPropertyKey(P));
5463    assert(Array.isArray(args));
5464
5465    try {
5466      return Promise.resolve(exports.InvokeOrNoop(O, P, args));
5467    } catch (returnValueE) {
5468      return Promise.reject(returnValueE);
5469    }
5470  };
5471
5472  exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {
5473    assert(O !== undefined);
5474    assert(IsPropertyKey(P));
5475    assert(Array.isArray(args));
5476    assert(Array.isArray(argsF));
5477    var method = void 0;
5478
5479    try {
5480      method = O[P];
5481    } catch (methodE) {
5482      return Promise.reject(methodE);
5483    }
5484
5485    if (method === undefined) {
5486      return F.apply(null, argsF);
5487    }
5488
5489    try {
5490      return Promise.resolve(Call(method, O, args));
5491    } catch (e) {
5492      return Promise.reject(e);
5493    }
5494  };
5495
5496  exports.TransferArrayBuffer = function (O) {
5497    return O.slice();
5498  };
5499
5500  exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {
5501    highWaterMark = Number(highWaterMark);
5502
5503    if (Number.isNaN(highWaterMark) || highWaterMark < 0) {
5504      throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');
5505    }
5506
5507    return highWaterMark;
5508  };
5509
5510  exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {
5511    if (size !== undefined && typeof size !== 'function') {
5512      throw new TypeError('size property of a queuing strategy must be a function');
5513    }
5514
5515    highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);
5516    return {
5517      size: size,
5518      highWaterMark: highWaterMark
5519    };
5520  };
5521}, function (module, exports, __w_pdfjs_require__) {
5522  "use strict";
5523
5524  function rethrowAssertionErrorRejection(e) {
5525    if (e && e.constructor === AssertionError) {
5526      setTimeout(function () {
5527        throw e;
5528      }, 0);
5529    }
5530  }
5531
5532  function AssertionError(message) {
5533    this.name = 'AssertionError';
5534    this.message = message || '';
5535    this.stack = new Error().stack;
5536  }
5537
5538  AssertionError.prototype = Object.create(Error.prototype);
5539  AssertionError.prototype.constructor = AssertionError;
5540
5541  function assert(value, message) {
5542    if (!value) {
5543      throw new AssertionError(message);
5544    }
5545  }
5546
5547  module.exports = {
5548    rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,
5549    AssertionError: AssertionError,
5550    assert: assert
5551  };
5552}, function (module, exports, __w_pdfjs_require__) {
5553  "use strict";
5554
5555  var _createClass = function () {
5556    function defineProperties(target, props) {
5557      for (var i = 0; i < props.length; i++) {
5558        var descriptor = props[i];
5559        descriptor.enumerable = descriptor.enumerable || false;
5560        descriptor.configurable = true;
5561        if ("value" in descriptor) descriptor.writable = true;
5562        Object.defineProperty(target, descriptor.key, descriptor);
5563      }
5564    }
5565
5566    return function (Constructor, protoProps, staticProps) {
5567      if (protoProps) defineProperties(Constructor.prototype, protoProps);
5568      if (staticProps) defineProperties(Constructor, staticProps);
5569      return Constructor;
5570    };
5571  }();
5572
5573  function _classCallCheck(instance, Constructor) {
5574    if (!(instance instanceof Constructor)) {
5575      throw new TypeError("Cannot call a class as a function");
5576    }
5577  }
5578
5579  var _require = __w_pdfjs_require__(0),
5580      InvokeOrNoop = _require.InvokeOrNoop,
5581      PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
5582      ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
5583      typeIsObject = _require.typeIsObject;
5584
5585  var _require2 = __w_pdfjs_require__(1),
5586      assert = _require2.assert,
5587      rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;
5588
5589  var _require3 = __w_pdfjs_require__(3),
5590      DequeueValue = _require3.DequeueValue,
5591      EnqueueValueWithSize = _require3.EnqueueValueWithSize,
5592      PeekQueueValue = _require3.PeekQueueValue,
5593      ResetQueue = _require3.ResetQueue;
5594
5595  var WritableStream = function () {
5596    function WritableStream() {
5597      var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5598
5599      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
5600          size = _ref.size,
5601          _ref$highWaterMark = _ref.highWaterMark,
5602          highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;
5603
5604      _classCallCheck(this, WritableStream);
5605
5606      this._state = 'writable';
5607      this._storedError = undefined;
5608      this._writer = undefined;
5609      this._writableStreamController = undefined;
5610      this._writeRequests = [];
5611      this._inFlightWriteRequest = undefined;
5612      this._closeRequest = undefined;
5613      this._inFlightCloseRequest = undefined;
5614      this._pendingAbortRequest = undefined;
5615      this._backpressure = false;
5616      var type = underlyingSink.type;
5617
5618      if (type !== undefined) {
5619        throw new RangeError('Invalid type is specified');
5620      }
5621
5622      this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);
5623
5624      this._writableStreamController.__startSteps();
5625    }
5626
5627    _createClass(WritableStream, [{
5628      key: 'abort',
5629      value: function abort(reason) {
5630        if (IsWritableStream(this) === false) {
5631          return Promise.reject(streamBrandCheckException('abort'));
5632        }
5633
5634        if (IsWritableStreamLocked(this) === true) {
5635          return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));
5636        }
5637
5638        return WritableStreamAbort(this, reason);
5639      }
5640    }, {
5641      key: 'getWriter',
5642      value: function getWriter() {
5643        if (IsWritableStream(this) === false) {
5644          throw streamBrandCheckException('getWriter');
5645        }
5646
5647        return AcquireWritableStreamDefaultWriter(this);
5648      }
5649    }, {
5650      key: 'locked',
5651      get: function get() {
5652        if (IsWritableStream(this) === false) {
5653          throw streamBrandCheckException('locked');
5654        }
5655
5656        return IsWritableStreamLocked(this);
5657      }
5658    }]);
5659
5660    return WritableStream;
5661  }();
5662
5663  module.exports = {
5664    AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,
5665    IsWritableStream: IsWritableStream,
5666    IsWritableStreamLocked: IsWritableStreamLocked,
5667    WritableStream: WritableStream,
5668    WritableStreamAbort: WritableStreamAbort,
5669    WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,
5670    WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,
5671    WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,
5672    WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,
5673    WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight
5674  };
5675
5676  function AcquireWritableStreamDefaultWriter(stream) {
5677    return new WritableStreamDefaultWriter(stream);
5678  }
5679
5680  function IsWritableStream(x) {
5681    if (!typeIsObject(x)) {
5682      return false;
5683    }
5684
5685    if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {
5686      return false;
5687    }
5688
5689    return true;
5690  }
5691
5692  function IsWritableStreamLocked(stream) {
5693    assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');
5694
5695    if (stream._writer === undefined) {
5696      return false;
5697    }
5698
5699    return true;
5700  }
5701
5702  function WritableStreamAbort(stream, reason) {
5703    var state = stream._state;
5704
5705    if (state === 'closed') {
5706      return Promise.resolve(undefined);
5707    }
5708
5709    if (state === 'errored') {
5710      return Promise.reject(stream._storedError);
5711    }
5712
5713    var error = new TypeError('Requested to abort');
5714
5715    if (stream._pendingAbortRequest !== undefined) {
5716      return Promise.reject(error);
5717    }
5718
5719    assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');
5720    var wasAlreadyErroring = false;
5721
5722    if (state === 'erroring') {
5723      wasAlreadyErroring = true;
5724      reason = undefined;
5725    }
5726
5727    var promise = new Promise(function (resolve, reject) {
5728      stream._pendingAbortRequest = {
5729        _resolve: resolve,
5730        _reject: reject,
5731        _reason: reason,
5732        _wasAlreadyErroring: wasAlreadyErroring
5733      };
5734    });
5735
5736    if (wasAlreadyErroring === false) {
5737      WritableStreamStartErroring(stream, error);
5738    }
5739
5740    return promise;
5741  }
5742
5743  function WritableStreamAddWriteRequest(stream) {
5744    assert(IsWritableStreamLocked(stream) === true);
5745    assert(stream._state === 'writable');
5746    var promise = new Promise(function (resolve, reject) {
5747      var writeRequest = {
5748        _resolve: resolve,
5749        _reject: reject
5750      };
5751
5752      stream._writeRequests.push(writeRequest);
5753    });
5754    return promise;
5755  }
5756
5757  function WritableStreamDealWithRejection(stream, error) {
5758    var state = stream._state;
5759
5760    if (state === 'writable') {
5761      WritableStreamStartErroring(stream, error);
5762      return;
5763    }
5764
5765    assert(state === 'erroring');
5766    WritableStreamFinishErroring(stream);
5767  }
5768
5769  function WritableStreamStartErroring(stream, reason) {
5770    assert(stream._storedError === undefined, 'stream._storedError === undefined');
5771    assert(stream._state === 'writable', 'state must be writable');
5772    var controller = stream._writableStreamController;
5773    assert(controller !== undefined, 'controller must not be undefined');
5774    stream._state = 'erroring';
5775    stream._storedError = reason;
5776    var writer = stream._writer;
5777
5778    if (writer !== undefined) {
5779      WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);
5780    }
5781
5782    if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {
5783      WritableStreamFinishErroring(stream);
5784    }
5785  }
5786
5787  function WritableStreamFinishErroring(stream) {
5788    assert(stream._state === 'erroring', 'stream._state === erroring');
5789    assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');
5790    stream._state = 'errored';
5791
5792    stream._writableStreamController.__errorSteps();
5793
5794    var storedError = stream._storedError;
5795
5796    for (var i = 0; i < stream._writeRequests.length; i++) {
5797      var writeRequest = stream._writeRequests[i];
5798
5799      writeRequest._reject(storedError);
5800    }
5801
5802    stream._writeRequests = [];
5803
5804    if (stream._pendingAbortRequest === undefined) {
5805      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5806      return;
5807    }
5808
5809    var abortRequest = stream._pendingAbortRequest;
5810    stream._pendingAbortRequest = undefined;
5811
5812    if (abortRequest._wasAlreadyErroring === true) {
5813      abortRequest._reject(storedError);
5814
5815      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5816      return;
5817    }
5818
5819    var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);
5820
5821    promise.then(function () {
5822      abortRequest._resolve();
5823
5824      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5825    }, function (reason) {
5826      abortRequest._reject(reason);
5827
5828      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5829    });
5830  }
5831
5832  function WritableStreamFinishInFlightWrite(stream) {
5833    assert(stream._inFlightWriteRequest !== undefined);
5834
5835    stream._inFlightWriteRequest._resolve(undefined);
5836
5837    stream._inFlightWriteRequest = undefined;
5838  }
5839
5840  function WritableStreamFinishInFlightWriteWithError(stream, error) {
5841    assert(stream._inFlightWriteRequest !== undefined);
5842
5843    stream._inFlightWriteRequest._reject(error);
5844
5845    stream._inFlightWriteRequest = undefined;
5846    assert(stream._state === 'writable' || stream._state === 'erroring');
5847    WritableStreamDealWithRejection(stream, error);
5848  }
5849
5850  function WritableStreamFinishInFlightClose(stream) {
5851    assert(stream._inFlightCloseRequest !== undefined);
5852
5853    stream._inFlightCloseRequest._resolve(undefined);
5854
5855    stream._inFlightCloseRequest = undefined;
5856    var state = stream._state;
5857    assert(state === 'writable' || state === 'erroring');
5858
5859    if (state === 'erroring') {
5860      stream._storedError = undefined;
5861
5862      if (stream._pendingAbortRequest !== undefined) {
5863        stream._pendingAbortRequest._resolve();
5864
5865        stream._pendingAbortRequest = undefined;
5866      }
5867    }
5868
5869    stream._state = 'closed';
5870    var writer = stream._writer;
5871
5872    if (writer !== undefined) {
5873      defaultWriterClosedPromiseResolve(writer);
5874    }
5875
5876    assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');
5877    assert(stream._storedError === undefined, 'stream._storedError === undefined');
5878  }
5879
5880  function WritableStreamFinishInFlightCloseWithError(stream, error) {
5881    assert(stream._inFlightCloseRequest !== undefined);
5882
5883    stream._inFlightCloseRequest._reject(error);
5884
5885    stream._inFlightCloseRequest = undefined;
5886    assert(stream._state === 'writable' || stream._state === 'erroring');
5887
5888    if (stream._pendingAbortRequest !== undefined) {
5889      stream._pendingAbortRequest._reject(error);
5890
5891      stream._pendingAbortRequest = undefined;
5892    }
5893
5894    WritableStreamDealWithRejection(stream, error);
5895  }
5896
5897  function WritableStreamCloseQueuedOrInFlight(stream) {
5898    if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {
5899      return false;
5900    }
5901
5902    return true;
5903  }
5904
5905  function WritableStreamHasOperationMarkedInFlight(stream) {
5906    if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {
5907      return false;
5908    }
5909
5910    return true;
5911  }
5912
5913  function WritableStreamMarkCloseRequestInFlight(stream) {
5914    assert(stream._inFlightCloseRequest === undefined);
5915    assert(stream._closeRequest !== undefined);
5916    stream._inFlightCloseRequest = stream._closeRequest;
5917    stream._closeRequest = undefined;
5918  }
5919
5920  function WritableStreamMarkFirstWriteRequestInFlight(stream) {
5921    assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');
5922    assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');
5923    stream._inFlightWriteRequest = stream._writeRequests.shift();
5924  }
5925
5926  function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {
5927    assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`');
5928
5929    if (stream._closeRequest !== undefined) {
5930      assert(stream._inFlightCloseRequest === undefined);
5931
5932      stream._closeRequest._reject(stream._storedError);
5933
5934      stream._closeRequest = undefined;
5935    }
5936
5937    var writer = stream._writer;
5938
5939    if (writer !== undefined) {
5940      defaultWriterClosedPromiseReject(writer, stream._storedError);
5941
5942      writer._closedPromise["catch"](function () {});
5943    }
5944  }
5945
5946  function WritableStreamUpdateBackpressure(stream, backpressure) {
5947    assert(stream._state === 'writable');
5948    assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
5949    var writer = stream._writer;
5950
5951    if (writer !== undefined && backpressure !== stream._backpressure) {
5952      if (backpressure === true) {
5953        defaultWriterReadyPromiseReset(writer);
5954      } else {
5955        assert(backpressure === false);
5956        defaultWriterReadyPromiseResolve(writer);
5957      }
5958    }
5959
5960    stream._backpressure = backpressure;
5961  }
5962
5963  var WritableStreamDefaultWriter = function () {
5964    function WritableStreamDefaultWriter(stream) {
5965      _classCallCheck(this, WritableStreamDefaultWriter);
5966
5967      if (IsWritableStream(stream) === false) {
5968        throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');
5969      }
5970
5971      if (IsWritableStreamLocked(stream) === true) {
5972        throw new TypeError('This stream has already been locked for exclusive writing by another writer');
5973      }
5974
5975      this._ownerWritableStream = stream;
5976      stream._writer = this;
5977      var state = stream._state;
5978
5979      if (state === 'writable') {
5980        if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {
5981          defaultWriterReadyPromiseInitialize(this);
5982        } else {
5983          defaultWriterReadyPromiseInitializeAsResolved(this);
5984        }
5985
5986        defaultWriterClosedPromiseInitialize(this);
5987      } else if (state === 'erroring') {
5988        defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);
5989
5990        this._readyPromise["catch"](function () {});
5991
5992        defaultWriterClosedPromiseInitialize(this);
5993      } else if (state === 'closed') {
5994        defaultWriterReadyPromiseInitializeAsResolved(this);
5995        defaultWriterClosedPromiseInitializeAsResolved(this);
5996      } else {
5997        assert(state === 'errored', 'state must be errored');
5998        var storedError = stream._storedError;
5999        defaultWriterReadyPromiseInitializeAsRejected(this, storedError);
6000
6001        this._readyPromise["catch"](function () {});
6002
6003        defaultWriterClosedPromiseInitializeAsRejected(this, storedError);
6004
6005        this._closedPromise["catch"](function () {});
6006      }
6007    }
6008
6009    _createClass(WritableStreamDefaultWriter, [{
6010      key: 'abort',
6011      value: function abort(reason) {
6012        if (IsWritableStreamDefaultWriter(this) === false) {
6013          return Promise.reject(defaultWriterBrandCheckException('abort'));
6014        }
6015
6016        if (this._ownerWritableStream === undefined) {
6017          return Promise.reject(defaultWriterLockException('abort'));
6018        }
6019
6020        return WritableStreamDefaultWriterAbort(this, reason);
6021      }
6022    }, {
6023      key: 'close',
6024      value: function close() {
6025        if (IsWritableStreamDefaultWriter(this) === false) {
6026          return Promise.reject(defaultWriterBrandCheckException('close'));
6027        }
6028
6029        var stream = this._ownerWritableStream;
6030
6031        if (stream === undefined) {
6032          return Promise.reject(defaultWriterLockException('close'));
6033        }
6034
6035        if (WritableStreamCloseQueuedOrInFlight(stream) === true) {
6036          return Promise.reject(new TypeError('cannot close an already-closing stream'));
6037        }
6038
6039        return WritableStreamDefaultWriterClose(this);
6040      }
6041    }, {
6042      key: 'releaseLock',
6043      value: function releaseLock() {
6044        if (IsWritableStreamDefaultWriter(this) === false) {
6045          throw defaultWriterBrandCheckException('releaseLock');
6046        }
6047
6048        var stream = this._ownerWritableStream;
6049
6050        if (stream === undefined) {
6051          return;
6052        }
6053
6054        assert(stream._writer !== undefined);
6055        WritableStreamDefaultWriterRelease(this);
6056      }
6057    }, {
6058      key: 'write',
6059      value: function write(chunk) {
6060        if (IsWritableStreamDefaultWriter(this) === false) {
6061          return Promise.reject(defaultWriterBrandCheckException('write'));
6062        }
6063
6064        if (this._ownerWritableStream === undefined) {
6065          return Promise.reject(defaultWriterLockException('write to'));
6066        }
6067
6068        return WritableStreamDefaultWriterWrite(this, chunk);
6069      }
6070    }, {
6071      key: 'closed',
6072      get: function get() {
6073        if (IsWritableStreamDefaultWriter(this) === false) {
6074          return Promise.reject(defaultWriterBrandCheckException('closed'));
6075        }
6076
6077        return this._closedPromise;
6078      }
6079    }, {
6080      key: 'desiredSize',
6081      get: function get() {
6082        if (IsWritableStreamDefaultWriter(this) === false) {
6083          throw defaultWriterBrandCheckException('desiredSize');
6084        }
6085
6086        if (this._ownerWritableStream === undefined) {
6087          throw defaultWriterLockException('desiredSize');
6088        }
6089
6090        return WritableStreamDefaultWriterGetDesiredSize(this);
6091      }
6092    }, {
6093      key: 'ready',
6094      get: function get() {
6095        if (IsWritableStreamDefaultWriter(this) === false) {
6096          return Promise.reject(defaultWriterBrandCheckException('ready'));
6097        }
6098
6099        return this._readyPromise;
6100      }
6101    }]);
6102
6103    return WritableStreamDefaultWriter;
6104  }();
6105
6106  function IsWritableStreamDefaultWriter(x) {
6107    if (!typeIsObject(x)) {
6108      return false;
6109    }
6110
6111    if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {
6112      return false;
6113    }
6114
6115    return true;
6116  }
6117
6118  function WritableStreamDefaultWriterAbort(writer, reason) {
6119    var stream = writer._ownerWritableStream;
6120    assert(stream !== undefined);
6121    return WritableStreamAbort(stream, reason);
6122  }
6123
6124  function WritableStreamDefaultWriterClose(writer) {
6125    var stream = writer._ownerWritableStream;
6126    assert(stream !== undefined);
6127    var state = stream._state;
6128
6129    if (state === 'closed' || state === 'errored') {
6130      return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));
6131    }
6132
6133    assert(state === 'writable' || state === 'erroring');
6134    assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
6135    var promise = new Promise(function (resolve, reject) {
6136      var closeRequest = {
6137        _resolve: resolve,
6138        _reject: reject
6139      };
6140      stream._closeRequest = closeRequest;
6141    });
6142
6143    if (stream._backpressure === true && state === 'writable') {
6144      defaultWriterReadyPromiseResolve(writer);
6145    }
6146
6147    WritableStreamDefaultControllerClose(stream._writableStreamController);
6148    return promise;
6149  }
6150
6151  function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {
6152    var stream = writer._ownerWritableStream;
6153    assert(stream !== undefined);
6154    var state = stream._state;
6155
6156    if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
6157      return Promise.resolve();
6158    }
6159
6160    if (state === 'errored') {
6161      return Promise.reject(stream._storedError);
6162    }
6163
6164    assert(state === 'writable' || state === 'erroring');
6165    return WritableStreamDefaultWriterClose(writer);
6166  }
6167
6168  function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {
6169    if (writer._closedPromiseState === 'pending') {
6170      defaultWriterClosedPromiseReject(writer, error);
6171    } else {
6172      defaultWriterClosedPromiseResetToRejected(writer, error);
6173    }
6174
6175    writer._closedPromise["catch"](function () {});
6176  }
6177
6178  function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {
6179    if (writer._readyPromiseState === 'pending') {
6180      defaultWriterReadyPromiseReject(writer, error);
6181    } else {
6182      defaultWriterReadyPromiseResetToRejected(writer, error);
6183    }
6184
6185    writer._readyPromise["catch"](function () {});
6186  }
6187
6188  function WritableStreamDefaultWriterGetDesiredSize(writer) {
6189    var stream = writer._ownerWritableStream;
6190    var state = stream._state;
6191
6192    if (state === 'errored' || state === 'erroring') {
6193      return null;
6194    }
6195
6196    if (state === 'closed') {
6197      return 0;
6198    }
6199
6200    return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);
6201  }
6202
6203  function WritableStreamDefaultWriterRelease(writer) {
6204    var stream = writer._ownerWritableStream;
6205    assert(stream !== undefined);
6206    assert(stream._writer === writer);
6207    var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness');
6208    WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);
6209    WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);
6210    stream._writer = undefined;
6211    writer._ownerWritableStream = undefined;
6212  }
6213
6214  function WritableStreamDefaultWriterWrite(writer, chunk) {
6215    var stream = writer._ownerWritableStream;
6216    assert(stream !== undefined);
6217    var controller = stream._writableStreamController;
6218    var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);
6219
6220    if (stream !== writer._ownerWritableStream) {
6221      return Promise.reject(defaultWriterLockException('write to'));
6222    }
6223
6224    var state = stream._state;
6225
6226    if (state === 'errored') {
6227      return Promise.reject(stream._storedError);
6228    }
6229
6230    if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
6231      return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));
6232    }
6233
6234    if (state === 'erroring') {
6235      return Promise.reject(stream._storedError);
6236    }
6237
6238    assert(state === 'writable');
6239    var promise = WritableStreamAddWriteRequest(stream);
6240    WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);
6241    return promise;
6242  }
6243
6244  var WritableStreamDefaultController = function () {
6245    function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {
6246      _classCallCheck(this, WritableStreamDefaultController);
6247
6248      if (IsWritableStream(stream) === false) {
6249        throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');
6250      }
6251
6252      if (stream._writableStreamController !== undefined) {
6253        throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');
6254      }
6255
6256      this._controlledWritableStream = stream;
6257      this._underlyingSink = underlyingSink;
6258      this._queue = undefined;
6259      this._queueTotalSize = undefined;
6260      ResetQueue(this);
6261      this._started = false;
6262      var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
6263      this._strategySize = normalizedStrategy.size;
6264      this._strategyHWM = normalizedStrategy.highWaterMark;
6265      var backpressure = WritableStreamDefaultControllerGetBackpressure(this);
6266      WritableStreamUpdateBackpressure(stream, backpressure);
6267    }
6268
6269    _createClass(WritableStreamDefaultController, [{
6270      key: 'error',
6271      value: function error(e) {
6272        if (IsWritableStreamDefaultController(this) === false) {
6273          throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');
6274        }
6275
6276        var state = this._controlledWritableStream._state;
6277
6278        if (state !== 'writable') {
6279          return;
6280        }
6281
6282        WritableStreamDefaultControllerError(this, e);
6283      }
6284    }, {
6285      key: '__abortSteps',
6286      value: function __abortSteps(reason) {
6287        return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);
6288      }
6289    }, {
6290      key: '__errorSteps',
6291      value: function __errorSteps() {
6292        ResetQueue(this);
6293      }
6294    }, {
6295      key: '__startSteps',
6296      value: function __startSteps() {
6297        var _this = this;
6298
6299        var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);
6300        var stream = this._controlledWritableStream;
6301        Promise.resolve(startResult).then(function () {
6302          assert(stream._state === 'writable' || stream._state === 'erroring');
6303          _this._started = true;
6304          WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);
6305        }, function (r) {
6306          assert(stream._state === 'writable' || stream._state === 'erroring');
6307          _this._started = true;
6308          WritableStreamDealWithRejection(stream, r);
6309        })["catch"](rethrowAssertionErrorRejection);
6310      }
6311    }]);
6312
6313    return WritableStreamDefaultController;
6314  }();
6315
6316  function WritableStreamDefaultControllerClose(controller) {
6317    EnqueueValueWithSize(controller, 'close', 0);
6318    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
6319  }
6320
6321  function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {
6322    var strategySize = controller._strategySize;
6323
6324    if (strategySize === undefined) {
6325      return 1;
6326    }
6327
6328    try {
6329      return strategySize(chunk);
6330    } catch (chunkSizeE) {
6331      WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
6332      return 1;
6333    }
6334  }
6335
6336  function WritableStreamDefaultControllerGetDesiredSize(controller) {
6337    return controller._strategyHWM - controller._queueTotalSize;
6338  }
6339
6340  function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {
6341    var writeRecord = {
6342      chunk: chunk
6343    };
6344
6345    try {
6346      EnqueueValueWithSize(controller, writeRecord, chunkSize);
6347    } catch (enqueueE) {
6348      WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
6349      return;
6350    }
6351
6352    var stream = controller._controlledWritableStream;
6353
6354    if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {
6355      var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
6356      WritableStreamUpdateBackpressure(stream, backpressure);
6357    }
6358
6359    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
6360  }
6361
6362  function IsWritableStreamDefaultController(x) {
6363    if (!typeIsObject(x)) {
6364      return false;
6365    }
6366
6367    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {
6368      return false;
6369    }
6370
6371    return true;
6372  }
6373
6374  function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {
6375    var stream = controller._controlledWritableStream;
6376
6377    if (controller._started === false) {
6378      return;
6379    }
6380
6381    if (stream._inFlightWriteRequest !== undefined) {
6382      return;
6383    }
6384
6385    var state = stream._state;
6386
6387    if (state === 'closed' || state === 'errored') {
6388      return;
6389    }
6390
6391    if (state === 'erroring') {
6392      WritableStreamFinishErroring(stream);
6393      return;
6394    }
6395
6396    if (controller._queue.length === 0) {
6397      return;
6398    }
6399
6400    var writeRecord = PeekQueueValue(controller);
6401
6402    if (writeRecord === 'close') {
6403      WritableStreamDefaultControllerProcessClose(controller);
6404    } else {
6405      WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);
6406    }
6407  }
6408
6409  function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {
6410    if (controller._controlledWritableStream._state === 'writable') {
6411      WritableStreamDefaultControllerError(controller, error);
6412    }
6413  }
6414
6415  function WritableStreamDefaultControllerProcessClose(controller) {
6416    var stream = controller._controlledWritableStream;
6417    WritableStreamMarkCloseRequestInFlight(stream);
6418    DequeueValue(controller);
6419    assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');
6420    var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);
6421    sinkClosePromise.then(function () {
6422      WritableStreamFinishInFlightClose(stream);
6423    }, function (reason) {
6424      WritableStreamFinishInFlightCloseWithError(stream, reason);
6425    })["catch"](rethrowAssertionErrorRejection);
6426  }
6427
6428  function WritableStreamDefaultControllerProcessWrite(controller, chunk) {
6429    var stream = controller._controlledWritableStream;
6430    WritableStreamMarkFirstWriteRequestInFlight(stream);
6431    var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);
6432    sinkWritePromise.then(function () {
6433      WritableStreamFinishInFlightWrite(stream);
6434      var state = stream._state;
6435      assert(state === 'writable' || state === 'erroring');
6436      DequeueValue(controller);
6437
6438      if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {
6439        var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
6440        WritableStreamUpdateBackpressure(stream, backpressure);
6441      }
6442
6443      WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
6444    }, function (reason) {
6445      WritableStreamFinishInFlightWriteWithError(stream, reason);
6446    })["catch"](rethrowAssertionErrorRejection);
6447  }
6448
6449  function WritableStreamDefaultControllerGetBackpressure(controller) {
6450    var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);
6451    return desiredSize <= 0;
6452  }
6453
6454  function WritableStreamDefaultControllerError(controller, error) {
6455    var stream = controller._controlledWritableStream;
6456    assert(stream._state === 'writable');
6457    WritableStreamStartErroring(stream, error);
6458  }
6459
6460  function streamBrandCheckException(name) {
6461    return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');
6462  }
6463
6464  function defaultWriterBrandCheckException(name) {
6465    return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');
6466  }
6467
6468  function defaultWriterLockException(name) {
6469    return new TypeError('Cannot ' + name + ' a stream using a released writer');
6470  }
6471
6472  function defaultWriterClosedPromiseInitialize(writer) {
6473    writer._closedPromise = new Promise(function (resolve, reject) {
6474      writer._closedPromise_resolve = resolve;
6475      writer._closedPromise_reject = reject;
6476      writer._closedPromiseState = 'pending';
6477    });
6478  }
6479
6480  function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {
6481    writer._closedPromise = Promise.reject(reason);
6482    writer._closedPromise_resolve = undefined;
6483    writer._closedPromise_reject = undefined;
6484    writer._closedPromiseState = 'rejected';
6485  }
6486
6487  function defaultWriterClosedPromiseInitializeAsResolved(writer) {
6488    writer._closedPromise = Promise.resolve(undefined);
6489    writer._closedPromise_resolve = undefined;
6490    writer._closedPromise_reject = undefined;
6491    writer._closedPromiseState = 'resolved';
6492  }
6493
6494  function defaultWriterClosedPromiseReject(writer, reason) {
6495    assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
6496    assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
6497    assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
6498
6499    writer._closedPromise_reject(reason);
6500
6501    writer._closedPromise_resolve = undefined;
6502    writer._closedPromise_reject = undefined;
6503    writer._closedPromiseState = 'rejected';
6504  }
6505
6506  function defaultWriterClosedPromiseResetToRejected(writer, reason) {
6507    assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');
6508    assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');
6509    assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');
6510    writer._closedPromise = Promise.reject(reason);
6511    writer._closedPromiseState = 'rejected';
6512  }
6513
6514  function defaultWriterClosedPromiseResolve(writer) {
6515    assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
6516    assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
6517    assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
6518
6519    writer._closedPromise_resolve(undefined);
6520
6521    writer._closedPromise_resolve = undefined;
6522    writer._closedPromise_reject = undefined;
6523    writer._closedPromiseState = 'resolved';
6524  }
6525
6526  function defaultWriterReadyPromiseInitialize(writer) {
6527    writer._readyPromise = new Promise(function (resolve, reject) {
6528      writer._readyPromise_resolve = resolve;
6529      writer._readyPromise_reject = reject;
6530    });
6531    writer._readyPromiseState = 'pending';
6532  }
6533
6534  function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {
6535    writer._readyPromise = Promise.reject(reason);
6536    writer._readyPromise_resolve = undefined;
6537    writer._readyPromise_reject = undefined;
6538    writer._readyPromiseState = 'rejected';
6539  }
6540
6541  function defaultWriterReadyPromiseInitializeAsResolved(writer) {
6542    writer._readyPromise = Promise.resolve(undefined);
6543    writer._readyPromise_resolve = undefined;
6544    writer._readyPromise_reject = undefined;
6545    writer._readyPromiseState = 'fulfilled';
6546  }
6547
6548  function defaultWriterReadyPromiseReject(writer, reason) {
6549    assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
6550    assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
6551
6552    writer._readyPromise_reject(reason);
6553
6554    writer._readyPromise_resolve = undefined;
6555    writer._readyPromise_reject = undefined;
6556    writer._readyPromiseState = 'rejected';
6557  }
6558
6559  function defaultWriterReadyPromiseReset(writer) {
6560    assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
6561    assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
6562    writer._readyPromise = new Promise(function (resolve, reject) {
6563      writer._readyPromise_resolve = resolve;
6564      writer._readyPromise_reject = reject;
6565    });
6566    writer._readyPromiseState = 'pending';
6567  }
6568
6569  function defaultWriterReadyPromiseResetToRejected(writer, reason) {
6570    assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
6571    assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
6572    writer._readyPromise = Promise.reject(reason);
6573    writer._readyPromiseState = 'rejected';
6574  }
6575
6576  function defaultWriterReadyPromiseResolve(writer) {
6577    assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
6578    assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
6579
6580    writer._readyPromise_resolve(undefined);
6581
6582    writer._readyPromise_resolve = undefined;
6583    writer._readyPromise_reject = undefined;
6584    writer._readyPromiseState = 'fulfilled';
6585  }
6586}, function (module, exports, __w_pdfjs_require__) {
6587  "use strict";
6588
6589  var _require = __w_pdfjs_require__(0),
6590      IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;
6591
6592  var _require2 = __w_pdfjs_require__(1),
6593      assert = _require2.assert;
6594
6595  exports.DequeueValue = function (container) {
6596    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
6597    assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');
6598
6599    var pair = container._queue.shift();
6600
6601    container._queueTotalSize -= pair.size;
6602
6603    if (container._queueTotalSize < 0) {
6604      container._queueTotalSize = 0;
6605    }
6606
6607    return pair.value;
6608  };
6609
6610  exports.EnqueueValueWithSize = function (container, value, size) {
6611    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');
6612    size = Number(size);
6613
6614    if (!IsFiniteNonNegativeNumber(size)) {
6615      throw new RangeError('Size must be a finite, non-NaN, non-negative number.');
6616    }
6617
6618    container._queue.push({
6619      value: value,
6620      size: size
6621    });
6622
6623    container._queueTotalSize += size;
6624  };
6625
6626  exports.PeekQueueValue = function (container) {
6627    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
6628    assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');
6629    var pair = container._queue[0];
6630    return pair.value;
6631  };
6632
6633  exports.ResetQueue = function (container) {
6634    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');
6635    container._queue = [];
6636    container._queueTotalSize = 0;
6637  };
6638}, function (module, exports, __w_pdfjs_require__) {
6639  "use strict";
6640
6641  var _createClass = function () {
6642    function defineProperties(target, props) {
6643      for (var i = 0; i < props.length; i++) {
6644        var descriptor = props[i];
6645        descriptor.enumerable = descriptor.enumerable || false;
6646        descriptor.configurable = true;
6647        if ("value" in descriptor) descriptor.writable = true;
6648        Object.defineProperty(target, descriptor.key, descriptor);
6649      }
6650    }
6651
6652    return function (Constructor, protoProps, staticProps) {
6653      if (protoProps) defineProperties(Constructor.prototype, protoProps);
6654      if (staticProps) defineProperties(Constructor, staticProps);
6655      return Constructor;
6656    };
6657  }();
6658
6659  function _classCallCheck(instance, Constructor) {
6660    if (!(instance instanceof Constructor)) {
6661      throw new TypeError("Cannot call a class as a function");
6662    }
6663  }
6664
6665  var _require = __w_pdfjs_require__(0),
6666      ArrayBufferCopy = _require.ArrayBufferCopy,
6667      CreateIterResultObject = _require.CreateIterResultObject,
6668      IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,
6669      InvokeOrNoop = _require.InvokeOrNoop,
6670      PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
6671      TransferArrayBuffer = _require.TransferArrayBuffer,
6672      ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
6673      ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;
6674
6675  var _require2 = __w_pdfjs_require__(0),
6676      createArrayFromList = _require2.createArrayFromList,
6677      createDataProperty = _require2.createDataProperty,
6678      typeIsObject = _require2.typeIsObject;
6679
6680  var _require3 = __w_pdfjs_require__(1),
6681      assert = _require3.assert,
6682      rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;
6683
6684  var _require4 = __w_pdfjs_require__(3),
6685      DequeueValue = _require4.DequeueValue,
6686      EnqueueValueWithSize = _require4.EnqueueValueWithSize,
6687      ResetQueue = _require4.ResetQueue;
6688
6689  var _require5 = __w_pdfjs_require__(2),
6690      AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,
6691      IsWritableStream = _require5.IsWritableStream,
6692      IsWritableStreamLocked = _require5.IsWritableStreamLocked,
6693      WritableStreamAbort = _require5.WritableStreamAbort,
6694      WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,
6695      WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,
6696      WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,
6697      WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;
6698
6699  var ReadableStream = function () {
6700    function ReadableStream() {
6701      var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6702
6703      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
6704          size = _ref.size,
6705          highWaterMark = _ref.highWaterMark;
6706
6707      _classCallCheck(this, ReadableStream);
6708
6709      this._state = 'readable';
6710      this._reader = undefined;
6711      this._storedError = undefined;
6712      this._disturbed = false;
6713      this._readableStreamController = undefined;
6714      var type = underlyingSource.type;
6715      var typeString = String(type);
6716
6717      if (typeString === 'bytes') {
6718        if (highWaterMark === undefined) {
6719          highWaterMark = 0;
6720        }
6721
6722        this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);
6723      } else if (type === undefined) {
6724        if (highWaterMark === undefined) {
6725          highWaterMark = 1;
6726        }
6727
6728        this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);
6729      } else {
6730        throw new RangeError('Invalid type is specified');
6731      }
6732    }
6733
6734    _createClass(ReadableStream, [{
6735      key: 'cancel',
6736      value: function cancel(reason) {
6737        if (IsReadableStream(this) === false) {
6738          return Promise.reject(streamBrandCheckException('cancel'));
6739        }
6740
6741        if (IsReadableStreamLocked(this) === true) {
6742          return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));
6743        }
6744
6745        return ReadableStreamCancel(this, reason);
6746      }
6747    }, {
6748      key: 'getReader',
6749      value: function getReader() {
6750        var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
6751            mode = _ref2.mode;
6752
6753        if (IsReadableStream(this) === false) {
6754          throw streamBrandCheckException('getReader');
6755        }
6756
6757        if (mode === undefined) {
6758          return AcquireReadableStreamDefaultReader(this);
6759        }
6760
6761        mode = String(mode);
6762
6763        if (mode === 'byob') {
6764          return AcquireReadableStreamBYOBReader(this);
6765        }
6766
6767        throw new RangeError('Invalid mode is specified');
6768      }
6769    }, {
6770      key: 'pipeThrough',
6771      value: function pipeThrough(_ref3, options) {
6772        var writable = _ref3.writable,
6773            readable = _ref3.readable;
6774        var promise = this.pipeTo(writable, options);
6775        ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);
6776        return readable;
6777      }
6778    }, {
6779      key: 'pipeTo',
6780      value: function pipeTo(dest) {
6781        var _this = this;
6782
6783        var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
6784            preventClose = _ref4.preventClose,
6785            preventAbort = _ref4.preventAbort,
6786            preventCancel = _ref4.preventCancel;
6787
6788        if (IsReadableStream(this) === false) {
6789          return Promise.reject(streamBrandCheckException('pipeTo'));
6790        }
6791
6792        if (IsWritableStream(dest) === false) {
6793          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream'));
6794        }
6795
6796        preventClose = Boolean(preventClose);
6797        preventAbort = Boolean(preventAbort);
6798        preventCancel = Boolean(preventCancel);
6799
6800        if (IsReadableStreamLocked(this) === true) {
6801          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));
6802        }
6803
6804        if (IsWritableStreamLocked(dest) === true) {
6805          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));
6806        }
6807
6808        var reader = AcquireReadableStreamDefaultReader(this);
6809        var writer = AcquireWritableStreamDefaultWriter(dest);
6810        var shuttingDown = false;
6811        var currentWrite = Promise.resolve();
6812        return new Promise(function (resolve, reject) {
6813          function pipeLoop() {
6814            currentWrite = Promise.resolve();
6815
6816            if (shuttingDown === true) {
6817              return Promise.resolve();
6818            }
6819
6820            return writer._readyPromise.then(function () {
6821              return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {
6822                var value = _ref5.value,
6823                    done = _ref5.done;
6824
6825                if (done === true) {
6826                  return;
6827                }
6828
6829                currentWrite = WritableStreamDefaultWriterWrite(writer, value)["catch"](function () {});
6830              });
6831            }).then(pipeLoop);
6832          }
6833
6834          isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {
6835            if (preventAbort === false) {
6836              shutdownWithAction(function () {
6837                return WritableStreamAbort(dest, storedError);
6838              }, true, storedError);
6839            } else {
6840              shutdown(true, storedError);
6841            }
6842          });
6843          isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {
6844            if (preventCancel === false) {
6845              shutdownWithAction(function () {
6846                return ReadableStreamCancel(_this, storedError);
6847              }, true, storedError);
6848            } else {
6849              shutdown(true, storedError);
6850            }
6851          });
6852          isOrBecomesClosed(_this, reader._closedPromise, function () {
6853            if (preventClose === false) {
6854              shutdownWithAction(function () {
6855                return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);
6856              });
6857            } else {
6858              shutdown();
6859            }
6860          });
6861
6862          if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {
6863            var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');
6864
6865            if (preventCancel === false) {
6866              shutdownWithAction(function () {
6867                return ReadableStreamCancel(_this, destClosed);
6868              }, true, destClosed);
6869            } else {
6870              shutdown(true, destClosed);
6871            }
6872          }
6873
6874          pipeLoop()["catch"](function (err) {
6875            currentWrite = Promise.resolve();
6876            rethrowAssertionErrorRejection(err);
6877          });
6878
6879          function waitForWritesToFinish() {
6880            var oldCurrentWrite = currentWrite;
6881            return currentWrite.then(function () {
6882              return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;
6883            });
6884          }
6885
6886          function isOrBecomesErrored(stream, promise, action) {
6887            if (stream._state === 'errored') {
6888              action(stream._storedError);
6889            } else {
6890              promise["catch"](action)["catch"](rethrowAssertionErrorRejection);
6891            }
6892          }
6893
6894          function isOrBecomesClosed(stream, promise, action) {
6895            if (stream._state === 'closed') {
6896              action();
6897            } else {
6898              promise.then(action)["catch"](rethrowAssertionErrorRejection);
6899            }
6900          }
6901
6902          function shutdownWithAction(action, originalIsError, originalError) {
6903            if (shuttingDown === true) {
6904              return;
6905            }
6906
6907            shuttingDown = true;
6908
6909            if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
6910              waitForWritesToFinish().then(doTheRest);
6911            } else {
6912              doTheRest();
6913            }
6914
6915            function doTheRest() {
6916              action().then(function () {
6917                return finalize(originalIsError, originalError);
6918              }, function (newError) {
6919                return finalize(true, newError);
6920              })["catch"](rethrowAssertionErrorRejection);
6921            }
6922          }
6923
6924          function shutdown(isError, error) {
6925            if (shuttingDown === true) {
6926              return;
6927            }
6928
6929            shuttingDown = true;
6930
6931            if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
6932              waitForWritesToFinish().then(function () {
6933                return finalize(isError, error);
6934              })["catch"](rethrowAssertionErrorRejection);
6935            } else {
6936              finalize(isError, error);
6937            }
6938          }
6939
6940          function finalize(isError, error) {
6941            WritableStreamDefaultWriterRelease(writer);
6942            ReadableStreamReaderGenericRelease(reader);
6943
6944            if (isError) {
6945              reject(error);
6946            } else {
6947              resolve(undefined);
6948            }
6949          }
6950        });
6951      }
6952    }, {
6953      key: 'tee',
6954      value: function tee() {
6955        if (IsReadableStream(this) === false) {
6956          throw streamBrandCheckException('tee');
6957        }
6958
6959        var branches = ReadableStreamTee(this, false);
6960        return createArrayFromList(branches);
6961      }
6962    }, {
6963      key: 'locked',
6964      get: function get() {
6965        if (IsReadableStream(this) === false) {
6966          throw streamBrandCheckException('locked');
6967        }
6968
6969        return IsReadableStreamLocked(this);
6970      }
6971    }]);
6972
6973    return ReadableStream;
6974  }();
6975
6976  module.exports = {
6977    ReadableStream: ReadableStream,
6978    IsReadableStreamDisturbed: IsReadableStreamDisturbed,
6979    ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,
6980    ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,
6981    ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,
6982    ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize
6983  };
6984
6985  function AcquireReadableStreamBYOBReader(stream) {
6986    return new ReadableStreamBYOBReader(stream);
6987  }
6988
6989  function AcquireReadableStreamDefaultReader(stream) {
6990    return new ReadableStreamDefaultReader(stream);
6991  }
6992
6993  function IsReadableStream(x) {
6994    if (!typeIsObject(x)) {
6995      return false;
6996    }
6997
6998    if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {
6999      return false;
7000    }
7001
7002    return true;
7003  }
7004
7005  function IsReadableStreamDisturbed(stream) {
7006    assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');
7007    return stream._disturbed;
7008  }
7009
7010  function IsReadableStreamLocked(stream) {
7011    assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');
7012
7013    if (stream._reader === undefined) {
7014      return false;
7015    }
7016
7017    return true;
7018  }
7019
7020  function ReadableStreamTee(stream, cloneForBranch2) {
7021    assert(IsReadableStream(stream) === true);
7022    assert(typeof cloneForBranch2 === 'boolean');
7023    var reader = AcquireReadableStreamDefaultReader(stream);
7024    var teeState = {
7025      closedOrErrored: false,
7026      canceled1: false,
7027      canceled2: false,
7028      reason1: undefined,
7029      reason2: undefined
7030    };
7031    teeState.promise = new Promise(function (resolve) {
7032      teeState._resolve = resolve;
7033    });
7034    var pull = create_ReadableStreamTeePullFunction();
7035    pull._reader = reader;
7036    pull._teeState = teeState;
7037    pull._cloneForBranch2 = cloneForBranch2;
7038    var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();
7039    cancel1._stream = stream;
7040    cancel1._teeState = teeState;
7041    var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();
7042    cancel2._stream = stream;
7043    cancel2._teeState = teeState;
7044    var underlyingSource1 = Object.create(Object.prototype);
7045    createDataProperty(underlyingSource1, 'pull', pull);
7046    createDataProperty(underlyingSource1, 'cancel', cancel1);
7047    var branch1Stream = new ReadableStream(underlyingSource1);
7048    var underlyingSource2 = Object.create(Object.prototype);
7049    createDataProperty(underlyingSource2, 'pull', pull);
7050    createDataProperty(underlyingSource2, 'cancel', cancel2);
7051    var branch2Stream = new ReadableStream(underlyingSource2);
7052    pull._branch1 = branch1Stream._readableStreamController;
7053    pull._branch2 = branch2Stream._readableStreamController;
7054
7055    reader._closedPromise["catch"](function (r) {
7056      if (teeState.closedOrErrored === true) {
7057        return;
7058      }
7059
7060      ReadableStreamDefaultControllerError(pull._branch1, r);
7061      ReadableStreamDefaultControllerError(pull._branch2, r);
7062      teeState.closedOrErrored = true;
7063    });
7064
7065    return [branch1Stream, branch2Stream];
7066  }
7067
7068  function create_ReadableStreamTeePullFunction() {
7069    function f() {
7070      var reader = f._reader,
7071          branch1 = f._branch1,
7072          branch2 = f._branch2,
7073          teeState = f._teeState;
7074      return ReadableStreamDefaultReaderRead(reader).then(function (result) {
7075        assert(typeIsObject(result));
7076        var value = result.value;
7077        var done = result.done;
7078        assert(typeof done === 'boolean');
7079
7080        if (done === true && teeState.closedOrErrored === false) {
7081          if (teeState.canceled1 === false) {
7082            ReadableStreamDefaultControllerClose(branch1);
7083          }
7084
7085          if (teeState.canceled2 === false) {
7086            ReadableStreamDefaultControllerClose(branch2);
7087          }
7088
7089          teeState.closedOrErrored = true;
7090        }
7091
7092        if (teeState.closedOrErrored === true) {
7093          return;
7094        }
7095
7096        var value1 = value;
7097        var value2 = value;
7098
7099        if (teeState.canceled1 === false) {
7100          ReadableStreamDefaultControllerEnqueue(branch1, value1);
7101        }
7102
7103        if (teeState.canceled2 === false) {
7104          ReadableStreamDefaultControllerEnqueue(branch2, value2);
7105        }
7106      });
7107    }
7108
7109    return f;
7110  }
7111
7112  function create_ReadableStreamTeeBranch1CancelFunction() {
7113    function f(reason) {
7114      var stream = f._stream,
7115          teeState = f._teeState;
7116      teeState.canceled1 = true;
7117      teeState.reason1 = reason;
7118
7119      if (teeState.canceled2 === true) {
7120        var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
7121        var cancelResult = ReadableStreamCancel(stream, compositeReason);
7122
7123        teeState._resolve(cancelResult);
7124      }
7125
7126      return teeState.promise;
7127    }
7128
7129    return f;
7130  }
7131
7132  function create_ReadableStreamTeeBranch2CancelFunction() {
7133    function f(reason) {
7134      var stream = f._stream,
7135          teeState = f._teeState;
7136      teeState.canceled2 = true;
7137      teeState.reason2 = reason;
7138
7139      if (teeState.canceled1 === true) {
7140        var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
7141        var cancelResult = ReadableStreamCancel(stream, compositeReason);
7142
7143        teeState._resolve(cancelResult);
7144      }
7145
7146      return teeState.promise;
7147    }
7148
7149    return f;
7150  }
7151
7152  function ReadableStreamAddReadIntoRequest(stream) {
7153    assert(IsReadableStreamBYOBReader(stream._reader) === true);
7154    assert(stream._state === 'readable' || stream._state === 'closed');
7155    var promise = new Promise(function (resolve, reject) {
7156      var readIntoRequest = {
7157        _resolve: resolve,
7158        _reject: reject
7159      };
7160
7161      stream._reader._readIntoRequests.push(readIntoRequest);
7162    });
7163    return promise;
7164  }
7165
7166  function ReadableStreamAddReadRequest(stream) {
7167    assert(IsReadableStreamDefaultReader(stream._reader) === true);
7168    assert(stream._state === 'readable');
7169    var promise = new Promise(function (resolve, reject) {
7170      var readRequest = {
7171        _resolve: resolve,
7172        _reject: reject
7173      };
7174
7175      stream._reader._readRequests.push(readRequest);
7176    });
7177    return promise;
7178  }
7179
7180  function ReadableStreamCancel(stream, reason) {
7181    stream._disturbed = true;
7182
7183    if (stream._state === 'closed') {
7184      return Promise.resolve(undefined);
7185    }
7186
7187    if (stream._state === 'errored') {
7188      return Promise.reject(stream._storedError);
7189    }
7190
7191    ReadableStreamClose(stream);
7192
7193    var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);
7194
7195    return sourceCancelPromise.then(function () {
7196      return undefined;
7197    });
7198  }
7199
7200  function ReadableStreamClose(stream) {
7201    assert(stream._state === 'readable');
7202    stream._state = 'closed';
7203    var reader = stream._reader;
7204
7205    if (reader === undefined) {
7206      return undefined;
7207    }
7208
7209    if (IsReadableStreamDefaultReader(reader) === true) {
7210      for (var i = 0; i < reader._readRequests.length; i++) {
7211        var _resolve = reader._readRequests[i]._resolve;
7212
7213        _resolve(CreateIterResultObject(undefined, true));
7214      }
7215
7216      reader._readRequests = [];
7217    }
7218
7219    defaultReaderClosedPromiseResolve(reader);
7220    return undefined;
7221  }
7222
7223  function ReadableStreamError(stream, e) {
7224    assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');
7225    assert(stream._state === 'readable', 'state must be readable');
7226    stream._state = 'errored';
7227    stream._storedError = e;
7228    var reader = stream._reader;
7229
7230    if (reader === undefined) {
7231      return undefined;
7232    }
7233
7234    if (IsReadableStreamDefaultReader(reader) === true) {
7235      for (var i = 0; i < reader._readRequests.length; i++) {
7236        var readRequest = reader._readRequests[i];
7237
7238        readRequest._reject(e);
7239      }
7240
7241      reader._readRequests = [];
7242    } else {
7243      assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');
7244
7245      for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {
7246        var readIntoRequest = reader._readIntoRequests[_i];
7247
7248        readIntoRequest._reject(e);
7249      }
7250
7251      reader._readIntoRequests = [];
7252    }
7253
7254    defaultReaderClosedPromiseReject(reader, e);
7255
7256    reader._closedPromise["catch"](function () {});
7257  }
7258
7259  function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {
7260    var reader = stream._reader;
7261    assert(reader._readIntoRequests.length > 0);
7262
7263    var readIntoRequest = reader._readIntoRequests.shift();
7264
7265    readIntoRequest._resolve(CreateIterResultObject(chunk, done));
7266  }
7267
7268  function ReadableStreamFulfillReadRequest(stream, chunk, done) {
7269    var reader = stream._reader;
7270    assert(reader._readRequests.length > 0);
7271
7272    var readRequest = reader._readRequests.shift();
7273
7274    readRequest._resolve(CreateIterResultObject(chunk, done));
7275  }
7276
7277  function ReadableStreamGetNumReadIntoRequests(stream) {
7278    return stream._reader._readIntoRequests.length;
7279  }
7280
7281  function ReadableStreamGetNumReadRequests(stream) {
7282    return stream._reader._readRequests.length;
7283  }
7284
7285  function ReadableStreamHasBYOBReader(stream) {
7286    var reader = stream._reader;
7287
7288    if (reader === undefined) {
7289      return false;
7290    }
7291
7292    if (IsReadableStreamBYOBReader(reader) === false) {
7293      return false;
7294    }
7295
7296    return true;
7297  }
7298
7299  function ReadableStreamHasDefaultReader(stream) {
7300    var reader = stream._reader;
7301
7302    if (reader === undefined) {
7303      return false;
7304    }
7305
7306    if (IsReadableStreamDefaultReader(reader) === false) {
7307      return false;
7308    }
7309
7310    return true;
7311  }
7312
7313  var ReadableStreamDefaultReader = function () {
7314    function ReadableStreamDefaultReader(stream) {
7315      _classCallCheck(this, ReadableStreamDefaultReader);
7316
7317      if (IsReadableStream(stream) === false) {
7318        throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');
7319      }
7320
7321      if (IsReadableStreamLocked(stream) === true) {
7322        throw new TypeError('This stream has already been locked for exclusive reading by another reader');
7323      }
7324
7325      ReadableStreamReaderGenericInitialize(this, stream);
7326      this._readRequests = [];
7327    }
7328
7329    _createClass(ReadableStreamDefaultReader, [{
7330      key: 'cancel',
7331      value: function cancel(reason) {
7332        if (IsReadableStreamDefaultReader(this) === false) {
7333          return Promise.reject(defaultReaderBrandCheckException('cancel'));
7334        }
7335
7336        if (this._ownerReadableStream === undefined) {
7337          return Promise.reject(readerLockException('cancel'));
7338        }
7339
7340        return ReadableStreamReaderGenericCancel(this, reason);
7341      }
7342    }, {
7343      key: 'read',
7344      value: function read() {
7345        if (IsReadableStreamDefaultReader(this) === false) {
7346          return Promise.reject(defaultReaderBrandCheckException('read'));
7347        }
7348
7349        if (this._ownerReadableStream === undefined) {
7350          return Promise.reject(readerLockException('read from'));
7351        }
7352
7353        return ReadableStreamDefaultReaderRead(this);
7354      }
7355    }, {
7356      key: 'releaseLock',
7357      value: function releaseLock() {
7358        if (IsReadableStreamDefaultReader(this) === false) {
7359          throw defaultReaderBrandCheckException('releaseLock');
7360        }
7361
7362        if (this._ownerReadableStream === undefined) {
7363          return;
7364        }
7365
7366        if (this._readRequests.length > 0) {
7367          throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
7368        }
7369
7370        ReadableStreamReaderGenericRelease(this);
7371      }
7372    }, {
7373      key: 'closed',
7374      get: function get() {
7375        if (IsReadableStreamDefaultReader(this) === false) {
7376          return Promise.reject(defaultReaderBrandCheckException('closed'));
7377        }
7378
7379        return this._closedPromise;
7380      }
7381    }]);
7382
7383    return ReadableStreamDefaultReader;
7384  }();
7385
7386  var ReadableStreamBYOBReader = function () {
7387    function ReadableStreamBYOBReader(stream) {
7388      _classCallCheck(this, ReadableStreamBYOBReader);
7389
7390      if (!IsReadableStream(stream)) {
7391        throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');
7392      }
7393
7394      if (IsReadableByteStreamController(stream._readableStreamController) === false) {
7395        throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');
7396      }
7397
7398      if (IsReadableStreamLocked(stream)) {
7399        throw new TypeError('This stream has already been locked for exclusive reading by another reader');
7400      }
7401
7402      ReadableStreamReaderGenericInitialize(this, stream);
7403      this._readIntoRequests = [];
7404    }
7405
7406    _createClass(ReadableStreamBYOBReader, [{
7407      key: 'cancel',
7408      value: function cancel(reason) {
7409        if (!IsReadableStreamBYOBReader(this)) {
7410          return Promise.reject(byobReaderBrandCheckException('cancel'));
7411        }
7412
7413        if (this._ownerReadableStream === undefined) {
7414          return Promise.reject(readerLockException('cancel'));
7415        }
7416
7417        return ReadableStreamReaderGenericCancel(this, reason);
7418      }
7419    }, {
7420      key: 'read',
7421      value: function read(view) {
7422        if (!IsReadableStreamBYOBReader(this)) {
7423          return Promise.reject(byobReaderBrandCheckException('read'));
7424        }
7425
7426        if (this._ownerReadableStream === undefined) {
7427          return Promise.reject(readerLockException('read from'));
7428        }
7429
7430        if (!ArrayBuffer.isView(view)) {
7431          return Promise.reject(new TypeError('view must be an array buffer view'));
7432        }
7433
7434        if (view.byteLength === 0) {
7435          return Promise.reject(new TypeError('view must have non-zero byteLength'));
7436        }
7437
7438        return ReadableStreamBYOBReaderRead(this, view);
7439      }
7440    }, {
7441      key: 'releaseLock',
7442      value: function releaseLock() {
7443        if (!IsReadableStreamBYOBReader(this)) {
7444          throw byobReaderBrandCheckException('releaseLock');
7445        }
7446
7447        if (this._ownerReadableStream === undefined) {
7448          return;
7449        }
7450
7451        if (this._readIntoRequests.length > 0) {
7452          throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
7453        }
7454
7455        ReadableStreamReaderGenericRelease(this);
7456      }
7457    }, {
7458      key: 'closed',
7459      get: function get() {
7460        if (!IsReadableStreamBYOBReader(this)) {
7461          return Promise.reject(byobReaderBrandCheckException('closed'));
7462        }
7463
7464        return this._closedPromise;
7465      }
7466    }]);
7467
7468    return ReadableStreamBYOBReader;
7469  }();
7470
7471  function IsReadableStreamBYOBReader(x) {
7472    if (!typeIsObject(x)) {
7473      return false;
7474    }
7475
7476    if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {
7477      return false;
7478    }
7479
7480    return true;
7481  }
7482
7483  function IsReadableStreamDefaultReader(x) {
7484    if (!typeIsObject(x)) {
7485      return false;
7486    }
7487
7488    if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {
7489      return false;
7490    }
7491
7492    return true;
7493  }
7494
7495  function ReadableStreamReaderGenericInitialize(reader, stream) {
7496    reader._ownerReadableStream = stream;
7497    stream._reader = reader;
7498
7499    if (stream._state === 'readable') {
7500      defaultReaderClosedPromiseInitialize(reader);
7501    } else if (stream._state === 'closed') {
7502      defaultReaderClosedPromiseInitializeAsResolved(reader);
7503    } else {
7504      assert(stream._state === 'errored', 'state must be errored');
7505      defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);
7506
7507      reader._closedPromise["catch"](function () {});
7508    }
7509  }
7510
7511  function ReadableStreamReaderGenericCancel(reader, reason) {
7512    var stream = reader._ownerReadableStream;
7513    assert(stream !== undefined);
7514    return ReadableStreamCancel(stream, reason);
7515  }
7516
7517  function ReadableStreamReaderGenericRelease(reader) {
7518    assert(reader._ownerReadableStream !== undefined);
7519    assert(reader._ownerReadableStream._reader === reader);
7520
7521    if (reader._ownerReadableStream._state === 'readable') {
7522      defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
7523    } else {
7524      defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
7525    }
7526
7527    reader._closedPromise["catch"](function () {});
7528
7529    reader._ownerReadableStream._reader = undefined;
7530    reader._ownerReadableStream = undefined;
7531  }
7532
7533  function ReadableStreamBYOBReaderRead(reader, view) {
7534    var stream = reader._ownerReadableStream;
7535    assert(stream !== undefined);
7536    stream._disturbed = true;
7537
7538    if (stream._state === 'errored') {
7539      return Promise.reject(stream._storedError);
7540    }
7541
7542    return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);
7543  }
7544
7545  function ReadableStreamDefaultReaderRead(reader) {
7546    var stream = reader._ownerReadableStream;
7547    assert(stream !== undefined);
7548    stream._disturbed = true;
7549
7550    if (stream._state === 'closed') {
7551      return Promise.resolve(CreateIterResultObject(undefined, true));
7552    }
7553
7554    if (stream._state === 'errored') {
7555      return Promise.reject(stream._storedError);
7556    }
7557
7558    assert(stream._state === 'readable');
7559    return stream._readableStreamController.__pullSteps();
7560  }
7561
7562  var ReadableStreamDefaultController = function () {
7563    function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {
7564      _classCallCheck(this, ReadableStreamDefaultController);
7565
7566      if (IsReadableStream(stream) === false) {
7567        throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');
7568      }
7569
7570      if (stream._readableStreamController !== undefined) {
7571        throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');
7572      }
7573
7574      this._controlledReadableStream = stream;
7575      this._underlyingSource = underlyingSource;
7576      this._queue = undefined;
7577      this._queueTotalSize = undefined;
7578      ResetQueue(this);
7579      this._started = false;
7580      this._closeRequested = false;
7581      this._pullAgain = false;
7582      this._pulling = false;
7583      var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
7584      this._strategySize = normalizedStrategy.size;
7585      this._strategyHWM = normalizedStrategy.highWaterMark;
7586      var controller = this;
7587      var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);
7588      Promise.resolve(startResult).then(function () {
7589        controller._started = true;
7590        assert(controller._pulling === false);
7591        assert(controller._pullAgain === false);
7592        ReadableStreamDefaultControllerCallPullIfNeeded(controller);
7593      }, function (r) {
7594        ReadableStreamDefaultControllerErrorIfNeeded(controller, r);
7595      })["catch"](rethrowAssertionErrorRejection);
7596    }
7597
7598    _createClass(ReadableStreamDefaultController, [{
7599      key: 'close',
7600      value: function close() {
7601        if (IsReadableStreamDefaultController(this) === false) {
7602          throw defaultControllerBrandCheckException('close');
7603        }
7604
7605        if (this._closeRequested === true) {
7606          throw new TypeError('The stream has already been closed; do not close it again!');
7607        }
7608
7609        var state = this._controlledReadableStream._state;
7610
7611        if (state !== 'readable') {
7612          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
7613        }
7614
7615        ReadableStreamDefaultControllerClose(this);
7616      }
7617    }, {
7618      key: 'enqueue',
7619      value: function enqueue(chunk) {
7620        if (IsReadableStreamDefaultController(this) === false) {
7621          throw defaultControllerBrandCheckException('enqueue');
7622        }
7623
7624        if (this._closeRequested === true) {
7625          throw new TypeError('stream is closed or draining');
7626        }
7627
7628        var state = this._controlledReadableStream._state;
7629
7630        if (state !== 'readable') {
7631          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
7632        }
7633
7634        return ReadableStreamDefaultControllerEnqueue(this, chunk);
7635      }
7636    }, {
7637      key: 'error',
7638      value: function error(e) {
7639        if (IsReadableStreamDefaultController(this) === false) {
7640          throw defaultControllerBrandCheckException('error');
7641        }
7642
7643        var stream = this._controlledReadableStream;
7644
7645        if (stream._state !== 'readable') {
7646          throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
7647        }
7648
7649        ReadableStreamDefaultControllerError(this, e);
7650      }
7651    }, {
7652      key: '__cancelSteps',
7653      value: function __cancelSteps(reason) {
7654        ResetQueue(this);
7655        return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);
7656      }
7657    }, {
7658      key: '__pullSteps',
7659      value: function __pullSteps() {
7660        var stream = this._controlledReadableStream;
7661
7662        if (this._queue.length > 0) {
7663          var chunk = DequeueValue(this);
7664
7665          if (this._closeRequested === true && this._queue.length === 0) {
7666            ReadableStreamClose(stream);
7667          } else {
7668            ReadableStreamDefaultControllerCallPullIfNeeded(this);
7669          }
7670
7671          return Promise.resolve(CreateIterResultObject(chunk, false));
7672        }
7673
7674        var pendingPromise = ReadableStreamAddReadRequest(stream);
7675        ReadableStreamDefaultControllerCallPullIfNeeded(this);
7676        return pendingPromise;
7677      }
7678    }, {
7679      key: 'desiredSize',
7680      get: function get() {
7681        if (IsReadableStreamDefaultController(this) === false) {
7682          throw defaultControllerBrandCheckException('desiredSize');
7683        }
7684
7685        return ReadableStreamDefaultControllerGetDesiredSize(this);
7686      }
7687    }]);
7688
7689    return ReadableStreamDefaultController;
7690  }();
7691
7692  function IsReadableStreamDefaultController(x) {
7693    if (!typeIsObject(x)) {
7694      return false;
7695    }
7696
7697    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {
7698      return false;
7699    }
7700
7701    return true;
7702  }
7703
7704  function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {
7705    var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);
7706
7707    if (shouldPull === false) {
7708      return undefined;
7709    }
7710
7711    if (controller._pulling === true) {
7712      controller._pullAgain = true;
7713      return undefined;
7714    }
7715
7716    assert(controller._pullAgain === false);
7717    controller._pulling = true;
7718    var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);
7719    pullPromise.then(function () {
7720      controller._pulling = false;
7721
7722      if (controller._pullAgain === true) {
7723        controller._pullAgain = false;
7724        return ReadableStreamDefaultControllerCallPullIfNeeded(controller);
7725      }
7726
7727      return undefined;
7728    }, function (e) {
7729      ReadableStreamDefaultControllerErrorIfNeeded(controller, e);
7730    })["catch"](rethrowAssertionErrorRejection);
7731    return undefined;
7732  }
7733
7734  function ReadableStreamDefaultControllerShouldCallPull(controller) {
7735    var stream = controller._controlledReadableStream;
7736
7737    if (stream._state === 'closed' || stream._state === 'errored') {
7738      return false;
7739    }
7740
7741    if (controller._closeRequested === true) {
7742      return false;
7743    }
7744
7745    if (controller._started === false) {
7746      return false;
7747    }
7748
7749    if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
7750      return true;
7751    }
7752
7753    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
7754
7755    if (desiredSize > 0) {
7756      return true;
7757    }
7758
7759    return false;
7760  }
7761
7762  function ReadableStreamDefaultControllerClose(controller) {
7763    var stream = controller._controlledReadableStream;
7764    assert(controller._closeRequested === false);
7765    assert(stream._state === 'readable');
7766    controller._closeRequested = true;
7767
7768    if (controller._queue.length === 0) {
7769      ReadableStreamClose(stream);
7770    }
7771  }
7772
7773  function ReadableStreamDefaultControllerEnqueue(controller, chunk) {
7774    var stream = controller._controlledReadableStream;
7775    assert(controller._closeRequested === false);
7776    assert(stream._state === 'readable');
7777
7778    if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
7779      ReadableStreamFulfillReadRequest(stream, chunk, false);
7780    } else {
7781      var chunkSize = 1;
7782
7783      if (controller._strategySize !== undefined) {
7784        var strategySize = controller._strategySize;
7785
7786        try {
7787          chunkSize = strategySize(chunk);
7788        } catch (chunkSizeE) {
7789          ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
7790          throw chunkSizeE;
7791        }
7792      }
7793
7794      try {
7795        EnqueueValueWithSize(controller, chunk, chunkSize);
7796      } catch (enqueueE) {
7797        ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
7798        throw enqueueE;
7799      }
7800    }
7801
7802    ReadableStreamDefaultControllerCallPullIfNeeded(controller);
7803    return undefined;
7804  }
7805
7806  function ReadableStreamDefaultControllerError(controller, e) {
7807    var stream = controller._controlledReadableStream;
7808    assert(stream._state === 'readable');
7809    ResetQueue(controller);
7810    ReadableStreamError(stream, e);
7811  }
7812
7813  function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {
7814    if (controller._controlledReadableStream._state === 'readable') {
7815      ReadableStreamDefaultControllerError(controller, e);
7816    }
7817  }
7818
7819  function ReadableStreamDefaultControllerGetDesiredSize(controller) {
7820    var stream = controller._controlledReadableStream;
7821    var state = stream._state;
7822
7823    if (state === 'errored') {
7824      return null;
7825    }
7826
7827    if (state === 'closed') {
7828      return 0;
7829    }
7830
7831    return controller._strategyHWM - controller._queueTotalSize;
7832  }
7833
7834  var ReadableStreamBYOBRequest = function () {
7835    function ReadableStreamBYOBRequest(controller, view) {
7836      _classCallCheck(this, ReadableStreamBYOBRequest);
7837
7838      this._associatedReadableByteStreamController = controller;
7839      this._view = view;
7840    }
7841
7842    _createClass(ReadableStreamBYOBRequest, [{
7843      key: 'respond',
7844      value: function respond(bytesWritten) {
7845        if (IsReadableStreamBYOBRequest(this) === false) {
7846          throw byobRequestBrandCheckException('respond');
7847        }
7848
7849        if (this._associatedReadableByteStreamController === undefined) {
7850          throw new TypeError('This BYOB request has been invalidated');
7851        }
7852
7853        ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);
7854      }
7855    }, {
7856      key: 'respondWithNewView',
7857      value: function respondWithNewView(view) {
7858        if (IsReadableStreamBYOBRequest(this) === false) {
7859          throw byobRequestBrandCheckException('respond');
7860        }
7861
7862        if (this._associatedReadableByteStreamController === undefined) {
7863          throw new TypeError('This BYOB request has been invalidated');
7864        }
7865
7866        if (!ArrayBuffer.isView(view)) {
7867          throw new TypeError('You can only respond with array buffer views');
7868        }
7869
7870        ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);
7871      }
7872    }, {
7873      key: 'view',
7874      get: function get() {
7875        return this._view;
7876      }
7877    }]);
7878
7879    return ReadableStreamBYOBRequest;
7880  }();
7881
7882  var ReadableByteStreamController = function () {
7883    function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {
7884      _classCallCheck(this, ReadableByteStreamController);
7885
7886      if (IsReadableStream(stream) === false) {
7887        throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');
7888      }
7889
7890      if (stream._readableStreamController !== undefined) {
7891        throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');
7892      }
7893
7894      this._controlledReadableStream = stream;
7895      this._underlyingByteSource = underlyingByteSource;
7896      this._pullAgain = false;
7897      this._pulling = false;
7898      ReadableByteStreamControllerClearPendingPullIntos(this);
7899      this._queue = this._queueTotalSize = undefined;
7900      ResetQueue(this);
7901      this._closeRequested = false;
7902      this._started = false;
7903      this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);
7904      var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;
7905
7906      if (autoAllocateChunkSize !== undefined) {
7907        if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {
7908          throw new RangeError('autoAllocateChunkSize must be a positive integer');
7909        }
7910      }
7911
7912      this._autoAllocateChunkSize = autoAllocateChunkSize;
7913      this._pendingPullIntos = [];
7914      var controller = this;
7915      var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);
7916      Promise.resolve(startResult).then(function () {
7917        controller._started = true;
7918        assert(controller._pulling === false);
7919        assert(controller._pullAgain === false);
7920        ReadableByteStreamControllerCallPullIfNeeded(controller);
7921      }, function (r) {
7922        if (stream._state === 'readable') {
7923          ReadableByteStreamControllerError(controller, r);
7924        }
7925      })["catch"](rethrowAssertionErrorRejection);
7926    }
7927
7928    _createClass(ReadableByteStreamController, [{
7929      key: 'close',
7930      value: function close() {
7931        if (IsReadableByteStreamController(this) === false) {
7932          throw byteStreamControllerBrandCheckException('close');
7933        }
7934
7935        if (this._closeRequested === true) {
7936          throw new TypeError('The stream has already been closed; do not close it again!');
7937        }
7938
7939        var state = this._controlledReadableStream._state;
7940
7941        if (state !== 'readable') {
7942          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
7943        }
7944
7945        ReadableByteStreamControllerClose(this);
7946      }
7947    }, {
7948      key: 'enqueue',
7949      value: function enqueue(chunk) {
7950        if (IsReadableByteStreamController(this) === false) {
7951          throw byteStreamControllerBrandCheckException('enqueue');
7952        }
7953
7954        if (this._closeRequested === true) {
7955          throw new TypeError('stream is closed or draining');
7956        }
7957
7958        var state = this._controlledReadableStream._state;
7959
7960        if (state !== 'readable') {
7961          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
7962        }
7963
7964        if (!ArrayBuffer.isView(chunk)) {
7965          throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');
7966        }
7967
7968        ReadableByteStreamControllerEnqueue(this, chunk);
7969      }
7970    }, {
7971      key: 'error',
7972      value: function error(e) {
7973        if (IsReadableByteStreamController(this) === false) {
7974          throw byteStreamControllerBrandCheckException('error');
7975        }
7976
7977        var stream = this._controlledReadableStream;
7978
7979        if (stream._state !== 'readable') {
7980          throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
7981        }
7982
7983        ReadableByteStreamControllerError(this, e);
7984      }
7985    }, {
7986      key: '__cancelSteps',
7987      value: function __cancelSteps(reason) {
7988        if (this._pendingPullIntos.length > 0) {
7989          var firstDescriptor = this._pendingPullIntos[0];
7990          firstDescriptor.bytesFilled = 0;
7991        }
7992
7993        ResetQueue(this);
7994        return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);
7995      }
7996    }, {
7997      key: '__pullSteps',
7998      value: function __pullSteps() {
7999        var stream = this._controlledReadableStream;
8000        assert(ReadableStreamHasDefaultReader(stream) === true);
8001
8002        if (this._queueTotalSize > 0) {
8003          assert(ReadableStreamGetNumReadRequests(stream) === 0);
8004
8005          var entry = this._queue.shift();
8006
8007          this._queueTotalSize -= entry.byteLength;
8008          ReadableByteStreamControllerHandleQueueDrain(this);
8009          var view = void 0;
8010
8011          try {
8012            view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);
8013          } catch (viewE) {
8014            return Promise.reject(viewE);
8015          }
8016
8017          return Promise.resolve(CreateIterResultObject(view, false));
8018        }
8019
8020        var autoAllocateChunkSize = this._autoAllocateChunkSize;
8021
8022        if (autoAllocateChunkSize !== undefined) {
8023          var buffer = void 0;
8024
8025          try {
8026            buffer = new ArrayBuffer(autoAllocateChunkSize);
8027          } catch (bufferE) {
8028            return Promise.reject(bufferE);
8029          }
8030
8031          var pullIntoDescriptor = {
8032            buffer: buffer,
8033            byteOffset: 0,
8034            byteLength: autoAllocateChunkSize,
8035            bytesFilled: 0,
8036            elementSize: 1,
8037            ctor: Uint8Array,
8038            readerType: 'default'
8039          };
8040
8041          this._pendingPullIntos.push(pullIntoDescriptor);
8042        }
8043
8044        var promise = ReadableStreamAddReadRequest(stream);
8045        ReadableByteStreamControllerCallPullIfNeeded(this);
8046        return promise;
8047      }
8048    }, {
8049      key: 'byobRequest',
8050      get: function get() {
8051        if (IsReadableByteStreamController(this) === false) {
8052          throw byteStreamControllerBrandCheckException('byobRequest');
8053        }
8054
8055        if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {
8056          var firstDescriptor = this._pendingPullIntos[0];
8057          var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);
8058          this._byobRequest = new ReadableStreamBYOBRequest(this, view);
8059        }
8060
8061        return this._byobRequest;
8062      }
8063    }, {
8064      key: 'desiredSize',
8065      get: function get() {
8066        if (IsReadableByteStreamController(this) === false) {
8067          throw byteStreamControllerBrandCheckException('desiredSize');
8068        }
8069
8070        return ReadableByteStreamControllerGetDesiredSize(this);
8071      }
8072    }]);
8073
8074    return ReadableByteStreamController;
8075  }();
8076
8077  function IsReadableByteStreamController(x) {
8078    if (!typeIsObject(x)) {
8079      return false;
8080    }
8081
8082    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {
8083      return false;
8084    }
8085
8086    return true;
8087  }
8088
8089  function IsReadableStreamBYOBRequest(x) {
8090    if (!typeIsObject(x)) {
8091      return false;
8092    }
8093
8094    if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {
8095      return false;
8096    }
8097
8098    return true;
8099  }
8100
8101  function ReadableByteStreamControllerCallPullIfNeeded(controller) {
8102    var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);
8103
8104    if (shouldPull === false) {
8105      return undefined;
8106    }
8107
8108    if (controller._pulling === true) {
8109      controller._pullAgain = true;
8110      return undefined;
8111    }
8112
8113    assert(controller._pullAgain === false);
8114    controller._pulling = true;
8115    var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);
8116    pullPromise.then(function () {
8117      controller._pulling = false;
8118
8119      if (controller._pullAgain === true) {
8120        controller._pullAgain = false;
8121        ReadableByteStreamControllerCallPullIfNeeded(controller);
8122      }
8123    }, function (e) {
8124      if (controller._controlledReadableStream._state === 'readable') {
8125        ReadableByteStreamControllerError(controller, e);
8126      }
8127    })["catch"](rethrowAssertionErrorRejection);
8128    return undefined;
8129  }
8130
8131  function ReadableByteStreamControllerClearPendingPullIntos(controller) {
8132    ReadableByteStreamControllerInvalidateBYOBRequest(controller);
8133    controller._pendingPullIntos = [];
8134  }
8135
8136  function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {
8137    assert(stream._state !== 'errored', 'state must not be errored');
8138    var done = false;
8139
8140    if (stream._state === 'closed') {
8141      assert(pullIntoDescriptor.bytesFilled === 0);
8142      done = true;
8143    }
8144
8145    var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
8146
8147    if (pullIntoDescriptor.readerType === 'default') {
8148      ReadableStreamFulfillReadRequest(stream, filledView, done);
8149    } else {
8150      assert(pullIntoDescriptor.readerType === 'byob');
8151      ReadableStreamFulfillReadIntoRequest(stream, filledView, done);
8152    }
8153  }
8154
8155  function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {
8156    var bytesFilled = pullIntoDescriptor.bytesFilled;
8157    var elementSize = pullIntoDescriptor.elementSize;
8158    assert(bytesFilled <= pullIntoDescriptor.byteLength);
8159    assert(bytesFilled % elementSize === 0);
8160    return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);
8161  }
8162
8163  function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {
8164    controller._queue.push({
8165      buffer: buffer,
8166      byteOffset: byteOffset,
8167      byteLength: byteLength
8168    });
8169
8170    controller._queueTotalSize += byteLength;
8171  }
8172
8173  function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {
8174    var elementSize = pullIntoDescriptor.elementSize;
8175    var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;
8176    var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);
8177    var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;
8178    var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;
8179    var totalBytesToCopyRemaining = maxBytesToCopy;
8180    var ready = false;
8181
8182    if (maxAlignedBytes > currentAlignedBytes) {
8183      totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;
8184      ready = true;
8185    }
8186
8187    var queue = controller._queue;
8188
8189    while (totalBytesToCopyRemaining > 0) {
8190      var headOfQueue = queue[0];
8191      var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);
8192      var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
8193      ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);
8194
8195      if (headOfQueue.byteLength === bytesToCopy) {
8196        queue.shift();
8197      } else {
8198        headOfQueue.byteOffset += bytesToCopy;
8199        headOfQueue.byteLength -= bytesToCopy;
8200      }
8201
8202      controller._queueTotalSize -= bytesToCopy;
8203      ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);
8204      totalBytesToCopyRemaining -= bytesToCopy;
8205    }
8206
8207    if (ready === false) {
8208      assert(controller._queueTotalSize === 0, 'queue must be empty');
8209      assert(pullIntoDescriptor.bytesFilled > 0);
8210      assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);
8211    }
8212
8213    return ready;
8214  }
8215
8216  function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {
8217    assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);
8218    ReadableByteStreamControllerInvalidateBYOBRequest(controller);
8219    pullIntoDescriptor.bytesFilled += size;
8220  }
8221
8222  function ReadableByteStreamControllerHandleQueueDrain(controller) {
8223    assert(controller._controlledReadableStream._state === 'readable');
8224
8225    if (controller._queueTotalSize === 0 && controller._closeRequested === true) {
8226      ReadableStreamClose(controller._controlledReadableStream);
8227    } else {
8228      ReadableByteStreamControllerCallPullIfNeeded(controller);
8229    }
8230  }
8231
8232  function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {
8233    if (controller._byobRequest === undefined) {
8234      return;
8235    }
8236
8237    controller._byobRequest._associatedReadableByteStreamController = undefined;
8238    controller._byobRequest._view = undefined;
8239    controller._byobRequest = undefined;
8240  }
8241
8242  function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {
8243    assert(controller._closeRequested === false);
8244
8245    while (controller._pendingPullIntos.length > 0) {
8246      if (controller._queueTotalSize === 0) {
8247        return;
8248      }
8249
8250      var pullIntoDescriptor = controller._pendingPullIntos[0];
8251
8252      if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
8253        ReadableByteStreamControllerShiftPendingPullInto(controller);
8254        ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
8255      }
8256    }
8257  }
8258
8259  function ReadableByteStreamControllerPullInto(controller, view) {
8260    var stream = controller._controlledReadableStream;
8261    var elementSize = 1;
8262
8263    if (view.constructor !== DataView) {
8264      elementSize = view.constructor.BYTES_PER_ELEMENT;
8265    }
8266
8267    var ctor = view.constructor;
8268    var pullIntoDescriptor = {
8269      buffer: view.buffer,
8270      byteOffset: view.byteOffset,
8271      byteLength: view.byteLength,
8272      bytesFilled: 0,
8273      elementSize: elementSize,
8274      ctor: ctor,
8275      readerType: 'byob'
8276    };
8277
8278    if (controller._pendingPullIntos.length > 0) {
8279      pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
8280
8281      controller._pendingPullIntos.push(pullIntoDescriptor);
8282
8283      return ReadableStreamAddReadIntoRequest(stream);
8284    }
8285
8286    if (stream._state === 'closed') {
8287      var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);
8288      return Promise.resolve(CreateIterResultObject(emptyView, true));
8289    }
8290
8291    if (controller._queueTotalSize > 0) {
8292      if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
8293        var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
8294        ReadableByteStreamControllerHandleQueueDrain(controller);
8295        return Promise.resolve(CreateIterResultObject(filledView, false));
8296      }
8297
8298      if (controller._closeRequested === true) {
8299        var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
8300        ReadableByteStreamControllerError(controller, e);
8301        return Promise.reject(e);
8302      }
8303    }
8304
8305    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
8306
8307    controller._pendingPullIntos.push(pullIntoDescriptor);
8308
8309    var promise = ReadableStreamAddReadIntoRequest(stream);
8310    ReadableByteStreamControllerCallPullIfNeeded(controller);
8311    return promise;
8312  }
8313
8314  function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {
8315    firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);
8316    assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');
8317    var stream = controller._controlledReadableStream;
8318
8319    if (ReadableStreamHasBYOBReader(stream) === true) {
8320      while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {
8321        var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);
8322        ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);
8323      }
8324    }
8325  }
8326
8327  function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {
8328    if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {
8329      throw new RangeError('bytesWritten out of range');
8330    }
8331
8332    ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);
8333
8334    if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {
8335      return;
8336    }
8337
8338    ReadableByteStreamControllerShiftPendingPullInto(controller);
8339    var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;
8340
8341    if (remainderSize > 0) {
8342      var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
8343      var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);
8344      ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);
8345    }
8346
8347    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
8348    pullIntoDescriptor.bytesFilled -= remainderSize;
8349    ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
8350    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
8351  }
8352
8353  function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {
8354    var firstDescriptor = controller._pendingPullIntos[0];
8355    var stream = controller._controlledReadableStream;
8356
8357    if (stream._state === 'closed') {
8358      if (bytesWritten !== 0) {
8359        throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');
8360      }
8361
8362      ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);
8363    } else {
8364      assert(stream._state === 'readable');
8365      ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);
8366    }
8367  }
8368
8369  function ReadableByteStreamControllerShiftPendingPullInto(controller) {
8370    var descriptor = controller._pendingPullIntos.shift();
8371
8372    ReadableByteStreamControllerInvalidateBYOBRequest(controller);
8373    return descriptor;
8374  }
8375
8376  function ReadableByteStreamControllerShouldCallPull(controller) {
8377    var stream = controller._controlledReadableStream;
8378
8379    if (stream._state !== 'readable') {
8380      return false;
8381    }
8382
8383    if (controller._closeRequested === true) {
8384      return false;
8385    }
8386
8387    if (controller._started === false) {
8388      return false;
8389    }
8390
8391    if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
8392      return true;
8393    }
8394
8395    if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {
8396      return true;
8397    }
8398
8399    if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {
8400      return true;
8401    }
8402
8403    return false;
8404  }
8405
8406  function ReadableByteStreamControllerClose(controller) {
8407    var stream = controller._controlledReadableStream;
8408    assert(controller._closeRequested === false);
8409    assert(stream._state === 'readable');
8410
8411    if (controller._queueTotalSize > 0) {
8412      controller._closeRequested = true;
8413      return;
8414    }
8415
8416    if (controller._pendingPullIntos.length > 0) {
8417      var firstPendingPullInto = controller._pendingPullIntos[0];
8418
8419      if (firstPendingPullInto.bytesFilled > 0) {
8420        var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
8421        ReadableByteStreamControllerError(controller, e);
8422        throw e;
8423      }
8424    }
8425
8426    ReadableStreamClose(stream);
8427  }
8428
8429  function ReadableByteStreamControllerEnqueue(controller, chunk) {
8430    var stream = controller._controlledReadableStream;
8431    assert(controller._closeRequested === false);
8432    assert(stream._state === 'readable');
8433    var buffer = chunk.buffer;
8434    var byteOffset = chunk.byteOffset;
8435    var byteLength = chunk.byteLength;
8436    var transferredBuffer = TransferArrayBuffer(buffer);
8437
8438    if (ReadableStreamHasDefaultReader(stream) === true) {
8439      if (ReadableStreamGetNumReadRequests(stream) === 0) {
8440        ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
8441      } else {
8442        assert(controller._queue.length === 0);
8443        var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);
8444        ReadableStreamFulfillReadRequest(stream, transferredView, false);
8445      }
8446    } else if (ReadableStreamHasBYOBReader(stream) === true) {
8447      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
8448      ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
8449    } else {
8450      assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');
8451      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
8452    }
8453  }
8454
8455  function ReadableByteStreamControllerError(controller, e) {
8456    var stream = controller._controlledReadableStream;
8457    assert(stream._state === 'readable');
8458    ReadableByteStreamControllerClearPendingPullIntos(controller);
8459    ResetQueue(controller);
8460    ReadableStreamError(stream, e);
8461  }
8462
8463  function ReadableByteStreamControllerGetDesiredSize(controller) {
8464    var stream = controller._controlledReadableStream;
8465    var state = stream._state;
8466
8467    if (state === 'errored') {
8468      return null;
8469    }
8470
8471    if (state === 'closed') {
8472      return 0;
8473    }
8474
8475    return controller._strategyHWM - controller._queueTotalSize;
8476  }
8477
8478  function ReadableByteStreamControllerRespond(controller, bytesWritten) {
8479    bytesWritten = Number(bytesWritten);
8480
8481    if (IsFiniteNonNegativeNumber(bytesWritten) === false) {
8482      throw new RangeError('bytesWritten must be a finite');
8483    }
8484
8485    assert(controller._pendingPullIntos.length > 0);
8486    ReadableByteStreamControllerRespondInternal(controller, bytesWritten);
8487  }
8488
8489  function ReadableByteStreamControllerRespondWithNewView(controller, view) {
8490    assert(controller._pendingPullIntos.length > 0);
8491    var firstDescriptor = controller._pendingPullIntos[0];
8492
8493    if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {
8494      throw new RangeError('The region specified by view does not match byobRequest');
8495    }
8496
8497    if (firstDescriptor.byteLength !== view.byteLength) {
8498      throw new RangeError('The buffer of view has different capacity than byobRequest');
8499    }
8500
8501    firstDescriptor.buffer = view.buffer;
8502    ReadableByteStreamControllerRespondInternal(controller, view.byteLength);
8503  }
8504
8505  function streamBrandCheckException(name) {
8506    return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');
8507  }
8508
8509  function readerLockException(name) {
8510    return new TypeError('Cannot ' + name + ' a stream using a released reader');
8511  }
8512
8513  function defaultReaderBrandCheckException(name) {
8514    return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');
8515  }
8516
8517  function defaultReaderClosedPromiseInitialize(reader) {
8518    reader._closedPromise = new Promise(function (resolve, reject) {
8519      reader._closedPromise_resolve = resolve;
8520      reader._closedPromise_reject = reject;
8521    });
8522  }
8523
8524  function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {
8525    reader._closedPromise = Promise.reject(reason);
8526    reader._closedPromise_resolve = undefined;
8527    reader._closedPromise_reject = undefined;
8528  }
8529
8530  function defaultReaderClosedPromiseInitializeAsResolved(reader) {
8531    reader._closedPromise = Promise.resolve(undefined);
8532    reader._closedPromise_resolve = undefined;
8533    reader._closedPromise_reject = undefined;
8534  }
8535
8536  function defaultReaderClosedPromiseReject(reader, reason) {
8537    assert(reader._closedPromise_resolve !== undefined);
8538    assert(reader._closedPromise_reject !== undefined);
8539
8540    reader._closedPromise_reject(reason);
8541
8542    reader._closedPromise_resolve = undefined;
8543    reader._closedPromise_reject = undefined;
8544  }
8545
8546  function defaultReaderClosedPromiseResetToRejected(reader, reason) {
8547    assert(reader._closedPromise_resolve === undefined);
8548    assert(reader._closedPromise_reject === undefined);
8549    reader._closedPromise = Promise.reject(reason);
8550  }
8551
8552  function defaultReaderClosedPromiseResolve(reader) {
8553    assert(reader._closedPromise_resolve !== undefined);
8554    assert(reader._closedPromise_reject !== undefined);
8555
8556    reader._closedPromise_resolve(undefined);
8557
8558    reader._closedPromise_resolve = undefined;
8559    reader._closedPromise_reject = undefined;
8560  }
8561
8562  function byobReaderBrandCheckException(name) {
8563    return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');
8564  }
8565
8566  function defaultControllerBrandCheckException(name) {
8567    return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');
8568  }
8569
8570  function byobRequestBrandCheckException(name) {
8571    return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');
8572  }
8573
8574  function byteStreamControllerBrandCheckException(name) {
8575    return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');
8576  }
8577
8578  function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {
8579    try {
8580      Promise.prototype.then.call(promise, undefined, function () {});
8581    } catch (e) {}
8582  }
8583}, function (module, exports, __w_pdfjs_require__) {
8584  "use strict";
8585
8586  var transformStream = __w_pdfjs_require__(6);
8587
8588  var readableStream = __w_pdfjs_require__(4);
8589
8590  var writableStream = __w_pdfjs_require__(2);
8591
8592  exports.TransformStream = transformStream.TransformStream;
8593  exports.ReadableStream = readableStream.ReadableStream;
8594  exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;
8595  exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;
8596  exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;
8597  exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;
8598  exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;
8599  exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;
8600  exports.IsWritableStream = writableStream.IsWritableStream;
8601  exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;
8602  exports.WritableStream = writableStream.WritableStream;
8603  exports.WritableStreamAbort = writableStream.WritableStreamAbort;
8604  exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;
8605  exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;
8606  exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;
8607  exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;
8608}, function (module, exports, __w_pdfjs_require__) {
8609  "use strict";
8610
8611  var _createClass = function () {
8612    function defineProperties(target, props) {
8613      for (var i = 0; i < props.length; i++) {
8614        var descriptor = props[i];
8615        descriptor.enumerable = descriptor.enumerable || false;
8616        descriptor.configurable = true;
8617        if ("value" in descriptor) descriptor.writable = true;
8618        Object.defineProperty(target, descriptor.key, descriptor);
8619      }
8620    }
8621
8622    return function (Constructor, protoProps, staticProps) {
8623      if (protoProps) defineProperties(Constructor.prototype, protoProps);
8624      if (staticProps) defineProperties(Constructor, staticProps);
8625      return Constructor;
8626    };
8627  }();
8628
8629  function _classCallCheck(instance, Constructor) {
8630    if (!(instance instanceof Constructor)) {
8631      throw new TypeError("Cannot call a class as a function");
8632    }
8633  }
8634
8635  var _require = __w_pdfjs_require__(1),
8636      assert = _require.assert;
8637
8638  var _require2 = __w_pdfjs_require__(0),
8639      InvokeOrNoop = _require2.InvokeOrNoop,
8640      PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,
8641      PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,
8642      typeIsObject = _require2.typeIsObject;
8643
8644  var _require3 = __w_pdfjs_require__(4),
8645      ReadableStream = _require3.ReadableStream,
8646      ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,
8647      ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,
8648      ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,
8649      ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;
8650
8651  var _require4 = __w_pdfjs_require__(2),
8652      WritableStream = _require4.WritableStream,
8653      WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;
8654
8655  function TransformStreamCloseReadable(transformStream) {
8656    if (transformStream._errored === true) {
8657      throw new TypeError('TransformStream is already errored');
8658    }
8659
8660    if (transformStream._readableClosed === true) {
8661      throw new TypeError('Readable side is already closed');
8662    }
8663
8664    TransformStreamCloseReadableInternal(transformStream);
8665  }
8666
8667  function TransformStreamEnqueueToReadable(transformStream, chunk) {
8668    if (transformStream._errored === true) {
8669      throw new TypeError('TransformStream is already errored');
8670    }
8671
8672    if (transformStream._readableClosed === true) {
8673      throw new TypeError('Readable side is already closed');
8674    }
8675
8676    var controller = transformStream._readableController;
8677
8678    try {
8679      ReadableStreamDefaultControllerEnqueue(controller, chunk);
8680    } catch (e) {
8681      transformStream._readableClosed = true;
8682      TransformStreamErrorIfNeeded(transformStream, e);
8683      throw transformStream._storedError;
8684    }
8685
8686    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
8687    var maybeBackpressure = desiredSize <= 0;
8688
8689    if (maybeBackpressure === true && transformStream._backpressure === false) {
8690      TransformStreamSetBackpressure(transformStream, true);
8691    }
8692  }
8693
8694  function TransformStreamError(transformStream, e) {
8695    if (transformStream._errored === true) {
8696      throw new TypeError('TransformStream is already errored');
8697    }
8698
8699    TransformStreamErrorInternal(transformStream, e);
8700  }
8701
8702  function TransformStreamCloseReadableInternal(transformStream) {
8703    assert(transformStream._errored === false);
8704    assert(transformStream._readableClosed === false);
8705
8706    try {
8707      ReadableStreamDefaultControllerClose(transformStream._readableController);
8708    } catch (e) {
8709      assert(false);
8710    }
8711
8712    transformStream._readableClosed = true;
8713  }
8714
8715  function TransformStreamErrorIfNeeded(transformStream, e) {
8716    if (transformStream._errored === false) {
8717      TransformStreamErrorInternal(transformStream, e);
8718    }
8719  }
8720
8721  function TransformStreamErrorInternal(transformStream, e) {
8722    assert(transformStream._errored === false);
8723    transformStream._errored = true;
8724    transformStream._storedError = e;
8725
8726    if (transformStream._writableDone === false) {
8727      WritableStreamDefaultControllerError(transformStream._writableController, e);
8728    }
8729
8730    if (transformStream._readableClosed === false) {
8731      ReadableStreamDefaultControllerError(transformStream._readableController, e);
8732    }
8733  }
8734
8735  function TransformStreamReadableReadyPromise(transformStream) {
8736    assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
8737
8738    if (transformStream._backpressure === false) {
8739      return Promise.resolve();
8740    }
8741
8742    assert(transformStream._backpressure === true, '_backpressure should have been initialized');
8743    return transformStream._backpressureChangePromise;
8744  }
8745
8746  function TransformStreamSetBackpressure(transformStream, backpressure) {
8747    assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');
8748
8749    if (transformStream._backpressureChangePromise !== undefined) {
8750      transformStream._backpressureChangePromise_resolve(backpressure);
8751    }
8752
8753    transformStream._backpressureChangePromise = new Promise(function (resolve) {
8754      transformStream._backpressureChangePromise_resolve = resolve;
8755    });
8756
8757    transformStream._backpressureChangePromise.then(function (resolution) {
8758      assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');
8759    });
8760
8761    transformStream._backpressure = backpressure;
8762  }
8763
8764  function TransformStreamDefaultTransform(chunk, transformStreamController) {
8765    var transformStream = transformStreamController._controlledTransformStream;
8766    TransformStreamEnqueueToReadable(transformStream, chunk);
8767    return Promise.resolve();
8768  }
8769
8770  function TransformStreamTransform(transformStream, chunk) {
8771    assert(transformStream._errored === false);
8772    assert(transformStream._transforming === false);
8773    assert(transformStream._backpressure === false);
8774    transformStream._transforming = true;
8775    var transformer = transformStream._transformer;
8776    var controller = transformStream._transformStreamController;
8777    var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);
8778    return transformPromise.then(function () {
8779      transformStream._transforming = false;
8780      return TransformStreamReadableReadyPromise(transformStream);
8781    }, function (e) {
8782      TransformStreamErrorIfNeeded(transformStream, e);
8783      return Promise.reject(e);
8784    });
8785  }
8786
8787  function IsTransformStreamDefaultController(x) {
8788    if (!typeIsObject(x)) {
8789      return false;
8790    }
8791
8792    if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {
8793      return false;
8794    }
8795
8796    return true;
8797  }
8798
8799  function IsTransformStream(x) {
8800    if (!typeIsObject(x)) {
8801      return false;
8802    }
8803
8804    if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {
8805      return false;
8806    }
8807
8808    return true;
8809  }
8810
8811  var TransformStreamSink = function () {
8812    function TransformStreamSink(transformStream, startPromise) {
8813      _classCallCheck(this, TransformStreamSink);
8814
8815      this._transformStream = transformStream;
8816      this._startPromise = startPromise;
8817    }
8818
8819    _createClass(TransformStreamSink, [{
8820      key: 'start',
8821      value: function start(c) {
8822        var transformStream = this._transformStream;
8823        transformStream._writableController = c;
8824        return this._startPromise.then(function () {
8825          return TransformStreamReadableReadyPromise(transformStream);
8826        });
8827      }
8828    }, {
8829      key: 'write',
8830      value: function write(chunk) {
8831        var transformStream = this._transformStream;
8832        return TransformStreamTransform(transformStream, chunk);
8833      }
8834    }, {
8835      key: 'abort',
8836      value: function abort() {
8837        var transformStream = this._transformStream;
8838        transformStream._writableDone = true;
8839        TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));
8840      }
8841    }, {
8842      key: 'close',
8843      value: function close() {
8844        var transformStream = this._transformStream;
8845        assert(transformStream._transforming === false);
8846        transformStream._writableDone = true;
8847        var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);
8848        return flushPromise.then(function () {
8849          if (transformStream._errored === true) {
8850            return Promise.reject(transformStream._storedError);
8851          }
8852
8853          if (transformStream._readableClosed === false) {
8854            TransformStreamCloseReadableInternal(transformStream);
8855          }
8856
8857          return Promise.resolve();
8858        })["catch"](function (r) {
8859          TransformStreamErrorIfNeeded(transformStream, r);
8860          return Promise.reject(transformStream._storedError);
8861        });
8862      }
8863    }]);
8864
8865    return TransformStreamSink;
8866  }();
8867
8868  var TransformStreamSource = function () {
8869    function TransformStreamSource(transformStream, startPromise) {
8870      _classCallCheck(this, TransformStreamSource);
8871
8872      this._transformStream = transformStream;
8873      this._startPromise = startPromise;
8874    }
8875
8876    _createClass(TransformStreamSource, [{
8877      key: 'start',
8878      value: function start(c) {
8879        var transformStream = this._transformStream;
8880        transformStream._readableController = c;
8881        return this._startPromise.then(function () {
8882          assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
8883
8884          if (transformStream._backpressure === true) {
8885            return Promise.resolve();
8886          }
8887
8888          assert(transformStream._backpressure === false, '_backpressure should have been initialized');
8889          return transformStream._backpressureChangePromise;
8890        });
8891      }
8892    }, {
8893      key: 'pull',
8894      value: function pull() {
8895        var transformStream = this._transformStream;
8896        assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');
8897        assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
8898        TransformStreamSetBackpressure(transformStream, false);
8899        return transformStream._backpressureChangePromise;
8900      }
8901    }, {
8902      key: 'cancel',
8903      value: function cancel() {
8904        var transformStream = this._transformStream;
8905        transformStream._readableClosed = true;
8906        TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));
8907      }
8908    }]);
8909
8910    return TransformStreamSource;
8911  }();
8912
8913  var TransformStreamDefaultController = function () {
8914    function TransformStreamDefaultController(transformStream) {
8915      _classCallCheck(this, TransformStreamDefaultController);
8916
8917      if (IsTransformStream(transformStream) === false) {
8918        throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');
8919      }
8920
8921      if (transformStream._transformStreamController !== undefined) {
8922        throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');
8923      }
8924
8925      this._controlledTransformStream = transformStream;
8926    }
8927
8928    _createClass(TransformStreamDefaultController, [{
8929      key: 'enqueue',
8930      value: function enqueue(chunk) {
8931        if (IsTransformStreamDefaultController(this) === false) {
8932          throw defaultControllerBrandCheckException('enqueue');
8933        }
8934
8935        TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);
8936      }
8937    }, {
8938      key: 'close',
8939      value: function close() {
8940        if (IsTransformStreamDefaultController(this) === false) {
8941          throw defaultControllerBrandCheckException('close');
8942        }
8943
8944        TransformStreamCloseReadable(this._controlledTransformStream);
8945      }
8946    }, {
8947      key: 'error',
8948      value: function error(reason) {
8949        if (IsTransformStreamDefaultController(this) === false) {
8950          throw defaultControllerBrandCheckException('error');
8951        }
8952
8953        TransformStreamError(this._controlledTransformStream, reason);
8954      }
8955    }, {
8956      key: 'desiredSize',
8957      get: function get() {
8958        if (IsTransformStreamDefaultController(this) === false) {
8959          throw defaultControllerBrandCheckException('desiredSize');
8960        }
8961
8962        var transformStream = this._controlledTransformStream;
8963        var readableController = transformStream._readableController;
8964        return ReadableStreamDefaultControllerGetDesiredSize(readableController);
8965      }
8966    }]);
8967
8968    return TransformStreamDefaultController;
8969  }();
8970
8971  var TransformStream = function () {
8972    function TransformStream() {
8973      var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8974
8975      _classCallCheck(this, TransformStream);
8976
8977      this._transformer = transformer;
8978      var readableStrategy = transformer.readableStrategy,
8979          writableStrategy = transformer.writableStrategy;
8980      this._transforming = false;
8981      this._errored = false;
8982      this._storedError = undefined;
8983      this._writableController = undefined;
8984      this._readableController = undefined;
8985      this._transformStreamController = undefined;
8986      this._writableDone = false;
8987      this._readableClosed = false;
8988      this._backpressure = undefined;
8989      this._backpressureChangePromise = undefined;
8990      this._backpressureChangePromise_resolve = undefined;
8991      this._transformStreamController = new TransformStreamDefaultController(this);
8992      var startPromise_resolve = void 0;
8993      var startPromise = new Promise(function (resolve) {
8994        startPromise_resolve = resolve;
8995      });
8996      var source = new TransformStreamSource(this, startPromise);
8997      this._readable = new ReadableStream(source, readableStrategy);
8998      var sink = new TransformStreamSink(this, startPromise);
8999      this._writable = new WritableStream(sink, writableStrategy);
9000      assert(this._writableController !== undefined);
9001      assert(this._readableController !== undefined);
9002      var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);
9003      TransformStreamSetBackpressure(this, desiredSize <= 0);
9004      var transformStream = this;
9005      var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);
9006      startPromise_resolve(startResult);
9007      startPromise["catch"](function (e) {
9008        if (transformStream._errored === false) {
9009          transformStream._errored = true;
9010          transformStream._storedError = e;
9011        }
9012      });
9013    }
9014
9015    _createClass(TransformStream, [{
9016      key: 'readable',
9017      get: function get() {
9018        if (IsTransformStream(this) === false) {
9019          throw streamBrandCheckException('readable');
9020        }
9021
9022        return this._readable;
9023      }
9024    }, {
9025      key: 'writable',
9026      get: function get() {
9027        if (IsTransformStream(this) === false) {
9028          throw streamBrandCheckException('writable');
9029        }
9030
9031        return this._writable;
9032      }
9033    }]);
9034
9035    return TransformStream;
9036  }();
9037
9038  module.exports = {
9039    TransformStream: TransformStream
9040  };
9041
9042  function defaultControllerBrandCheckException(name) {
9043    return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');
9044  }
9045
9046  function streamBrandCheckException(name) {
9047    return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');
9048  }
9049}, function (module, exports, __w_pdfjs_require__) {
9050  module.exports = __w_pdfjs_require__(5);
9051}]));
9052
9053/***/ }),
9054/* 145 */
9055/***/ (function(module, exports, __w_pdfjs_require__) {
9056
9057"use strict";
9058
9059
9060function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9061
9062{
9063  var isURLSupported = false;
9064
9065  try {
9066    if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) {
9067      var u = new URL('b', 'http://a');
9068      u.pathname = 'c%20d';
9069      isURLSupported = u.href === 'http://a/c%20d';
9070    }
9071  } catch (ex) {}
9072
9073  if (isURLSupported) {
9074    exports.URL = URL;
9075  } else {
9076    var PolyfillURL = __w_pdfjs_require__(146).URL;
9077
9078    var OriginalURL = __w_pdfjs_require__(3).URL;
9079
9080    if (OriginalURL) {
9081      PolyfillURL.createObjectURL = function (blob) {
9082        return OriginalURL.createObjectURL.apply(OriginalURL, arguments);
9083      };
9084
9085      PolyfillURL.revokeObjectURL = function (url) {
9086        OriginalURL.revokeObjectURL(url);
9087      };
9088    }
9089
9090    exports.URL = PolyfillURL;
9091  }
9092}
9093
9094/***/ }),
9095/* 146 */
9096/***/ (function(module, exports, __w_pdfjs_require__) {
9097
9098"use strict";
9099
9100
9101(function URLConstructorClosure() {
9102  'use strict';
9103
9104  var relative = Object.create(null);
9105  relative['ftp'] = 21;
9106  relative['file'] = 0;
9107  relative['gopher'] = 70;
9108  relative['http'] = 80;
9109  relative['https'] = 443;
9110  relative['ws'] = 80;
9111  relative['wss'] = 443;
9112  var relativePathDotMapping = Object.create(null);
9113  relativePathDotMapping['%2e'] = '.';
9114  relativePathDotMapping['.%2e'] = '..';
9115  relativePathDotMapping['%2e.'] = '..';
9116  relativePathDotMapping['%2e%2e'] = '..';
9117
9118  function isRelativeScheme(scheme) {
9119    return relative[scheme] !== undefined;
9120  }
9121
9122  function invalid() {
9123    clear.call(this);
9124    this._isInvalid = true;
9125  }
9126
9127  function IDNAToASCII(h) {
9128    if (h === '') {
9129      invalid.call(this);
9130    }
9131
9132    return h.toLowerCase();
9133  }
9134
9135  function percentEscape(c) {
9136    var unicode = c.charCodeAt(0);
9137
9138    if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) {
9139      return c;
9140    }
9141
9142    return encodeURIComponent(c);
9143  }
9144
9145  function percentEscapeQuery(c) {
9146    var unicode = c.charCodeAt(0);
9147
9148    if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) {
9149      return c;
9150    }
9151
9152    return encodeURIComponent(c);
9153  }
9154
9155  var EOF,
9156      ALPHA = /[a-zA-Z]/,
9157      ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/;
9158
9159  function parse(input, stateOverride, base) {
9160    function err(message) {
9161      errors.push(message);
9162    }
9163
9164    var state = stateOverride || 'scheme start',
9165        cursor = 0,
9166        buffer = '',
9167        seenAt = false,
9168        seenBracket = false,
9169        errors = [];
9170
9171    loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) {
9172      var c = input[cursor];
9173
9174      switch (state) {
9175        case 'scheme start':
9176          if (c && ALPHA.test(c)) {
9177            buffer += c.toLowerCase();
9178            state = 'scheme';
9179          } else if (!stateOverride) {
9180            buffer = '';
9181            state = 'no scheme';
9182            continue;
9183          } else {
9184            err('Invalid scheme.');
9185            break loop;
9186          }
9187
9188          break;
9189
9190        case 'scheme':
9191          if (c && ALPHANUMERIC.test(c)) {
9192            buffer += c.toLowerCase();
9193          } else if (c === ':') {
9194            this._scheme = buffer;
9195            buffer = '';
9196
9197            if (stateOverride) {
9198              break loop;
9199            }
9200
9201            if (isRelativeScheme(this._scheme)) {
9202              this._isRelative = true;
9203            }
9204
9205            if (this._scheme === 'file') {
9206              state = 'relative';
9207            } else if (this._isRelative && base && base._scheme === this._scheme) {
9208              state = 'relative or authority';
9209            } else if (this._isRelative) {
9210              state = 'authority first slash';
9211            } else {
9212              state = 'scheme data';
9213            }
9214          } else if (!stateOverride) {
9215            buffer = '';
9216            cursor = 0;
9217            state = 'no scheme';
9218            continue;
9219          } else if (c === EOF) {
9220            break loop;
9221          } else {
9222            err('Code point not allowed in scheme: ' + c);
9223            break loop;
9224          }
9225
9226          break;
9227
9228        case 'scheme data':
9229          if (c === '?') {
9230            this._query = '?';
9231            state = 'query';
9232          } else if (c === '#') {
9233            this._fragment = '#';
9234            state = 'fragment';
9235          } else {
9236            if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
9237              this._schemeData += percentEscape(c);
9238            }
9239          }
9240
9241          break;
9242
9243        case 'no scheme':
9244          if (!base || !isRelativeScheme(base._scheme)) {
9245            err('Missing scheme.');
9246            invalid.call(this);
9247          } else {
9248            state = 'relative';
9249            continue;
9250          }
9251
9252          break;
9253
9254        case 'relative or authority':
9255          if (c === '/' && input[cursor + 1] === '/') {
9256            state = 'authority ignore slashes';
9257          } else {
9258            err('Expected /, got: ' + c);
9259            state = 'relative';
9260            continue;
9261          }
9262
9263          break;
9264
9265        case 'relative':
9266          this._isRelative = true;
9267
9268          if (this._scheme !== 'file') {
9269            this._scheme = base._scheme;
9270          }
9271
9272          if (c === EOF) {
9273            this._host = base._host;
9274            this._port = base._port;
9275            this._path = base._path.slice();
9276            this._query = base._query;
9277            this._username = base._username;
9278            this._password = base._password;
9279            break loop;
9280          } else if (c === '/' || c === '\\') {
9281            if (c === '\\') {
9282              err('\\ is an invalid code point.');
9283            }
9284
9285            state = 'relative slash';
9286          } else if (c === '?') {
9287            this._host = base._host;
9288            this._port = base._port;
9289            this._path = base._path.slice();
9290            this._query = '?';
9291            this._username = base._username;
9292            this._password = base._password;
9293            state = 'query';
9294          } else if (c === '#') {
9295            this._host = base._host;
9296            this._port = base._port;
9297            this._path = base._path.slice();
9298            this._query = base._query;
9299            this._fragment = '#';
9300            this._username = base._username;
9301            this._password = base._password;
9302            state = 'fragment';
9303          } else {
9304            var nextC = input[cursor + 1];
9305            var nextNextC = input[cursor + 2];
9306
9307            if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') {
9308              this._host = base._host;
9309              this._port = base._port;
9310              this._username = base._username;
9311              this._password = base._password;
9312              this._path = base._path.slice();
9313
9314              this._path.pop();
9315            }
9316
9317            state = 'relative path';
9318            continue;
9319          }
9320
9321          break;
9322
9323        case 'relative slash':
9324          if (c === '/' || c === '\\') {
9325            if (c === '\\') {
9326              err('\\ is an invalid code point.');
9327            }
9328
9329            if (this._scheme === 'file') {
9330              state = 'file host';
9331            } else {
9332              state = 'authority ignore slashes';
9333            }
9334          } else {
9335            if (this._scheme !== 'file') {
9336              this._host = base._host;
9337              this._port = base._port;
9338              this._username = base._username;
9339              this._password = base._password;
9340            }
9341
9342            state = 'relative path';
9343            continue;
9344          }
9345
9346          break;
9347
9348        case 'authority first slash':
9349          if (c === '/') {
9350            state = 'authority second slash';
9351          } else {
9352            err('Expected \'/\', got: ' + c);
9353            state = 'authority ignore slashes';
9354            continue;
9355          }
9356
9357          break;
9358
9359        case 'authority second slash':
9360          state = 'authority ignore slashes';
9361
9362          if (c !== '/') {
9363            err('Expected \'/\', got: ' + c);
9364            continue;
9365          }
9366
9367          break;
9368
9369        case 'authority ignore slashes':
9370          if (c !== '/' && c !== '\\') {
9371            state = 'authority';
9372            continue;
9373          } else {
9374            err('Expected authority, got: ' + c);
9375          }
9376
9377          break;
9378
9379        case 'authority':
9380          if (c === '@') {
9381            if (seenAt) {
9382              err('@ already seen.');
9383              buffer += '%40';
9384            }
9385
9386            seenAt = true;
9387
9388            for (var i = 0; i < buffer.length; i++) {
9389              var cp = buffer[i];
9390
9391              if (cp === '\t' || cp === '\n' || cp === '\r') {
9392                err('Invalid whitespace in authority.');
9393                continue;
9394              }
9395
9396              if (cp === ':' && this._password === null) {
9397                this._password = '';
9398                continue;
9399              }
9400
9401              var tempC = percentEscape(cp);
9402
9403              if (this._password !== null) {
9404                this._password += tempC;
9405              } else {
9406                this._username += tempC;
9407              }
9408            }
9409
9410            buffer = '';
9411          } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
9412            cursor -= buffer.length;
9413            buffer = '';
9414            state = 'host';
9415            continue;
9416          } else {
9417            buffer += c;
9418          }
9419
9420          break;
9421
9422        case 'file host':
9423          if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
9424            if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) {
9425              state = 'relative path';
9426            } else if (buffer.length === 0) {
9427              state = 'relative path start';
9428            } else {
9429              this._host = IDNAToASCII.call(this, buffer);
9430              buffer = '';
9431              state = 'relative path start';
9432            }
9433
9434            continue;
9435          } else if (c === '\t' || c === '\n' || c === '\r') {
9436            err('Invalid whitespace in file host.');
9437          } else {
9438            buffer += c;
9439          }
9440
9441          break;
9442
9443        case 'host':
9444        case 'hostname':
9445          if (c === ':' && !seenBracket) {
9446            this._host = IDNAToASCII.call(this, buffer);
9447            buffer = '';
9448            state = 'port';
9449
9450            if (stateOverride === 'hostname') {
9451              break loop;
9452            }
9453          } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
9454            this._host = IDNAToASCII.call(this, buffer);
9455            buffer = '';
9456            state = 'relative path start';
9457
9458            if (stateOverride) {
9459              break loop;
9460            }
9461
9462            continue;
9463          } else if (c !== '\t' && c !== '\n' && c !== '\r') {
9464            if (c === '[') {
9465              seenBracket = true;
9466            } else if (c === ']') {
9467              seenBracket = false;
9468            }
9469
9470            buffer += c;
9471          } else {
9472            err('Invalid code point in host/hostname: ' + c);
9473          }
9474
9475          break;
9476
9477        case 'port':
9478          if (/[0-9]/.test(c)) {
9479            buffer += c;
9480          } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) {
9481            if (buffer !== '') {
9482              var temp = parseInt(buffer, 10);
9483
9484              if (temp !== relative[this._scheme]) {
9485                this._port = temp + '';
9486              }
9487
9488              buffer = '';
9489            }
9490
9491            if (stateOverride) {
9492              break loop;
9493            }
9494
9495            state = 'relative path start';
9496            continue;
9497          } else if (c === '\t' || c === '\n' || c === '\r') {
9498            err('Invalid code point in port: ' + c);
9499          } else {
9500            invalid.call(this);
9501          }
9502
9503          break;
9504
9505        case 'relative path start':
9506          if (c === '\\') {
9507            err('\'\\\' not allowed in path.');
9508          }
9509
9510          state = 'relative path';
9511
9512          if (c !== '/' && c !== '\\') {
9513            continue;
9514          }
9515
9516          break;
9517
9518        case 'relative path':
9519          if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) {
9520            if (c === '\\') {
9521              err('\\ not allowed in relative path.');
9522            }
9523
9524            var tmp;
9525
9526            if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {
9527              buffer = tmp;
9528            }
9529
9530            if (buffer === '..') {
9531              this._path.pop();
9532
9533              if (c !== '/' && c !== '\\') {
9534                this._path.push('');
9535              }
9536            } else if (buffer === '.' && c !== '/' && c !== '\\') {
9537              this._path.push('');
9538            } else if (buffer !== '.') {
9539              if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') {
9540                buffer = buffer[0] + ':';
9541              }
9542
9543              this._path.push(buffer);
9544            }
9545
9546            buffer = '';
9547
9548            if (c === '?') {
9549              this._query = '?';
9550              state = 'query';
9551            } else if (c === '#') {
9552              this._fragment = '#';
9553              state = 'fragment';
9554            }
9555          } else if (c !== '\t' && c !== '\n' && c !== '\r') {
9556            buffer += percentEscape(c);
9557          }
9558
9559          break;
9560
9561        case 'query':
9562          if (!stateOverride && c === '#') {
9563            this._fragment = '#';
9564            state = 'fragment';
9565          } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
9566            this._query += percentEscapeQuery(c);
9567          }
9568
9569          break;
9570
9571        case 'fragment':
9572          if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
9573            this._fragment += c;
9574          }
9575
9576          break;
9577      }
9578
9579      cursor++;
9580    }
9581  }
9582
9583  function clear() {
9584    this._scheme = '';
9585    this._schemeData = '';
9586    this._username = '';
9587    this._password = null;
9588    this._host = '';
9589    this._port = '';
9590    this._path = [];
9591    this._query = '';
9592    this._fragment = '';
9593    this._isInvalid = false;
9594    this._isRelative = false;
9595  }
9596
9597  function JURL(url, base) {
9598    if (base !== undefined && !(base instanceof JURL)) {
9599      base = new JURL(String(base));
9600    }
9601
9602    this._url = url;
9603    clear.call(this);
9604    var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, '');
9605    parse.call(this, input, null, base);
9606  }
9607
9608  JURL.prototype = {
9609    toString: function toString() {
9610      return this.href;
9611    },
9612
9613    get href() {
9614      if (this._isInvalid) {
9615        return this._url;
9616      }
9617
9618      var authority = '';
9619
9620      if (this._username !== '' || this._password !== null) {
9621        authority = this._username + (this._password !== null ? ':' + this._password : '') + '@';
9622      }
9623
9624      return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment;
9625    },
9626
9627    set href(value) {
9628      clear.call(this);
9629      parse.call(this, value);
9630    },
9631
9632    get protocol() {
9633      return this._scheme + ':';
9634    },
9635
9636    set protocol(value) {
9637      if (this._isInvalid) {
9638        return;
9639      }
9640
9641      parse.call(this, value + ':', 'scheme start');
9642    },
9643
9644    get host() {
9645      return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host;
9646    },
9647
9648    set host(value) {
9649      if (this._isInvalid || !this._isRelative) {
9650        return;
9651      }
9652
9653      parse.call(this, value, 'host');
9654    },
9655
9656    get hostname() {
9657      return this._host;
9658    },
9659
9660    set hostname(value) {
9661      if (this._isInvalid || !this._isRelative) {
9662        return;
9663      }
9664
9665      parse.call(this, value, 'hostname');
9666    },
9667
9668    get port() {
9669      return this._port;
9670    },
9671
9672    set port(value) {
9673      if (this._isInvalid || !this._isRelative) {
9674        return;
9675      }
9676
9677      parse.call(this, value, 'port');
9678    },
9679
9680    get pathname() {
9681      return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData;
9682    },
9683
9684    set pathname(value) {
9685      if (this._isInvalid || !this._isRelative) {
9686        return;
9687      }
9688
9689      this._path = [];
9690      parse.call(this, value, 'relative path start');
9691    },
9692
9693    get search() {
9694      return this._isInvalid || !this._query || this._query === '?' ? '' : this._query;
9695    },
9696
9697    set search(value) {
9698      if (this._isInvalid || !this._isRelative) {
9699        return;
9700      }
9701
9702      this._query = '?';
9703
9704      if (value[0] === '?') {
9705        value = value.slice(1);
9706      }
9707
9708      parse.call(this, value, 'query');
9709    },
9710
9711    get hash() {
9712      return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment;
9713    },
9714
9715    set hash(value) {
9716      if (this._isInvalid) {
9717        return;
9718      }
9719
9720      this._fragment = '#';
9721
9722      if (value[0] === '#') {
9723        value = value.slice(1);
9724      }
9725
9726      parse.call(this, value, 'fragment');
9727    },
9728
9729    get origin() {
9730      var host;
9731
9732      if (this._isInvalid || !this._scheme) {
9733        return '';
9734      }
9735
9736      switch (this._scheme) {
9737        case 'data':
9738        case 'file':
9739        case 'javascript':
9740        case 'mailto':
9741          return 'null';
9742
9743        case 'blob':
9744          try {
9745            return new JURL(this._schemeData).origin || 'null';
9746          } catch (_) {}
9747
9748          return 'null';
9749      }
9750
9751      host = this.host;
9752
9753      if (!host) {
9754        return '';
9755      }
9756
9757      return this._scheme + '://' + host;
9758    }
9759
9760  };
9761  exports.URL = JURL;
9762})();
9763
9764/***/ }),
9765/* 147 */
9766/***/ (function(module, exports, __w_pdfjs_require__) {
9767
9768"use strict";
9769
9770
9771Object.defineProperty(exports, "__esModule", {
9772  value: true
9773});
9774exports.getDocument = getDocument;
9775exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
9776exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;
9777
9778var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
9779
9780var _util = __w_pdfjs_require__(1);
9781
9782var _display_utils = __w_pdfjs_require__(151);
9783
9784var _font_loader = __w_pdfjs_require__(152);
9785
9786var _api_compatibility = __w_pdfjs_require__(153);
9787
9788var _canvas = __w_pdfjs_require__(154);
9789
9790var _global_scope = _interopRequireDefault(__w_pdfjs_require__(3));
9791
9792var _worker_options = __w_pdfjs_require__(156);
9793
9794var _message_handler = __w_pdfjs_require__(157);
9795
9796var _metadata = __w_pdfjs_require__(158);
9797
9798var _transport_stream = __w_pdfjs_require__(160);
9799
9800var _webgl = __w_pdfjs_require__(161);
9801
9802function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9803
9804function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
9805
9806function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
9807
9808function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
9809
9810function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
9811
9812function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
9813
9814function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
9815
9816function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
9817
9818function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
9819
9820function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
9821
9822function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
9823
9824function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9825
9826function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
9827
9828function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
9829
9830function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9831
9832var DEFAULT_RANGE_CHUNK_SIZE = 65536;
9833var isWorkerDisabled = false;
9834var fallbackWorkerSrc;
9835var fakeWorkerFilesLoader = null;
9836{
9837  var useRequireEnsure = false;
9838
9839  if (typeof window === 'undefined') {
9840    isWorkerDisabled = true;
9841
9842    if (typeof require.ensure === 'undefined') {
9843      require.ensure = require('node-ensure');
9844    }
9845
9846    useRequireEnsure = true;
9847  } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') {
9848    useRequireEnsure = true;
9849  }
9850
9851  if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
9852    fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');
9853  }
9854
9855  var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load;
9856  fakeWorkerFilesLoader = useRequireEnsure ? function () {
9857    return new Promise(function (resolve, reject) {
9858      require.ensure([], function () {
9859        try {
9860          var worker;
9861          worker = require('./pdf.worker.js');
9862          resolve(worker.WorkerMessageHandler);
9863        } catch (ex) {
9864          reject(ex);
9865        }
9866      }, reject, 'pdfjsWorker');
9867    });
9868  } : dynamicLoaderSupported ? function () {
9869    return new Promise(function (resolve, reject) {
9870      requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {
9871        try {
9872          resolve(worker.WorkerMessageHandler);
9873        } catch (ex) {
9874          reject(ex);
9875        }
9876      }, reject);
9877    });
9878  } : null;
9879
9880  if (!fallbackWorkerSrc && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && 'currentScript' in document) {
9881    var pdfjsFilePath = document.currentScript && document.currentScript.src;
9882
9883    if (pdfjsFilePath) {
9884      fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2');
9885    }
9886  }
9887}
9888var createPDFNetworkStream;
9889
9890function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
9891  createPDFNetworkStream = pdfNetworkStreamFactory;
9892}
9893
9894function getDocument(src) {
9895  var task = new PDFDocumentLoadingTask();
9896  var source;
9897
9898  if (typeof src === 'string') {
9899    source = {
9900      url: src
9901    };
9902  } else if ((0, _util.isArrayBuffer)(src)) {
9903    source = {
9904      data: src
9905    };
9906  } else if (src instanceof PDFDataRangeTransport) {
9907    source = {
9908      range: src
9909    };
9910  } else {
9911    if (_typeof(src) !== 'object') {
9912      throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object');
9913    }
9914
9915    if (!src.url && !src.data && !src.range) {
9916      throw new Error('Invalid parameter object: need either .data, .range or .url');
9917    }
9918
9919    source = src;
9920  }
9921
9922  var params = Object.create(null);
9923  var rangeTransport = null,
9924      worker = null;
9925
9926  for (var key in source) {
9927    if (key === 'url' && typeof window !== 'undefined') {
9928      params[key] = new _util.URL(source[key], window.location).href;
9929      continue;
9930    } else if (key === 'range') {
9931      rangeTransport = source[key];
9932      continue;
9933    } else if (key === 'worker') {
9934      worker = source[key];
9935      continue;
9936    } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
9937      var pdfBytes = source[key];
9938
9939      if (typeof pdfBytes === 'string') {
9940        params[key] = (0, _util.stringToBytes)(pdfBytes);
9941      } else if (_typeof(pdfBytes) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) {
9942        params[key] = new Uint8Array(pdfBytes);
9943      } else if ((0, _util.isArrayBuffer)(pdfBytes)) {
9944        params[key] = new Uint8Array(pdfBytes);
9945      } else {
9946        throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.');
9947      }
9948
9949      continue;
9950    }
9951
9952    params[key] = source[key];
9953  }
9954
9955  params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
9956  params.CMapReaderFactory = params.CMapReaderFactory || _display_utils.DOMCMapReaderFactory;
9957  params.ignoreErrors = params.stopAtErrors !== true;
9958  params.pdfBug = params.pdfBug === true;
9959  var NativeImageDecoderValues = Object.values(_util.NativeImageDecoding);
9960
9961  if (params.nativeImageDecoderSupport === undefined || !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {
9962    params.nativeImageDecoderSupport = _api_compatibility.apiCompatibilityParams.nativeImageDecoderSupport || _util.NativeImageDecoding.DECODE;
9963  }
9964
9965  if (!Number.isInteger(params.maxImageSize)) {
9966    params.maxImageSize = -1;
9967  }
9968
9969  if (typeof params.isEvalSupported !== 'boolean') {
9970    params.isEvalSupported = true;
9971  }
9972
9973  if (typeof params.disableFontFace !== 'boolean') {
9974    params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;
9975  }
9976
9977  if (typeof params.disableRange !== 'boolean') {
9978    params.disableRange = false;
9979  }
9980
9981  if (typeof params.disableStream !== 'boolean') {
9982    params.disableStream = false;
9983  }
9984
9985  if (typeof params.disableAutoFetch !== 'boolean') {
9986    params.disableAutoFetch = false;
9987  }
9988
9989  if (typeof params.disableCreateObjectURL !== 'boolean') {
9990    params.disableCreateObjectURL = _api_compatibility.apiCompatibilityParams.disableCreateObjectURL || false;
9991  }
9992
9993  (0, _util.setVerbosityLevel)(params.verbosity);
9994
9995  if (!worker) {
9996    var workerParams = {
9997      postMessageTransfers: params.postMessageTransfers,
9998      verbosity: params.verbosity,
9999      port: _worker_options.GlobalWorkerOptions.workerPort
10000    };
10001    worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);
10002    task._worker = worker;
10003  }
10004
10005  var docId = task.docId;
10006  worker.promise.then(function () {
10007    if (task.destroyed) {
10008      throw new Error('Loading aborted');
10009    }
10010
10011    return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) {
10012      if (task.destroyed) {
10013        throw new Error('Loading aborted');
10014      }
10015
10016      var networkStream;
10017
10018      if (rangeTransport) {
10019        networkStream = new _transport_stream.PDFDataTransportStream({
10020          length: params.length,
10021          initialData: params.initialData,
10022          progressiveDone: params.progressiveDone,
10023          disableRange: params.disableRange,
10024          disableStream: params.disableStream
10025        }, rangeTransport);
10026      } else if (!params.data) {
10027        networkStream = createPDFNetworkStream({
10028          url: params.url,
10029          length: params.length,
10030          httpHeaders: params.httpHeaders,
10031          withCredentials: params.withCredentials,
10032          rangeChunkSize: params.rangeChunkSize,
10033          disableRange: params.disableRange,
10034          disableStream: params.disableStream
10035        });
10036      }
10037
10038      var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
10039      messageHandler.postMessageTransfers = worker.postMessageTransfers;
10040      var transport = new WorkerTransport(messageHandler, task, networkStream, params);
10041      task._transport = transport;
10042      messageHandler.send('Ready', null);
10043    });
10044  })["catch"](task._capability.reject);
10045  return task;
10046}
10047
10048function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
10049  if (worker.destroyed) {
10050    return Promise.reject(new Error('Worker was destroyed'));
10051  }
10052
10053  if (pdfDataRangeTransport) {
10054    source.length = pdfDataRangeTransport.length;
10055    source.initialData = pdfDataRangeTransport.initialData;
10056    source.progressiveDone = pdfDataRangeTransport.progressiveDone;
10057  }
10058
10059  return worker.messageHandler.sendWithPromise('GetDocRequest', {
10060    docId: docId,
10061    apiVersion: '2.2.228',
10062    source: {
10063      data: source.data,
10064      url: source.url,
10065      password: source.password,
10066      disableAutoFetch: source.disableAutoFetch,
10067      rangeChunkSize: source.rangeChunkSize,
10068      length: source.length
10069    },
10070    maxImageSize: source.maxImageSize,
10071    disableFontFace: source.disableFontFace,
10072    disableCreateObjectURL: source.disableCreateObjectURL,
10073    postMessageTransfers: worker.postMessageTransfers,
10074    docBaseUrl: source.docBaseUrl,
10075    nativeImageDecoderSupport: source.nativeImageDecoderSupport,
10076    ignoreErrors: source.ignoreErrors,
10077    isEvalSupported: source.isEvalSupported
10078  }).then(function (workerId) {
10079    if (worker.destroyed) {
10080      throw new Error('Worker was destroyed');
10081    }
10082
10083    return workerId;
10084  });
10085}
10086
10087var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
10088  var nextDocumentId = 0;
10089
10090  var PDFDocumentLoadingTask =
10091  /*#__PURE__*/
10092  function () {
10093    function PDFDocumentLoadingTask() {
10094      _classCallCheck(this, PDFDocumentLoadingTask);
10095
10096      this._capability = (0, _util.createPromiseCapability)();
10097      this._transport = null;
10098      this._worker = null;
10099      this.docId = 'd' + nextDocumentId++;
10100      this.destroyed = false;
10101      this.onPassword = null;
10102      this.onProgress = null;
10103      this.onUnsupportedFeature = null;
10104    }
10105
10106    _createClass(PDFDocumentLoadingTask, [{
10107      key: "destroy",
10108      value: function destroy() {
10109        var _this = this;
10110
10111        this.destroyed = true;
10112        var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
10113        return transportDestroyed.then(function () {
10114          _this._transport = null;
10115
10116          if (_this._worker) {
10117            _this._worker.destroy();
10118
10119            _this._worker = null;
10120          }
10121        });
10122      }
10123    }, {
10124      key: "then",
10125      value: function then(onFulfilled, onRejected) {
10126        (0, _display_utils.deprecated)('PDFDocumentLoadingTask.then method, ' + 'use the `promise` getter instead.');
10127        return this.promise.then.apply(this.promise, arguments);
10128      }
10129    }, {
10130      key: "promise",
10131      get: function get() {
10132        return this._capability.promise;
10133      }
10134    }]);
10135
10136    return PDFDocumentLoadingTask;
10137  }();
10138
10139  return PDFDocumentLoadingTask;
10140}();
10141
10142var PDFDataRangeTransport =
10143/*#__PURE__*/
10144function () {
10145  function PDFDataRangeTransport(length, initialData) {
10146    var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
10147
10148    _classCallCheck(this, PDFDataRangeTransport);
10149
10150    this.length = length;
10151    this.initialData = initialData;
10152    this.progressiveDone = progressiveDone;
10153    this._rangeListeners = [];
10154    this._progressListeners = [];
10155    this._progressiveReadListeners = [];
10156    this._progressiveDoneListeners = [];
10157    this._readyCapability = (0, _util.createPromiseCapability)();
10158  }
10159
10160  _createClass(PDFDataRangeTransport, [{
10161    key: "addRangeListener",
10162    value: function addRangeListener(listener) {
10163      this._rangeListeners.push(listener);
10164    }
10165  }, {
10166    key: "addProgressListener",
10167    value: function addProgressListener(listener) {
10168      this._progressListeners.push(listener);
10169    }
10170  }, {
10171    key: "addProgressiveReadListener",
10172    value: function addProgressiveReadListener(listener) {
10173      this._progressiveReadListeners.push(listener);
10174    }
10175  }, {
10176    key: "addProgressiveDoneListener",
10177    value: function addProgressiveDoneListener(listener) {
10178      this._progressiveDoneListeners.push(listener);
10179    }
10180  }, {
10181    key: "onDataRange",
10182    value: function onDataRange(begin, chunk) {
10183      var _iteratorNormalCompletion = true;
10184      var _didIteratorError = false;
10185      var _iteratorError = undefined;
10186
10187      try {
10188        for (var _iterator = this._rangeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
10189          var listener = _step.value;
10190          listener(begin, chunk);
10191        }
10192      } catch (err) {
10193        _didIteratorError = true;
10194        _iteratorError = err;
10195      } finally {
10196        try {
10197          if (!_iteratorNormalCompletion && _iterator["return"] != null) {
10198            _iterator["return"]();
10199          }
10200        } finally {
10201          if (_didIteratorError) {
10202            throw _iteratorError;
10203          }
10204        }
10205      }
10206    }
10207  }, {
10208    key: "onDataProgress",
10209    value: function onDataProgress(loaded, total) {
10210      var _this2 = this;
10211
10212      this._readyCapability.promise.then(function () {
10213        var _iteratorNormalCompletion2 = true;
10214        var _didIteratorError2 = false;
10215        var _iteratorError2 = undefined;
10216
10217        try {
10218          for (var _iterator2 = _this2._progressListeners[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
10219            var listener = _step2.value;
10220            listener(loaded, total);
10221          }
10222        } catch (err) {
10223          _didIteratorError2 = true;
10224          _iteratorError2 = err;
10225        } finally {
10226          try {
10227            if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
10228              _iterator2["return"]();
10229            }
10230          } finally {
10231            if (_didIteratorError2) {
10232              throw _iteratorError2;
10233            }
10234          }
10235        }
10236      });
10237    }
10238  }, {
10239    key: "onDataProgressiveRead",
10240    value: function onDataProgressiveRead(chunk) {
10241      var _this3 = this;
10242
10243      this._readyCapability.promise.then(function () {
10244        var _iteratorNormalCompletion3 = true;
10245        var _didIteratorError3 = false;
10246        var _iteratorError3 = undefined;
10247
10248        try {
10249          for (var _iterator3 = _this3._progressiveReadListeners[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
10250            var listener = _step3.value;
10251            listener(chunk);
10252          }
10253        } catch (err) {
10254          _didIteratorError3 = true;
10255          _iteratorError3 = err;
10256        } finally {
10257          try {
10258            if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
10259              _iterator3["return"]();
10260            }
10261          } finally {
10262            if (_didIteratorError3) {
10263              throw _iteratorError3;
10264            }
10265          }
10266        }
10267      });
10268    }
10269  }, {
10270    key: "onDataProgressiveDone",
10271    value: function onDataProgressiveDone() {
10272      var _this4 = this;
10273
10274      this._readyCapability.promise.then(function () {
10275        var _iteratorNormalCompletion4 = true;
10276        var _didIteratorError4 = false;
10277        var _iteratorError4 = undefined;
10278
10279        try {
10280          for (var _iterator4 = _this4._progressiveDoneListeners[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
10281            var listener = _step4.value;
10282            listener();
10283          }
10284        } catch (err) {
10285          _didIteratorError4 = true;
10286          _iteratorError4 = err;
10287        } finally {
10288          try {
10289            if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
10290              _iterator4["return"]();
10291            }
10292          } finally {
10293            if (_didIteratorError4) {
10294              throw _iteratorError4;
10295            }
10296          }
10297        }
10298      });
10299    }
10300  }, {
10301    key: "transportReady",
10302    value: function transportReady() {
10303      this._readyCapability.resolve();
10304    }
10305  }, {
10306    key: "requestDataRange",
10307    value: function requestDataRange(begin, end) {
10308      (0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange');
10309    }
10310  }, {
10311    key: "abort",
10312    value: function abort() {}
10313  }]);
10314
10315  return PDFDataRangeTransport;
10316}();
10317
10318exports.PDFDataRangeTransport = PDFDataRangeTransport;
10319
10320var PDFDocumentProxy =
10321/*#__PURE__*/
10322function () {
10323  function PDFDocumentProxy(pdfInfo, transport) {
10324    _classCallCheck(this, PDFDocumentProxy);
10325
10326    this._pdfInfo = pdfInfo;
10327    this._transport = transport;
10328  }
10329
10330  _createClass(PDFDocumentProxy, [{
10331    key: "getPage",
10332    value: function getPage(pageNumber) {
10333      return this._transport.getPage(pageNumber);
10334    }
10335  }, {
10336    key: "getPageIndex",
10337    value: function getPageIndex(ref) {
10338      return this._transport.getPageIndex(ref);
10339    }
10340  }, {
10341    key: "getDestinations",
10342    value: function getDestinations() {
10343      return this._transport.getDestinations();
10344    }
10345  }, {
10346    key: "getDestination",
10347    value: function getDestination(id) {
10348      return this._transport.getDestination(id);
10349    }
10350  }, {
10351    key: "getPageLabels",
10352    value: function getPageLabels() {
10353      return this._transport.getPageLabels();
10354    }
10355  }, {
10356    key: "getPageLayout",
10357    value: function getPageLayout() {
10358      return this._transport.getPageLayout();
10359    }
10360  }, {
10361    key: "getPageMode",
10362    value: function getPageMode() {
10363      return this._transport.getPageMode();
10364    }
10365  }, {
10366    key: "getViewerPreferences",
10367    value: function getViewerPreferences() {
10368      return this._transport.getViewerPreferences();
10369    }
10370  }, {
10371    key: "getOpenActionDestination",
10372    value: function getOpenActionDestination() {
10373      return this._transport.getOpenActionDestination();
10374    }
10375  }, {
10376    key: "getAttachments",
10377    value: function getAttachments() {
10378      return this._transport.getAttachments();
10379    }
10380  }, {
10381    key: "getJavaScript",
10382    value: function getJavaScript() {
10383      return this._transport.getJavaScript();
10384    }
10385  }, {
10386    key: "getOutline",
10387    value: function getOutline() {
10388      return this._transport.getOutline();
10389    }
10390  }, {
10391    key: "getPermissions",
10392    value: function getPermissions() {
10393      return this._transport.getPermissions();
10394    }
10395  }, {
10396    key: "getMetadata",
10397    value: function getMetadata() {
10398      return this._transport.getMetadata();
10399    }
10400  }, {
10401    key: "getData",
10402    value: function getData() {
10403      return this._transport.getData();
10404    }
10405  }, {
10406    key: "getDownloadInfo",
10407    value: function getDownloadInfo() {
10408      return this._transport.downloadInfoCapability.promise;
10409    }
10410  }, {
10411    key: "getStats",
10412    value: function getStats() {
10413      return this._transport.getStats();
10414    }
10415  }, {
10416    key: "cleanup",
10417    value: function cleanup() {
10418      this._transport.startCleanup();
10419    }
10420  }, {
10421    key: "destroy",
10422    value: function destroy() {
10423      return this.loadingTask.destroy();
10424    }
10425  }, {
10426    key: "numPages",
10427    get: function get() {
10428      return this._pdfInfo.numPages;
10429    }
10430  }, {
10431    key: "fingerprint",
10432    get: function get() {
10433      return this._pdfInfo.fingerprint;
10434    }
10435  }, {
10436    key: "loadingParams",
10437    get: function get() {
10438      return this._transport.loadingParams;
10439    }
10440  }, {
10441    key: "loadingTask",
10442    get: function get() {
10443      return this._transport.loadingTask;
10444    }
10445  }]);
10446
10447  return PDFDocumentProxy;
10448}();
10449
10450exports.PDFDocumentProxy = PDFDocumentProxy;
10451
10452var PDFPageProxy =
10453/*#__PURE__*/
10454function () {
10455  function PDFPageProxy(pageIndex, pageInfo, transport) {
10456    var pdfBug = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
10457
10458    _classCallCheck(this, PDFPageProxy);
10459
10460    this.pageIndex = pageIndex;
10461    this._pageInfo = pageInfo;
10462    this._transport = transport;
10463    this._stats = pdfBug ? new _display_utils.StatTimer() : _display_utils.DummyStatTimer;
10464    this._pdfBug = pdfBug;
10465    this.commonObjs = transport.commonObjs;
10466    this.objs = new PDFObjects();
10467    this.cleanupAfterRender = false;
10468    this.pendingCleanup = false;
10469    this.intentStates = Object.create(null);
10470    this.destroyed = false;
10471  }
10472
10473  _createClass(PDFPageProxy, [{
10474    key: "getViewport",
10475    value: function getViewport() {
10476      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
10477          scale = _ref.scale,
10478          _ref$rotation = _ref.rotation,
10479          rotation = _ref$rotation === void 0 ? this.rotate : _ref$rotation,
10480          _ref$dontFlip = _ref.dontFlip,
10481          dontFlip = _ref$dontFlip === void 0 ? false : _ref$dontFlip;
10482
10483      if (arguments.length > 1 || typeof arguments[0] === 'number') {
10484        (0, _display_utils.deprecated)('getViewport is called with obsolete arguments.');
10485        scale = arguments[0];
10486        rotation = typeof arguments[1] === 'number' ? arguments[1] : this.rotate;
10487        dontFlip = typeof arguments[2] === 'boolean' ? arguments[2] : false;
10488      }
10489
10490      return new _display_utils.PageViewport({
10491        viewBox: this.view,
10492        scale: scale,
10493        rotation: rotation,
10494        dontFlip: dontFlip
10495      });
10496    }
10497  }, {
10498    key: "getAnnotations",
10499    value: function getAnnotations() {
10500      var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
10501          _ref2$intent = _ref2.intent,
10502          intent = _ref2$intent === void 0 ? null : _ref2$intent;
10503
10504      if (!this.annotationsPromise || this.annotationsIntent !== intent) {
10505        this.annotationsPromise = this._transport.getAnnotations(this.pageIndex, intent);
10506        this.annotationsIntent = intent;
10507      }
10508
10509      return this.annotationsPromise;
10510    }
10511  }, {
10512    key: "render",
10513    value: function render(_ref3) {
10514      var _this5 = this;
10515
10516      var canvasContext = _ref3.canvasContext,
10517          viewport = _ref3.viewport,
10518          _ref3$intent = _ref3.intent,
10519          intent = _ref3$intent === void 0 ? 'display' : _ref3$intent,
10520          _ref3$enableWebGL = _ref3.enableWebGL,
10521          enableWebGL = _ref3$enableWebGL === void 0 ? false : _ref3$enableWebGL,
10522          _ref3$renderInteracti = _ref3.renderInteractiveForms,
10523          renderInteractiveForms = _ref3$renderInteracti === void 0 ? false : _ref3$renderInteracti,
10524          _ref3$transform = _ref3.transform,
10525          transform = _ref3$transform === void 0 ? null : _ref3$transform,
10526          _ref3$imageLayer = _ref3.imageLayer,
10527          imageLayer = _ref3$imageLayer === void 0 ? null : _ref3$imageLayer,
10528          _ref3$canvasFactory = _ref3.canvasFactory,
10529          canvasFactory = _ref3$canvasFactory === void 0 ? null : _ref3$canvasFactory,
10530          _ref3$background = _ref3.background,
10531          background = _ref3$background === void 0 ? null : _ref3$background;
10532      var stats = this._stats;
10533      stats.time('Overall');
10534      this.pendingCleanup = false;
10535      var renderingIntent = intent === 'print' ? 'print' : 'display';
10536      var canvasFactoryInstance = canvasFactory || new _display_utils.DOMCanvasFactory();
10537      var webGLContext = new _webgl.WebGLContext({
10538        enable: enableWebGL
10539      });
10540
10541      if (!this.intentStates[renderingIntent]) {
10542        this.intentStates[renderingIntent] = Object.create(null);
10543      }
10544
10545      var intentState = this.intentStates[renderingIntent];
10546
10547      if (!intentState.displayReadyCapability) {
10548        intentState.receivingOperatorList = true;
10549        intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
10550        intentState.operatorList = {
10551          fnArray: [],
10552          argsArray: [],
10553          lastChunk: false
10554        };
10555        stats.time('Page Request');
10556
10557        this._transport.messageHandler.send('RenderPageRequest', {
10558          pageIndex: this.pageNumber - 1,
10559          intent: renderingIntent,
10560          renderInteractiveForms: renderInteractiveForms === true
10561        });
10562      }
10563
10564      var complete = function complete(error) {
10565        var i = intentState.renderTasks.indexOf(internalRenderTask);
10566
10567        if (i >= 0) {
10568          intentState.renderTasks.splice(i, 1);
10569        }
10570
10571        if (_this5.cleanupAfterRender || renderingIntent === 'print') {
10572          _this5.pendingCleanup = true;
10573        }
10574
10575        _this5._tryCleanup();
10576
10577        if (error) {
10578          internalRenderTask.capability.reject(error);
10579        } else {
10580          internalRenderTask.capability.resolve();
10581        }
10582
10583        stats.timeEnd('Rendering');
10584        stats.timeEnd('Overall');
10585      };
10586
10587      var internalRenderTask = new InternalRenderTask({
10588        callback: complete,
10589        params: {
10590          canvasContext: canvasContext,
10591          viewport: viewport,
10592          transform: transform,
10593          imageLayer: imageLayer,
10594          background: background
10595        },
10596        objs: this.objs,
10597        commonObjs: this.commonObjs,
10598        operatorList: intentState.operatorList,
10599        pageNumber: this.pageNumber,
10600        canvasFactory: canvasFactoryInstance,
10601        webGLContext: webGLContext,
10602        useRequestAnimationFrame: renderingIntent !== 'print',
10603        pdfBug: this._pdfBug
10604      });
10605
10606      if (!intentState.renderTasks) {
10607        intentState.renderTasks = [];
10608      }
10609
10610      intentState.renderTasks.push(internalRenderTask);
10611      var renderTask = internalRenderTask.task;
10612      intentState.displayReadyCapability.promise.then(function (transparency) {
10613        if (_this5.pendingCleanup) {
10614          complete();
10615          return;
10616        }
10617
10618        stats.time('Rendering');
10619        internalRenderTask.initializeGraphics(transparency);
10620        internalRenderTask.operatorListChanged();
10621      })["catch"](complete);
10622      return renderTask;
10623    }
10624  }, {
10625    key: "getOperatorList",
10626    value: function getOperatorList() {
10627      function operatorListChanged() {
10628        if (intentState.operatorList.lastChunk) {
10629          intentState.opListReadCapability.resolve(intentState.operatorList);
10630          var i = intentState.renderTasks.indexOf(opListTask);
10631
10632          if (i >= 0) {
10633            intentState.renderTasks.splice(i, 1);
10634          }
10635        }
10636      }
10637
10638      var renderingIntent = 'oplist';
10639
10640      if (!this.intentStates[renderingIntent]) {
10641        this.intentStates[renderingIntent] = Object.create(null);
10642      }
10643
10644      var intentState = this.intentStates[renderingIntent];
10645      var opListTask;
10646
10647      if (!intentState.opListReadCapability) {
10648        opListTask = {};
10649        opListTask.operatorListChanged = operatorListChanged;
10650        intentState.receivingOperatorList = true;
10651        intentState.opListReadCapability = (0, _util.createPromiseCapability)();
10652        intentState.renderTasks = [];
10653        intentState.renderTasks.push(opListTask);
10654        intentState.operatorList = {
10655          fnArray: [],
10656          argsArray: [],
10657          lastChunk: false
10658        };
10659
10660        this._stats.time('Page Request');
10661
10662        this._transport.messageHandler.send('RenderPageRequest', {
10663          pageIndex: this.pageIndex,
10664          intent: renderingIntent
10665        });
10666      }
10667
10668      return intentState.opListReadCapability.promise;
10669    }
10670  }, {
10671    key: "streamTextContent",
10672    value: function streamTextContent() {
10673      var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
10674          _ref4$normalizeWhites = _ref4.normalizeWhitespace,
10675          normalizeWhitespace = _ref4$normalizeWhites === void 0 ? false : _ref4$normalizeWhites,
10676          _ref4$disableCombineT = _ref4.disableCombineTextItems,
10677          disableCombineTextItems = _ref4$disableCombineT === void 0 ? false : _ref4$disableCombineT;
10678
10679      var TEXT_CONTENT_CHUNK_SIZE = 100;
10680      return this._transport.messageHandler.sendWithStream('GetTextContent', {
10681        pageIndex: this.pageNumber - 1,
10682        normalizeWhitespace: normalizeWhitespace === true,
10683        combineTextItems: disableCombineTextItems !== true
10684      }, {
10685        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
10686        size: function size(textContent) {
10687          return textContent.items.length;
10688        }
10689      });
10690    }
10691  }, {
10692    key: "getTextContent",
10693    value: function getTextContent() {
10694      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10695      var readableStream = this.streamTextContent(params);
10696      return new Promise(function (resolve, reject) {
10697        function pump() {
10698          reader.read().then(function (_ref5) {
10699            var _textContent$items;
10700
10701            var value = _ref5.value,
10702                done = _ref5.done;
10703
10704            if (done) {
10705              resolve(textContent);
10706              return;
10707            }
10708
10709            Object.assign(textContent.styles, value.styles);
10710
10711            (_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items));
10712
10713            pump();
10714          }, reject);
10715        }
10716
10717        var reader = readableStream.getReader();
10718        var textContent = {
10719          items: [],
10720          styles: Object.create(null)
10721        };
10722        pump();
10723      });
10724    }
10725  }, {
10726    key: "_destroy",
10727    value: function _destroy() {
10728      this.destroyed = true;
10729      this._transport.pageCache[this.pageIndex] = null;
10730      var waitOn = [];
10731      Object.keys(this.intentStates).forEach(function (intent) {
10732        if (intent === 'oplist') {
10733          return;
10734        }
10735
10736        var intentState = this.intentStates[intent];
10737        intentState.renderTasks.forEach(function (renderTask) {
10738          var renderCompleted = renderTask.capability.promise["catch"](function () {});
10739          waitOn.push(renderCompleted);
10740          renderTask.cancel();
10741        });
10742      }, this);
10743      this.objs.clear();
10744      this.annotationsPromise = null;
10745      this.pendingCleanup = false;
10746      return Promise.all(waitOn);
10747    }
10748  }, {
10749    key: "cleanup",
10750    value: function cleanup() {
10751      var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
10752      this.pendingCleanup = true;
10753
10754      this._tryCleanup(resetStats);
10755    }
10756  }, {
10757    key: "_tryCleanup",
10758    value: function _tryCleanup() {
10759      var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
10760
10761      if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {
10762        var intentState = this.intentStates[intent];
10763        return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;
10764      }, this)) {
10765        return;
10766      }
10767
10768      Object.keys(this.intentStates).forEach(function (intent) {
10769        delete this.intentStates[intent];
10770      }, this);
10771      this.objs.clear();
10772      this.annotationsPromise = null;
10773
10774      if (resetStats && this._stats instanceof _display_utils.StatTimer) {
10775        this._stats = new _display_utils.StatTimer();
10776      }
10777
10778      this.pendingCleanup = false;
10779    }
10780  }, {
10781    key: "_startRenderPage",
10782    value: function _startRenderPage(transparency, intent) {
10783      var intentState = this.intentStates[intent];
10784
10785      if (intentState.displayReadyCapability) {
10786        intentState.displayReadyCapability.resolve(transparency);
10787      }
10788    }
10789  }, {
10790    key: "_renderPageChunk",
10791    value: function _renderPageChunk(operatorListChunk, intent) {
10792      var intentState = this.intentStates[intent];
10793
10794      for (var i = 0, ii = operatorListChunk.length; i < ii; i++) {
10795        intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
10796        intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
10797      }
10798
10799      intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
10800
10801      for (var _i = 0; _i < intentState.renderTasks.length; _i++) {
10802        intentState.renderTasks[_i].operatorListChanged();
10803      }
10804
10805      if (operatorListChunk.lastChunk) {
10806        intentState.receivingOperatorList = false;
10807
10808        this._tryCleanup();
10809      }
10810    }
10811  }, {
10812    key: "pageNumber",
10813    get: function get() {
10814      return this.pageIndex + 1;
10815    }
10816  }, {
10817    key: "rotate",
10818    get: function get() {
10819      return this._pageInfo.rotate;
10820    }
10821  }, {
10822    key: "ref",
10823    get: function get() {
10824      return this._pageInfo.ref;
10825    }
10826  }, {
10827    key: "userUnit",
10828    get: function get() {
10829      return this._pageInfo.userUnit;
10830    }
10831  }, {
10832    key: "view",
10833    get: function get() {
10834      return this._pageInfo.view;
10835    }
10836  }, {
10837    key: "stats",
10838    get: function get() {
10839      return this._stats instanceof _display_utils.StatTimer ? this._stats : null;
10840    }
10841  }]);
10842
10843  return PDFPageProxy;
10844}();
10845
10846exports.PDFPageProxy = PDFPageProxy;
10847
10848var LoopbackPort =
10849/*#__PURE__*/
10850function () {
10851  function LoopbackPort() {
10852    var defer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
10853
10854    _classCallCheck(this, LoopbackPort);
10855
10856    this._listeners = [];
10857    this._defer = defer;
10858    this._deferred = Promise.resolve(undefined);
10859  }
10860
10861  _createClass(LoopbackPort, [{
10862    key: "postMessage",
10863    value: function postMessage(obj, transfers) {
10864      var _this6 = this;
10865
10866      function cloneValue(value) {
10867        if (_typeof(value) !== 'object' || value === null) {
10868          return value;
10869        }
10870
10871        if (cloned.has(value)) {
10872          return cloned.get(value);
10873        }
10874
10875        var buffer, result;
10876
10877        if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
10878          var transferable = transfers && transfers.includes(buffer);
10879
10880          if (value === buffer) {
10881            result = value;
10882          } else if (transferable) {
10883            result = new value.constructor(buffer, value.byteOffset, value.byteLength);
10884          } else {
10885            result = new value.constructor(value);
10886          }
10887
10888          cloned.set(value, result);
10889          return result;
10890        }
10891
10892        result = Array.isArray(value) ? [] : {};
10893        cloned.set(value, result);
10894
10895        for (var i in value) {
10896          var desc = void 0,
10897              p = value;
10898
10899          while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
10900            p = Object.getPrototypeOf(p);
10901          }
10902
10903          if (typeof desc.value === 'undefined' || typeof desc.value === 'function') {
10904            continue;
10905          }
10906
10907          result[i] = cloneValue(desc.value);
10908        }
10909
10910        return result;
10911      }
10912
10913      if (!this._defer) {
10914        this._listeners.forEach(function (listener) {
10915          listener.call(this, {
10916            data: obj
10917          });
10918        }, this);
10919
10920        return;
10921      }
10922
10923      var cloned = new WeakMap();
10924      var e = {
10925        data: cloneValue(obj)
10926      };
10927
10928      this._deferred.then(function () {
10929        _this6._listeners.forEach(function (listener) {
10930          listener.call(this, e);
10931        }, _this6);
10932      });
10933    }
10934  }, {
10935    key: "addEventListener",
10936    value: function addEventListener(name, listener) {
10937      this._listeners.push(listener);
10938    }
10939  }, {
10940    key: "removeEventListener",
10941    value: function removeEventListener(name, listener) {
10942      var i = this._listeners.indexOf(listener);
10943
10944      this._listeners.splice(i, 1);
10945    }
10946  }, {
10947    key: "terminate",
10948    value: function terminate() {
10949      this._listeners.length = 0;
10950    }
10951  }]);
10952
10953  return LoopbackPort;
10954}();
10955
10956exports.LoopbackPort = LoopbackPort;
10957
10958var PDFWorker = function PDFWorkerClosure() {
10959  var pdfWorkerPorts = new WeakMap();
10960  var nextFakeWorkerId = 0;
10961  var fakeWorkerFilesLoadedCapability;
10962
10963  function _getWorkerSrc() {
10964    if (_worker_options.GlobalWorkerOptions.workerSrc) {
10965      return _worker_options.GlobalWorkerOptions.workerSrc;
10966    }
10967
10968    if (typeof fallbackWorkerSrc !== 'undefined') {
10969      return fallbackWorkerSrc;
10970    }
10971
10972    throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
10973  }
10974
10975  function getMainThreadWorkerMessageHandler() {
10976    try {
10977      if (typeof window !== 'undefined') {
10978        return window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler;
10979      }
10980    } catch (ex) {}
10981
10982    return null;
10983  }
10984
10985  function setupFakeWorkerGlobal() {
10986    if (fakeWorkerFilesLoadedCapability) {
10987      return fakeWorkerFilesLoadedCapability.promise;
10988    }
10989
10990    fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)();
10991    var mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
10992
10993    if (mainWorkerMessageHandler) {
10994      fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);
10995      return fakeWorkerFilesLoadedCapability.promise;
10996    }
10997
10998    var loader = fakeWorkerFilesLoader || function () {
10999      return (0, _display_utils.loadScript)(_getWorkerSrc()).then(function () {
11000        return window.pdfjsWorker.WorkerMessageHandler;
11001      });
11002    };
11003
11004    loader().then(fakeWorkerFilesLoadedCapability.resolve, fakeWorkerFilesLoadedCapability.reject);
11005    return fakeWorkerFilesLoadedCapability.promise;
11006  }
11007
11008  function createCDNWrapper(url) {
11009    var wrapper = 'importScripts(\'' + url + '\');';
11010    return _util.URL.createObjectURL(new Blob([wrapper]));
11011  }
11012
11013  var PDFWorker =
11014  /*#__PURE__*/
11015  function () {
11016    function PDFWorker() {
11017      var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
11018          _ref6$name = _ref6.name,
11019          name = _ref6$name === void 0 ? null : _ref6$name,
11020          _ref6$port = _ref6.port,
11021          port = _ref6$port === void 0 ? null : _ref6$port,
11022          _ref6$postMessageTran = _ref6.postMessageTransfers,
11023          postMessageTransfers = _ref6$postMessageTran === void 0 ? true : _ref6$postMessageTran,
11024          _ref6$verbosity = _ref6.verbosity,
11025          verbosity = _ref6$verbosity === void 0 ? (0, _util.getVerbosityLevel)() : _ref6$verbosity;
11026
11027      _classCallCheck(this, PDFWorker);
11028
11029      if (port && pdfWorkerPorts.has(port)) {
11030        throw new Error('Cannot use more than one PDFWorker per port');
11031      }
11032
11033      this.name = name;
11034      this.destroyed = false;
11035      this.postMessageTransfers = postMessageTransfers !== false;
11036      this.verbosity = verbosity;
11037      this._readyCapability = (0, _util.createPromiseCapability)();
11038      this._port = null;
11039      this._webWorker = null;
11040      this._messageHandler = null;
11041
11042      if (port) {
11043        pdfWorkerPorts.set(port, this);
11044
11045        this._initializeFromPort(port);
11046
11047        return;
11048      }
11049
11050      this._initialize();
11051    }
11052
11053    _createClass(PDFWorker, [{
11054      key: "_initializeFromPort",
11055      value: function _initializeFromPort(port) {
11056        this._port = port;
11057        this._messageHandler = new _message_handler.MessageHandler('main', 'worker', port);
11058
11059        this._messageHandler.on('ready', function () {});
11060
11061        this._readyCapability.resolve();
11062      }
11063    }, {
11064      key: "_initialize",
11065      value: function _initialize() {
11066        var _this7 = this;
11067
11068        if (typeof Worker !== 'undefined' && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
11069          var workerSrc = _getWorkerSrc();
11070
11071          try {
11072            if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
11073              workerSrc = createCDNWrapper(new _util.URL(workerSrc, window.location).href);
11074            }
11075
11076            var worker = new Worker(workerSrc);
11077            var messageHandler = new _message_handler.MessageHandler('main', 'worker', worker);
11078
11079            var terminateEarly = function terminateEarly() {
11080              worker.removeEventListener('error', onWorkerError);
11081              messageHandler.destroy();
11082              worker.terminate();
11083
11084              if (_this7.destroyed) {
11085                _this7._readyCapability.reject(new Error('Worker was destroyed'));
11086              } else {
11087                _this7._setupFakeWorker();
11088              }
11089            };
11090
11091            var onWorkerError = function onWorkerError() {
11092              if (!_this7._webWorker) {
11093                terminateEarly();
11094              }
11095            };
11096
11097            worker.addEventListener('error', onWorkerError);
11098            messageHandler.on('test', function (data) {
11099              worker.removeEventListener('error', onWorkerError);
11100
11101              if (_this7.destroyed) {
11102                terminateEarly();
11103                return;
11104              }
11105
11106              if (data && data.supportTypedArray) {
11107                _this7._messageHandler = messageHandler;
11108                _this7._port = worker;
11109                _this7._webWorker = worker;
11110
11111                if (!data.supportTransfers) {
11112                  _this7.postMessageTransfers = false;
11113                }
11114
11115                _this7._readyCapability.resolve();
11116
11117                messageHandler.send('configure', {
11118                  verbosity: _this7.verbosity
11119                });
11120              } else {
11121                _this7._setupFakeWorker();
11122
11123                messageHandler.destroy();
11124                worker.terminate();
11125              }
11126            });
11127            messageHandler.on('ready', function (data) {
11128              worker.removeEventListener('error', onWorkerError);
11129
11130              if (_this7.destroyed) {
11131                terminateEarly();
11132                return;
11133              }
11134
11135              try {
11136                sendTest();
11137              } catch (e) {
11138                _this7._setupFakeWorker();
11139              }
11140            });
11141
11142            var sendTest = function sendTest() {
11143              var testObj = new Uint8Array([_this7.postMessageTransfers ? 255 : 0]);
11144
11145              try {
11146                messageHandler.send('test', testObj, [testObj.buffer]);
11147              } catch (ex) {
11148                (0, _util.info)('Cannot use postMessage transfers');
11149                testObj[0] = 0;
11150                messageHandler.send('test', testObj);
11151              }
11152            };
11153
11154            sendTest();
11155            return;
11156          } catch (e) {
11157            (0, _util.info)('The worker has been disabled.');
11158          }
11159        }
11160
11161        this._setupFakeWorker();
11162      }
11163    }, {
11164      key: "_setupFakeWorker",
11165      value: function _setupFakeWorker() {
11166        var _this8 = this;
11167
11168        if (!isWorkerDisabled) {
11169          (0, _util.warn)('Setting up fake worker.');
11170          isWorkerDisabled = true;
11171        }
11172
11173        setupFakeWorkerGlobal().then(function (WorkerMessageHandler) {
11174          if (_this8.destroyed) {
11175            _this8._readyCapability.reject(new Error('Worker was destroyed'));
11176
11177            return;
11178          }
11179
11180          var port = new LoopbackPort();
11181          _this8._port = port;
11182          var id = 'fake' + nextFakeWorkerId++;
11183          var workerHandler = new _message_handler.MessageHandler(id + '_worker', id, port);
11184          WorkerMessageHandler.setup(workerHandler, port);
11185          var messageHandler = new _message_handler.MessageHandler(id, id + '_worker', port);
11186          _this8._messageHandler = messageHandler;
11187
11188          _this8._readyCapability.resolve();
11189        })["catch"](function (reason) {
11190          _this8._readyCapability.reject(new Error("Setting up fake worker failed: \"".concat(reason.message, "\".")));
11191        });
11192      }
11193    }, {
11194      key: "destroy",
11195      value: function destroy() {
11196        this.destroyed = true;
11197
11198        if (this._webWorker) {
11199          this._webWorker.terminate();
11200
11201          this._webWorker = null;
11202        }
11203
11204        pdfWorkerPorts["delete"](this._port);
11205        this._port = null;
11206
11207        if (this._messageHandler) {
11208          this._messageHandler.destroy();
11209
11210          this._messageHandler = null;
11211        }
11212      }
11213    }, {
11214      key: "promise",
11215      get: function get() {
11216        return this._readyCapability.promise;
11217      }
11218    }, {
11219      key: "port",
11220      get: function get() {
11221        return this._port;
11222      }
11223    }, {
11224      key: "messageHandler",
11225      get: function get() {
11226        return this._messageHandler;
11227      }
11228    }], [{
11229      key: "fromPort",
11230      value: function fromPort(params) {
11231        if (!params || !params.port) {
11232          throw new Error('PDFWorker.fromPort - invalid method signature.');
11233        }
11234
11235        if (pdfWorkerPorts.has(params.port)) {
11236          return pdfWorkerPorts.get(params.port);
11237        }
11238
11239        return new PDFWorker(params);
11240      }
11241    }, {
11242      key: "getWorkerSrc",
11243      value: function getWorkerSrc() {
11244        return _getWorkerSrc();
11245      }
11246    }]);
11247
11248    return PDFWorker;
11249  }();
11250
11251  return PDFWorker;
11252}();
11253
11254exports.PDFWorker = PDFWorker;
11255
11256var WorkerTransport =
11257/*#__PURE__*/
11258function () {
11259  function WorkerTransport(messageHandler, loadingTask, networkStream, params) {
11260    _classCallCheck(this, WorkerTransport);
11261
11262    this.messageHandler = messageHandler;
11263    this.loadingTask = loadingTask;
11264    this.commonObjs = new PDFObjects();
11265    this.fontLoader = new _font_loader.FontLoader({
11266      docId: loadingTask.docId,
11267      onUnsupportedFeature: this._onUnsupportedFeature.bind(this)
11268    });
11269    this._params = params;
11270    this.CMapReaderFactory = new params.CMapReaderFactory({
11271      baseUrl: params.cMapUrl,
11272      isCompressed: params.cMapPacked
11273    });
11274    this.destroyed = false;
11275    this.destroyCapability = null;
11276    this._passwordCapability = null;
11277    this._networkStream = networkStream;
11278    this._fullReader = null;
11279    this._lastProgress = null;
11280    this.pageCache = [];
11281    this.pagePromises = [];
11282    this.downloadInfoCapability = (0, _util.createPromiseCapability)();
11283    this.setupMessageHandler();
11284  }
11285
11286  _createClass(WorkerTransport, [{
11287    key: "destroy",
11288    value: function destroy() {
11289      var _this9 = this;
11290
11291      if (this.destroyCapability) {
11292        return this.destroyCapability.promise;
11293      }
11294
11295      this.destroyed = true;
11296      this.destroyCapability = (0, _util.createPromiseCapability)();
11297
11298      if (this._passwordCapability) {
11299        this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback'));
11300      }
11301
11302      var waitOn = [];
11303      this.pageCache.forEach(function (page) {
11304        if (page) {
11305          waitOn.push(page._destroy());
11306        }
11307      });
11308      this.pageCache.length = 0;
11309      this.pagePromises.length = 0;
11310      var terminated = this.messageHandler.sendWithPromise('Terminate', null);
11311      waitOn.push(terminated);
11312      Promise.all(waitOn).then(function () {
11313        _this9.fontLoader.clear();
11314
11315        if (_this9._networkStream) {
11316          _this9._networkStream.cancelAllRequests();
11317        }
11318
11319        if (_this9.messageHandler) {
11320          _this9.messageHandler.destroy();
11321
11322          _this9.messageHandler = null;
11323        }
11324
11325        _this9.destroyCapability.resolve();
11326      }, this.destroyCapability.reject);
11327      return this.destroyCapability.promise;
11328    }
11329  }, {
11330    key: "setupMessageHandler",
11331    value: function setupMessageHandler() {
11332      var messageHandler = this.messageHandler,
11333          loadingTask = this.loadingTask;
11334      messageHandler.on('GetReader', function (data, sink) {
11335        var _this10 = this;
11336
11337        (0, _util.assert)(this._networkStream);
11338        this._fullReader = this._networkStream.getFullReader();
11339
11340        this._fullReader.onProgress = function (evt) {
11341          _this10._lastProgress = {
11342            loaded: evt.loaded,
11343            total: evt.total
11344          };
11345        };
11346
11347        sink.onPull = function () {
11348          _this10._fullReader.read().then(function (_ref7) {
11349            var value = _ref7.value,
11350                done = _ref7.done;
11351
11352            if (done) {
11353              sink.close();
11354              return;
11355            }
11356
11357            (0, _util.assert)((0, _util.isArrayBuffer)(value));
11358            sink.enqueue(new Uint8Array(value), 1, [value]);
11359          })["catch"](function (reason) {
11360            sink.error(reason);
11361          });
11362        };
11363
11364        sink.onCancel = function (reason) {
11365          _this10._fullReader.cancel(reason);
11366        };
11367      }, this);
11368      messageHandler.on('ReaderHeadersReady', function (data) {
11369        var _this11 = this;
11370
11371        var headersCapability = (0, _util.createPromiseCapability)();
11372        var fullReader = this._fullReader;
11373        fullReader.headersReady.then(function () {
11374          if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
11375            if (_this11._lastProgress && loadingTask.onProgress) {
11376              loadingTask.onProgress(_this11._lastProgress);
11377            }
11378
11379            fullReader.onProgress = function (evt) {
11380              if (loadingTask.onProgress) {
11381                loadingTask.onProgress({
11382                  loaded: evt.loaded,
11383                  total: evt.total
11384                });
11385              }
11386            };
11387          }
11388
11389          headersCapability.resolve({
11390            isStreamingSupported: fullReader.isStreamingSupported,
11391            isRangeSupported: fullReader.isRangeSupported,
11392            contentLength: fullReader.contentLength
11393          });
11394        }, headersCapability.reject);
11395        return headersCapability.promise;
11396      }, this);
11397      messageHandler.on('GetRangeReader', function (data, sink) {
11398        (0, _util.assert)(this._networkStream);
11399
11400        var rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
11401
11402        if (!rangeReader) {
11403          sink.close();
11404          return;
11405        }
11406
11407        sink.onPull = function () {
11408          rangeReader.read().then(function (_ref8) {
11409            var value = _ref8.value,
11410                done = _ref8.done;
11411
11412            if (done) {
11413              sink.close();
11414              return;
11415            }
11416
11417            (0, _util.assert)((0, _util.isArrayBuffer)(value));
11418            sink.enqueue(new Uint8Array(value), 1, [value]);
11419          })["catch"](function (reason) {
11420            sink.error(reason);
11421          });
11422        };
11423
11424        sink.onCancel = function (reason) {
11425          rangeReader.cancel(reason);
11426        };
11427      }, this);
11428      messageHandler.on('GetDoc', function (_ref9) {
11429        var pdfInfo = _ref9.pdfInfo;
11430        this._numPages = pdfInfo.numPages;
11431
11432        loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
11433      }, this);
11434      messageHandler.on('PasswordRequest', function (exception) {
11435        var _this12 = this;
11436
11437        this._passwordCapability = (0, _util.createPromiseCapability)();
11438
11439        if (loadingTask.onPassword) {
11440          var updatePassword = function updatePassword(password) {
11441            _this12._passwordCapability.resolve({
11442              password: password
11443            });
11444          };
11445
11446          try {
11447            loadingTask.onPassword(updatePassword, exception.code);
11448          } catch (ex) {
11449            this._passwordCapability.reject(ex);
11450          }
11451        } else {
11452          this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
11453        }
11454
11455        return this._passwordCapability.promise;
11456      }, this);
11457      messageHandler.on('PasswordException', function (exception) {
11458        loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code));
11459      }, this);
11460      messageHandler.on('InvalidPDF', function (exception) {
11461        loadingTask._capability.reject(new _util.InvalidPDFException(exception.message));
11462      }, this);
11463      messageHandler.on('MissingPDF', function (exception) {
11464        loadingTask._capability.reject(new _util.MissingPDFException(exception.message));
11465      }, this);
11466      messageHandler.on('UnexpectedResponse', function (exception) {
11467        loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status));
11468      }, this);
11469      messageHandler.on('UnknownError', function (exception) {
11470        loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details));
11471      }, this);
11472      messageHandler.on('DataLoaded', function (data) {
11473        if (loadingTask.onProgress) {
11474          loadingTask.onProgress({
11475            loaded: data.length,
11476            total: data.length
11477          });
11478        }
11479
11480        this.downloadInfoCapability.resolve(data);
11481      }, this);
11482      messageHandler.on('StartRenderPage', function (data) {
11483        if (this.destroyed) {
11484          return;
11485        }
11486
11487        var page = this.pageCache[data.pageIndex];
11488
11489        page._stats.timeEnd('Page Request');
11490
11491        page._startRenderPage(data.transparency, data.intent);
11492      }, this);
11493      messageHandler.on('RenderPageChunk', function (data) {
11494        if (this.destroyed) {
11495          return;
11496        }
11497
11498        var page = this.pageCache[data.pageIndex];
11499
11500        page._renderPageChunk(data.operatorList, data.intent);
11501      }, this);
11502      messageHandler.on('commonobj', function (data) {
11503        var _this13 = this;
11504
11505        if (this.destroyed) {
11506          return;
11507        }
11508
11509        var _data = _slicedToArray(data, 3),
11510            id = _data[0],
11511            type = _data[1],
11512            exportedData = _data[2];
11513
11514        if (this.commonObjs.has(id)) {
11515          return;
11516        }
11517
11518        switch (type) {
11519          case 'Font':
11520            var params = this._params;
11521
11522            if ('error' in exportedData) {
11523              var exportedError = exportedData.error;
11524              (0, _util.warn)("Error during font loading: ".concat(exportedError));
11525              this.commonObjs.resolve(id, exportedError);
11526              break;
11527            }
11528
11529            var fontRegistry = null;
11530
11531            if (params.pdfBug && _global_scope["default"].FontInspector && _global_scope["default"].FontInspector.enabled) {
11532              fontRegistry = {
11533                registerFont: function registerFont(font, url) {
11534                  _global_scope["default"]['FontInspector'].fontAdded(font, url);
11535                }
11536              };
11537            }
11538
11539            var font = new _font_loader.FontFaceObject(exportedData, {
11540              isEvalSupported: params.isEvalSupported,
11541              disableFontFace: params.disableFontFace,
11542              ignoreErrors: params.ignoreErrors,
11543              onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
11544              fontRegistry: fontRegistry
11545            });
11546            this.fontLoader.bind(font).then(function () {
11547              _this13.commonObjs.resolve(id, font);
11548            }, function (reason) {
11549              messageHandler.sendWithPromise('FontFallback', {
11550                id: id
11551              })["finally"](function () {
11552                _this13.commonObjs.resolve(id, font);
11553              });
11554            });
11555            break;
11556
11557          case 'FontPath':
11558          case 'FontType3Res':
11559            this.commonObjs.resolve(id, exportedData);
11560            break;
11561
11562          default:
11563            throw new Error("Got unknown common object type ".concat(type));
11564        }
11565      }, this);
11566      messageHandler.on('obj', function (data) {
11567        if (this.destroyed) {
11568          return undefined;
11569        }
11570
11571        var _data2 = _slicedToArray(data, 4),
11572            id = _data2[0],
11573            pageIndex = _data2[1],
11574            type = _data2[2],
11575            imageData = _data2[3];
11576
11577        var pageProxy = this.pageCache[pageIndex];
11578
11579        if (pageProxy.objs.has(id)) {
11580          return undefined;
11581        }
11582
11583        switch (type) {
11584          case 'JpegStream':
11585            return new Promise(function (resolve, reject) {
11586              var img = new Image();
11587
11588              img.onload = function () {
11589                resolve(img);
11590              };
11591
11592              img.onerror = function () {
11593                reject(new Error('Error during JPEG image loading'));
11594                (0, _display_utils.releaseImageResources)(img);
11595              };
11596
11597              img.src = imageData;
11598            }).then(function (img) {
11599              pageProxy.objs.resolve(id, img);
11600            });
11601
11602          case 'Image':
11603            pageProxy.objs.resolve(id, imageData);
11604            var MAX_IMAGE_SIZE_TO_STORE = 8000000;
11605
11606            if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
11607              pageProxy.cleanupAfterRender = true;
11608            }
11609
11610            break;
11611
11612          default:
11613            throw new Error("Got unknown object type ".concat(type));
11614        }
11615
11616        return undefined;
11617      }, this);
11618      messageHandler.on('DocProgress', function (data) {
11619        if (this.destroyed) {
11620          return;
11621        }
11622
11623        if (loadingTask.onProgress) {
11624          loadingTask.onProgress({
11625            loaded: data.loaded,
11626            total: data.total
11627          });
11628        }
11629      }, this);
11630      messageHandler.on('PageError', function (data) {
11631        if (this.destroyed) {
11632          return;
11633        }
11634
11635        var page = this.pageCache[data.pageIndex];
11636        var intentState = page.intentStates[data.intent];
11637
11638        if (intentState.displayReadyCapability) {
11639          intentState.displayReadyCapability.reject(new Error(data.error));
11640        } else {
11641          throw new Error(data.error);
11642        }
11643
11644        if (intentState.operatorList) {
11645          intentState.operatorList.lastChunk = true;
11646
11647          for (var i = 0; i < intentState.renderTasks.length; i++) {
11648            intentState.renderTasks[i].operatorListChanged();
11649          }
11650        }
11651      }, this);
11652      messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);
11653      messageHandler.on('JpegDecode', function (data) {
11654        if (this.destroyed) {
11655          return Promise.reject(new Error('Worker was destroyed'));
11656        }
11657
11658        if (typeof document === 'undefined') {
11659          return Promise.reject(new Error('"document" is not defined.'));
11660        }
11661
11662        var _data3 = _slicedToArray(data, 2),
11663            imageUrl = _data3[0],
11664            components = _data3[1];
11665
11666        if (components !== 3 && components !== 1) {
11667          return Promise.reject(new Error('Only 3 components or 1 component can be returned'));
11668        }
11669
11670        return new Promise(function (resolve, reject) {
11671          var img = new Image();
11672
11673          img.onload = function () {
11674            var width = img.width,
11675                height = img.height;
11676            var size = width * height;
11677            var rgbaLength = size * 4;
11678            var buf = new Uint8ClampedArray(size * components);
11679            var tmpCanvas = document.createElement('canvas');
11680            tmpCanvas.width = width;
11681            tmpCanvas.height = height;
11682            var tmpCtx = tmpCanvas.getContext('2d');
11683            tmpCtx.drawImage(img, 0, 0);
11684            var data = tmpCtx.getImageData(0, 0, width, height).data;
11685
11686            if (components === 3) {
11687              for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
11688                buf[j] = data[i];
11689                buf[j + 1] = data[i + 1];
11690                buf[j + 2] = data[i + 2];
11691              }
11692            } else if (components === 1) {
11693              for (var _i2 = 0, _j = 0; _i2 < rgbaLength; _i2 += 4, _j++) {
11694                buf[_j] = data[_i2];
11695              }
11696            }
11697
11698            resolve({
11699              data: buf,
11700              width: width,
11701              height: height
11702            });
11703            (0, _display_utils.releaseImageResources)(img);
11704            tmpCanvas.width = 0;
11705            tmpCanvas.height = 0;
11706            tmpCanvas = null;
11707            tmpCtx = null;
11708          };
11709
11710          img.onerror = function () {
11711            reject(new Error('JpegDecode failed to load image'));
11712            (0, _display_utils.releaseImageResources)(img);
11713          };
11714
11715          img.src = imageUrl;
11716        });
11717      }, this);
11718      messageHandler.on('FetchBuiltInCMap', function (data) {
11719        if (this.destroyed) {
11720          return Promise.reject(new Error('Worker was destroyed'));
11721        }
11722
11723        return this.CMapReaderFactory.fetch({
11724          name: data.name
11725        });
11726      }, this);
11727    }
11728  }, {
11729    key: "_onUnsupportedFeature",
11730    value: function _onUnsupportedFeature(_ref10) {
11731      var featureId = _ref10.featureId;
11732
11733      if (this.destroyed) {
11734        return;
11735      }
11736
11737      if (this.loadingTask.onUnsupportedFeature) {
11738        this.loadingTask.onUnsupportedFeature(featureId);
11739      }
11740    }
11741  }, {
11742    key: "getData",
11743    value: function getData() {
11744      return this.messageHandler.sendWithPromise('GetData', null);
11745    }
11746  }, {
11747    key: "getPage",
11748    value: function getPage(pageNumber) {
11749      var _this14 = this;
11750
11751      if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {
11752        return Promise.reject(new Error('Invalid page request'));
11753      }
11754
11755      var pageIndex = pageNumber - 1;
11756
11757      if (pageIndex in this.pagePromises) {
11758        return this.pagePromises[pageIndex];
11759      }
11760
11761      var promise = this.messageHandler.sendWithPromise('GetPage', {
11762        pageIndex: pageIndex
11763      }).then(function (pageInfo) {
11764        if (_this14.destroyed) {
11765          throw new Error('Transport destroyed');
11766        }
11767
11768        var page = new PDFPageProxy(pageIndex, pageInfo, _this14, _this14._params.pdfBug);
11769        _this14.pageCache[pageIndex] = page;
11770        return page;
11771      });
11772      this.pagePromises[pageIndex] = promise;
11773      return promise;
11774    }
11775  }, {
11776    key: "getPageIndex",
11777    value: function getPageIndex(ref) {
11778      return this.messageHandler.sendWithPromise('GetPageIndex', {
11779        ref: ref
11780      })["catch"](function (reason) {
11781        return Promise.reject(new Error(reason));
11782      });
11783    }
11784  }, {
11785    key: "getAnnotations",
11786    value: function getAnnotations(pageIndex, intent) {
11787      return this.messageHandler.sendWithPromise('GetAnnotations', {
11788        pageIndex: pageIndex,
11789        intent: intent
11790      });
11791    }
11792  }, {
11793    key: "getDestinations",
11794    value: function getDestinations() {
11795      return this.messageHandler.sendWithPromise('GetDestinations', null);
11796    }
11797  }, {
11798    key: "getDestination",
11799    value: function getDestination(id) {
11800      if (typeof id !== 'string') {
11801        return Promise.reject(new Error('Invalid destination request.'));
11802      }
11803
11804      return this.messageHandler.sendWithPromise('GetDestination', {
11805        id: id
11806      });
11807    }
11808  }, {
11809    key: "getPageLabels",
11810    value: function getPageLabels() {
11811      return this.messageHandler.sendWithPromise('GetPageLabels', null);
11812    }
11813  }, {
11814    key: "getPageLayout",
11815    value: function getPageLayout() {
11816      return this.messageHandler.sendWithPromise('GetPageLayout', null);
11817    }
11818  }, {
11819    key: "getPageMode",
11820    value: function getPageMode() {
11821      return this.messageHandler.sendWithPromise('GetPageMode', null);
11822    }
11823  }, {
11824    key: "getViewerPreferences",
11825    value: function getViewerPreferences() {
11826      return this.messageHandler.sendWithPromise('GetViewerPreferences', null);
11827    }
11828  }, {
11829    key: "getOpenActionDestination",
11830    value: function getOpenActionDestination() {
11831      return this.messageHandler.sendWithPromise('GetOpenActionDestination', null);
11832    }
11833  }, {
11834    key: "getAttachments",
11835    value: function getAttachments() {
11836      return this.messageHandler.sendWithPromise('GetAttachments', null);
11837    }
11838  }, {
11839    key: "getJavaScript",
11840    value: function getJavaScript() {
11841      return this.messageHandler.sendWithPromise('GetJavaScript', null);
11842    }
11843  }, {
11844    key: "getOutline",
11845    value: function getOutline() {
11846      return this.messageHandler.sendWithPromise('GetOutline', null);
11847    }
11848  }, {
11849    key: "getPermissions",
11850    value: function getPermissions() {
11851      return this.messageHandler.sendWithPromise('GetPermissions', null);
11852    }
11853  }, {
11854    key: "getMetadata",
11855    value: function getMetadata() {
11856      var _this15 = this;
11857
11858      return this.messageHandler.sendWithPromise('GetMetadata', null).then(function (results) {
11859        return {
11860          info: results[0],
11861          metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
11862          contentDispositionFilename: _this15._fullReader ? _this15._fullReader.filename : null
11863        };
11864      });
11865    }
11866  }, {
11867    key: "getStats",
11868    value: function getStats() {
11869      return this.messageHandler.sendWithPromise('GetStats', null);
11870    }
11871  }, {
11872    key: "startCleanup",
11873    value: function startCleanup() {
11874      var _this16 = this;
11875
11876      this.messageHandler.sendWithPromise('Cleanup', null).then(function () {
11877        for (var i = 0, ii = _this16.pageCache.length; i < ii; i++) {
11878          var page = _this16.pageCache[i];
11879
11880          if (page) {
11881            page.cleanup();
11882          }
11883        }
11884
11885        _this16.commonObjs.clear();
11886
11887        _this16.fontLoader.clear();
11888      });
11889    }
11890  }, {
11891    key: "loadingParams",
11892    get: function get() {
11893      var params = this._params;
11894      return (0, _util.shadow)(this, 'loadingParams', {
11895        disableAutoFetch: params.disableAutoFetch,
11896        disableCreateObjectURL: params.disableCreateObjectURL,
11897        disableFontFace: params.disableFontFace,
11898        nativeImageDecoderSupport: params.nativeImageDecoderSupport
11899      });
11900    }
11901  }]);
11902
11903  return WorkerTransport;
11904}();
11905
11906var PDFObjects =
11907/*#__PURE__*/
11908function () {
11909  function PDFObjects() {
11910    _classCallCheck(this, PDFObjects);
11911
11912    this._objs = Object.create(null);
11913  }
11914
11915  _createClass(PDFObjects, [{
11916    key: "_ensureObj",
11917    value: function _ensureObj(objId) {
11918      if (this._objs[objId]) {
11919        return this._objs[objId];
11920      }
11921
11922      return this._objs[objId] = {
11923        capability: (0, _util.createPromiseCapability)(),
11924        data: null,
11925        resolved: false
11926      };
11927    }
11928  }, {
11929    key: "get",
11930    value: function get(objId) {
11931      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
11932
11933      if (callback) {
11934        this._ensureObj(objId).capability.promise.then(callback);
11935
11936        return null;
11937      }
11938
11939      var obj = this._objs[objId];
11940
11941      if (!obj || !obj.resolved) {
11942        throw new Error("Requesting object that isn't resolved yet ".concat(objId, "."));
11943      }
11944
11945      return obj.data;
11946    }
11947  }, {
11948    key: "has",
11949    value: function has(objId) {
11950      var obj = this._objs[objId];
11951      return obj ? obj.resolved : false;
11952    }
11953  }, {
11954    key: "resolve",
11955    value: function resolve(objId, data) {
11956      var obj = this._ensureObj(objId);
11957
11958      obj.resolved = true;
11959      obj.data = data;
11960      obj.capability.resolve(data);
11961    }
11962  }, {
11963    key: "clear",
11964    value: function clear() {
11965      for (var objId in this._objs) {
11966        var data = this._objs[objId].data;
11967
11968        if (typeof Image !== 'undefined' && data instanceof Image) {
11969          (0, _display_utils.releaseImageResources)(data);
11970        }
11971      }
11972
11973      this._objs = Object.create(null);
11974    }
11975  }]);
11976
11977  return PDFObjects;
11978}();
11979
11980var RenderTask =
11981/*#__PURE__*/
11982function () {
11983  function RenderTask(internalRenderTask) {
11984    _classCallCheck(this, RenderTask);
11985
11986    this._internalRenderTask = internalRenderTask;
11987    this.onContinue = null;
11988  }
11989
11990  _createClass(RenderTask, [{
11991    key: "cancel",
11992    value: function cancel() {
11993      this._internalRenderTask.cancel();
11994    }
11995  }, {
11996    key: "then",
11997    value: function then(onFulfilled, onRejected) {
11998      (0, _display_utils.deprecated)('RenderTask.then method, use the `promise` getter instead.');
11999      return this.promise.then.apply(this.promise, arguments);
12000    }
12001  }, {
12002    key: "promise",
12003    get: function get() {
12004      return this._internalRenderTask.capability.promise;
12005    }
12006  }]);
12007
12008  return RenderTask;
12009}();
12010
12011var InternalRenderTask = function InternalRenderTaskClosure() {
12012  var canvasInRendering = new WeakSet();
12013
12014  var InternalRenderTask =
12015  /*#__PURE__*/
12016  function () {
12017    function InternalRenderTask(_ref11) {
12018      var callback = _ref11.callback,
12019          params = _ref11.params,
12020          objs = _ref11.objs,
12021          commonObjs = _ref11.commonObjs,
12022          operatorList = _ref11.operatorList,
12023          pageNumber = _ref11.pageNumber,
12024          canvasFactory = _ref11.canvasFactory,
12025          webGLContext = _ref11.webGLContext,
12026          _ref11$useRequestAnim = _ref11.useRequestAnimationFrame,
12027          useRequestAnimationFrame = _ref11$useRequestAnim === void 0 ? false : _ref11$useRequestAnim,
12028          _ref11$pdfBug = _ref11.pdfBug,
12029          pdfBug = _ref11$pdfBug === void 0 ? false : _ref11$pdfBug;
12030
12031      _classCallCheck(this, InternalRenderTask);
12032
12033      this.callback = callback;
12034      this.params = params;
12035      this.objs = objs;
12036      this.commonObjs = commonObjs;
12037      this.operatorListIdx = null;
12038      this.operatorList = operatorList;
12039      this.pageNumber = pageNumber;
12040      this.canvasFactory = canvasFactory;
12041      this.webGLContext = webGLContext;
12042      this._pdfBug = pdfBug;
12043      this.running = false;
12044      this.graphicsReadyCallback = null;
12045      this.graphicsReady = false;
12046      this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== 'undefined';
12047      this.cancelled = false;
12048      this.capability = (0, _util.createPromiseCapability)();
12049      this.task = new RenderTask(this);
12050      this._continueBound = this._continue.bind(this);
12051      this._scheduleNextBound = this._scheduleNext.bind(this);
12052      this._nextBound = this._next.bind(this);
12053      this._canvas = params.canvasContext.canvas;
12054    }
12055
12056    _createClass(InternalRenderTask, [{
12057      key: "initializeGraphics",
12058      value: function initializeGraphics() {
12059        var transparency = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
12060
12061        if (this.cancelled) {
12062          return;
12063        }
12064
12065        if (this._canvas) {
12066          if (canvasInRendering.has(this._canvas)) {
12067            throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.');
12068          }
12069
12070          canvasInRendering.add(this._canvas);
12071        }
12072
12073        if (this._pdfBug && _global_scope["default"].StepperManager && _global_scope["default"].StepperManager.enabled) {
12074          this.stepper = _global_scope["default"].StepperManager.create(this.pageNumber - 1);
12075          this.stepper.init(this.operatorList);
12076          this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
12077        }
12078
12079        var _this$params = this.params,
12080            canvasContext = _this$params.canvasContext,
12081            viewport = _this$params.viewport,
12082            transform = _this$params.transform,
12083            imageLayer = _this$params.imageLayer,
12084            background = _this$params.background;
12085        this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer);
12086        this.gfx.beginDrawing({
12087          transform: transform,
12088          viewport: viewport,
12089          transparency: transparency,
12090          background: background
12091        });
12092        this.operatorListIdx = 0;
12093        this.graphicsReady = true;
12094
12095        if (this.graphicsReadyCallback) {
12096          this.graphicsReadyCallback();
12097        }
12098      }
12099    }, {
12100      key: "cancel",
12101      value: function cancel() {
12102        var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
12103        this.running = false;
12104        this.cancelled = true;
12105
12106        if (this.gfx) {
12107          this.gfx.endDrawing();
12108        }
12109
12110        if (this._canvas) {
12111          canvasInRendering["delete"](this._canvas);
12112        }
12113
12114        this.callback(error || new _display_utils.RenderingCancelledException("Rendering cancelled, page ".concat(this.pageNumber), 'canvas'));
12115      }
12116    }, {
12117      key: "operatorListChanged",
12118      value: function operatorListChanged() {
12119        if (!this.graphicsReady) {
12120          if (!this.graphicsReadyCallback) {
12121            this.graphicsReadyCallback = this._continueBound;
12122          }
12123
12124          return;
12125        }
12126
12127        if (this.stepper) {
12128          this.stepper.updateOperatorList(this.operatorList);
12129        }
12130
12131        if (this.running) {
12132          return;
12133        }
12134
12135        this._continue();
12136      }
12137    }, {
12138      key: "_continue",
12139      value: function _continue() {
12140        this.running = true;
12141
12142        if (this.cancelled) {
12143          return;
12144        }
12145
12146        if (this.task.onContinue) {
12147          this.task.onContinue(this._scheduleNextBound);
12148        } else {
12149          this._scheduleNext();
12150        }
12151      }
12152    }, {
12153      key: "_scheduleNext",
12154      value: function _scheduleNext() {
12155        var _this17 = this;
12156
12157        if (this._useRequestAnimationFrame) {
12158          window.requestAnimationFrame(function () {
12159            _this17._nextBound()["catch"](_this17.cancel.bind(_this17));
12160          });
12161        } else {
12162          Promise.resolve().then(this._nextBound)["catch"](this.cancel.bind(this));
12163        }
12164      }
12165    }, {
12166      key: "_next",
12167      value: function () {
12168        var _next2 = _asyncToGenerator(
12169        /*#__PURE__*/
12170        _regenerator["default"].mark(function _callee() {
12171          return _regenerator["default"].wrap(function _callee$(_context) {
12172            while (1) {
12173              switch (_context.prev = _context.next) {
12174                case 0:
12175                  if (!this.cancelled) {
12176                    _context.next = 2;
12177                    break;
12178                  }
12179
12180                  return _context.abrupt("return");
12181
12182                case 2:
12183                  this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
12184
12185                  if (this.operatorListIdx === this.operatorList.argsArray.length) {
12186                    this.running = false;
12187
12188                    if (this.operatorList.lastChunk) {
12189                      this.gfx.endDrawing();
12190
12191                      if (this._canvas) {
12192                        canvasInRendering["delete"](this._canvas);
12193                      }
12194
12195                      this.callback();
12196                    }
12197                  }
12198
12199                case 4:
12200                case "end":
12201                  return _context.stop();
12202              }
12203            }
12204          }, _callee, this);
12205        }));
12206
12207        function _next() {
12208          return _next2.apply(this, arguments);
12209        }
12210
12211        return _next;
12212      }()
12213    }]);
12214
12215    return InternalRenderTask;
12216  }();
12217
12218  return InternalRenderTask;
12219}();
12220
12221var version = '2.2.228';
12222exports.version = version;
12223var build = 'd7afb74a';
12224exports.build = build;
12225
12226/***/ }),
12227/* 148 */
12228/***/ (function(module, exports, __w_pdfjs_require__) {
12229
12230"use strict";
12231
12232
12233module.exports = __w_pdfjs_require__(149);
12234
12235/***/ }),
12236/* 149 */
12237/***/ (function(module, exports, __w_pdfjs_require__) {
12238
12239"use strict";
12240/* WEBPACK VAR INJECTION */(function(module) {
12241
12242function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12243
12244var runtime = function (exports) {
12245  "use strict";
12246
12247  var Op = Object.prototype;
12248  var hasOwn = Op.hasOwnProperty;
12249  var undefined;
12250  var $Symbol = typeof Symbol === "function" ? Symbol : {};
12251  var iteratorSymbol = $Symbol.iterator || "@@iterator";
12252  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
12253  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
12254
12255  function wrap(innerFn, outerFn, self, tryLocsList) {
12256    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
12257    var generator = Object.create(protoGenerator.prototype);
12258    var context = new Context(tryLocsList || []);
12259    generator._invoke = makeInvokeMethod(innerFn, self, context);
12260    return generator;
12261  }
12262
12263  exports.wrap = wrap;
12264
12265  function tryCatch(fn, obj, arg) {
12266    try {
12267      return {
12268        type: "normal",
12269        arg: fn.call(obj, arg)
12270      };
12271    } catch (err) {
12272      return {
12273        type: "throw",
12274        arg: err
12275      };
12276    }
12277  }
12278
12279  var GenStateSuspendedStart = "suspendedStart";
12280  var GenStateSuspendedYield = "suspendedYield";
12281  var GenStateExecuting = "executing";
12282  var GenStateCompleted = "completed";
12283  var ContinueSentinel = {};
12284
12285  function Generator() {}
12286
12287  function GeneratorFunction() {}
12288
12289  function GeneratorFunctionPrototype() {}
12290
12291  var IteratorPrototype = {};
12292
12293  IteratorPrototype[iteratorSymbol] = function () {
12294    return this;
12295  };
12296
12297  var getProto = Object.getPrototypeOf;
12298  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
12299
12300  if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
12301    IteratorPrototype = NativeIteratorPrototype;
12302  }
12303
12304  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
12305  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
12306  GeneratorFunctionPrototype.constructor = GeneratorFunction;
12307  GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction";
12308
12309  function defineIteratorMethods(prototype) {
12310    ["next", "throw", "return"].forEach(function (method) {
12311      prototype[method] = function (arg) {
12312        return this._invoke(method, arg);
12313      };
12314    });
12315  }
12316
12317  exports.isGeneratorFunction = function (genFun) {
12318    var ctor = typeof genFun === "function" && genFun.constructor;
12319    return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false;
12320  };
12321
12322  exports.mark = function (genFun) {
12323    if (Object.setPrototypeOf) {
12324      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
12325    } else {
12326      genFun.__proto__ = GeneratorFunctionPrototype;
12327
12328      if (!(toStringTagSymbol in genFun)) {
12329        genFun[toStringTagSymbol] = "GeneratorFunction";
12330      }
12331    }
12332
12333    genFun.prototype = Object.create(Gp);
12334    return genFun;
12335  };
12336
12337  exports.awrap = function (arg) {
12338    return {
12339      __await: arg
12340    };
12341  };
12342
12343  function AsyncIterator(generator) {
12344    function invoke(method, arg, resolve, reject) {
12345      var record = tryCatch(generator[method], generator, arg);
12346
12347      if (record.type === "throw") {
12348        reject(record.arg);
12349      } else {
12350        var result = record.arg;
12351        var value = result.value;
12352
12353        if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) {
12354          return Promise.resolve(value.__await).then(function (value) {
12355            invoke("next", value, resolve, reject);
12356          }, function (err) {
12357            invoke("throw", err, resolve, reject);
12358          });
12359        }
12360
12361        return Promise.resolve(value).then(function (unwrapped) {
12362          result.value = unwrapped;
12363          resolve(result);
12364        }, function (error) {
12365          return invoke("throw", error, resolve, reject);
12366        });
12367      }
12368    }
12369
12370    var previousPromise;
12371
12372    function enqueue(method, arg) {
12373      function callInvokeWithMethodAndArg() {
12374        return new Promise(function (resolve, reject) {
12375          invoke(method, arg, resolve, reject);
12376        });
12377      }
12378
12379      return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
12380    }
12381
12382    this._invoke = enqueue;
12383  }
12384
12385  defineIteratorMethods(AsyncIterator.prototype);
12386
12387  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
12388    return this;
12389  };
12390
12391  exports.AsyncIterator = AsyncIterator;
12392
12393  exports.async = function (innerFn, outerFn, self, tryLocsList) {
12394    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
12395    return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
12396      return result.done ? result.value : iter.next();
12397    });
12398  };
12399
12400  function makeInvokeMethod(innerFn, self, context) {
12401    var state = GenStateSuspendedStart;
12402    return function invoke(method, arg) {
12403      if (state === GenStateExecuting) {
12404        throw new Error("Generator is already running");
12405      }
12406
12407      if (state === GenStateCompleted) {
12408        if (method === "throw") {
12409          throw arg;
12410        }
12411
12412        return doneResult();
12413      }
12414
12415      context.method = method;
12416      context.arg = arg;
12417
12418      while (true) {
12419        var delegate = context.delegate;
12420
12421        if (delegate) {
12422          var delegateResult = maybeInvokeDelegate(delegate, context);
12423
12424          if (delegateResult) {
12425            if (delegateResult === ContinueSentinel) continue;
12426            return delegateResult;
12427          }
12428        }
12429
12430        if (context.method === "next") {
12431          context.sent = context._sent = context.arg;
12432        } else if (context.method === "throw") {
12433          if (state === GenStateSuspendedStart) {
12434            state = GenStateCompleted;
12435            throw context.arg;
12436          }
12437
12438          context.dispatchException(context.arg);
12439        } else if (context.method === "return") {
12440          context.abrupt("return", context.arg);
12441        }
12442
12443        state = GenStateExecuting;
12444        var record = tryCatch(innerFn, self, context);
12445
12446        if (record.type === "normal") {
12447          state = context.done ? GenStateCompleted : GenStateSuspendedYield;
12448
12449          if (record.arg === ContinueSentinel) {
12450            continue;
12451          }
12452
12453          return {
12454            value: record.arg,
12455            done: context.done
12456          };
12457        } else if (record.type === "throw") {
12458          state = GenStateCompleted;
12459          context.method = "throw";
12460          context.arg = record.arg;
12461        }
12462      }
12463    };
12464  }
12465
12466  function maybeInvokeDelegate(delegate, context) {
12467    var method = delegate.iterator[context.method];
12468
12469    if (method === undefined) {
12470      context.delegate = null;
12471
12472      if (context.method === "throw") {
12473        if (delegate.iterator["return"]) {
12474          context.method = "return";
12475          context.arg = undefined;
12476          maybeInvokeDelegate(delegate, context);
12477
12478          if (context.method === "throw") {
12479            return ContinueSentinel;
12480          }
12481        }
12482
12483        context.method = "throw";
12484        context.arg = new TypeError("The iterator does not provide a 'throw' method");
12485      }
12486
12487      return ContinueSentinel;
12488    }
12489
12490    var record = tryCatch(method, delegate.iterator, context.arg);
12491
12492    if (record.type === "throw") {
12493      context.method = "throw";
12494      context.arg = record.arg;
12495      context.delegate = null;
12496      return ContinueSentinel;
12497    }
12498
12499    var info = record.arg;
12500
12501    if (!info) {
12502      context.method = "throw";
12503      context.arg = new TypeError("iterator result is not an object");
12504      context.delegate = null;
12505      return ContinueSentinel;
12506    }
12507
12508    if (info.done) {
12509      context[delegate.resultName] = info.value;
12510      context.next = delegate.nextLoc;
12511
12512      if (context.method !== "return") {
12513        context.method = "next";
12514        context.arg = undefined;
12515      }
12516    } else {
12517      return info;
12518    }
12519
12520    context.delegate = null;
12521    return ContinueSentinel;
12522  }
12523
12524  defineIteratorMethods(Gp);
12525  Gp[toStringTagSymbol] = "Generator";
12526
12527  Gp[iteratorSymbol] = function () {
12528    return this;
12529  };
12530
12531  Gp.toString = function () {
12532    return "[object Generator]";
12533  };
12534
12535  function pushTryEntry(locs) {
12536    var entry = {
12537      tryLoc: locs[0]
12538    };
12539
12540    if (1 in locs) {
12541      entry.catchLoc = locs[1];
12542    }
12543
12544    if (2 in locs) {
12545      entry.finallyLoc = locs[2];
12546      entry.afterLoc = locs[3];
12547    }
12548
12549    this.tryEntries.push(entry);
12550  }
12551
12552  function resetTryEntry(entry) {
12553    var record = entry.completion || {};
12554    record.type = "normal";
12555    delete record.arg;
12556    entry.completion = record;
12557  }
12558
12559  function Context(tryLocsList) {
12560    this.tryEntries = [{
12561      tryLoc: "root"
12562    }];
12563    tryLocsList.forEach(pushTryEntry, this);
12564    this.reset(true);
12565  }
12566
12567  exports.keys = function (object) {
12568    var keys = [];
12569
12570    for (var key in object) {
12571      keys.push(key);
12572    }
12573
12574    keys.reverse();
12575    return function next() {
12576      while (keys.length) {
12577        var key = keys.pop();
12578
12579        if (key in object) {
12580          next.value = key;
12581          next.done = false;
12582          return next;
12583        }
12584      }
12585
12586      next.done = true;
12587      return next;
12588    };
12589  };
12590
12591  function values(iterable) {
12592    if (iterable) {
12593      var iteratorMethod = iterable[iteratorSymbol];
12594
12595      if (iteratorMethod) {
12596        return iteratorMethod.call(iterable);
12597      }
12598
12599      if (typeof iterable.next === "function") {
12600        return iterable;
12601      }
12602
12603      if (!isNaN(iterable.length)) {
12604        var i = -1,
12605            next = function next() {
12606          while (++i < iterable.length) {
12607            if (hasOwn.call(iterable, i)) {
12608              next.value = iterable[i];
12609              next.done = false;
12610              return next;
12611            }
12612          }
12613
12614          next.value = undefined;
12615          next.done = true;
12616          return next;
12617        };
12618
12619        return next.next = next;
12620      }
12621    }
12622
12623    return {
12624      next: doneResult
12625    };
12626  }
12627
12628  exports.values = values;
12629
12630  function doneResult() {
12631    return {
12632      value: undefined,
12633      done: true
12634    };
12635  }
12636
12637  Context.prototype = {
12638    constructor: Context,
12639    reset: function reset(skipTempReset) {
12640      this.prev = 0;
12641      this.next = 0;
12642      this.sent = this._sent = undefined;
12643      this.done = false;
12644      this.delegate = null;
12645      this.method = "next";
12646      this.arg = undefined;
12647      this.tryEntries.forEach(resetTryEntry);
12648
12649      if (!skipTempReset) {
12650        for (var name in this) {
12651          if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
12652            this[name] = undefined;
12653          }
12654        }
12655      }
12656    },
12657    stop: function stop() {
12658      this.done = true;
12659      var rootEntry = this.tryEntries[0];
12660      var rootRecord = rootEntry.completion;
12661
12662      if (rootRecord.type === "throw") {
12663        throw rootRecord.arg;
12664      }
12665
12666      return this.rval;
12667    },
12668    dispatchException: function dispatchException(exception) {
12669      if (this.done) {
12670        throw exception;
12671      }
12672
12673      var context = this;
12674
12675      function handle(loc, caught) {
12676        record.type = "throw";
12677        record.arg = exception;
12678        context.next = loc;
12679
12680        if (caught) {
12681          context.method = "next";
12682          context.arg = undefined;
12683        }
12684
12685        return !!caught;
12686      }
12687
12688      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
12689        var entry = this.tryEntries[i];
12690        var record = entry.completion;
12691
12692        if (entry.tryLoc === "root") {
12693          return handle("end");
12694        }
12695
12696        if (entry.tryLoc <= this.prev) {
12697          var hasCatch = hasOwn.call(entry, "catchLoc");
12698          var hasFinally = hasOwn.call(entry, "finallyLoc");
12699
12700          if (hasCatch && hasFinally) {
12701            if (this.prev < entry.catchLoc) {
12702              return handle(entry.catchLoc, true);
12703            } else if (this.prev < entry.finallyLoc) {
12704              return handle(entry.finallyLoc);
12705            }
12706          } else if (hasCatch) {
12707            if (this.prev < entry.catchLoc) {
12708              return handle(entry.catchLoc, true);
12709            }
12710          } else if (hasFinally) {
12711            if (this.prev < entry.finallyLoc) {
12712              return handle(entry.finallyLoc);
12713            }
12714          } else {
12715            throw new Error("try statement without catch or finally");
12716          }
12717        }
12718      }
12719    },
12720    abrupt: function abrupt(type, arg) {
12721      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
12722        var entry = this.tryEntries[i];
12723
12724        if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
12725          var finallyEntry = entry;
12726          break;
12727        }
12728      }
12729
12730      if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
12731        finallyEntry = null;
12732      }
12733
12734      var record = finallyEntry ? finallyEntry.completion : {};
12735      record.type = type;
12736      record.arg = arg;
12737
12738      if (finallyEntry) {
12739        this.method = "next";
12740        this.next = finallyEntry.finallyLoc;
12741        return ContinueSentinel;
12742      }
12743
12744      return this.complete(record);
12745    },
12746    complete: function complete(record, afterLoc) {
12747      if (record.type === "throw") {
12748        throw record.arg;
12749      }
12750
12751      if (record.type === "break" || record.type === "continue") {
12752        this.next = record.arg;
12753      } else if (record.type === "return") {
12754        this.rval = this.arg = record.arg;
12755        this.method = "return";
12756        this.next = "end";
12757      } else if (record.type === "normal" && afterLoc) {
12758        this.next = afterLoc;
12759      }
12760
12761      return ContinueSentinel;
12762    },
12763    finish: function finish(finallyLoc) {
12764      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
12765        var entry = this.tryEntries[i];
12766
12767        if (entry.finallyLoc === finallyLoc) {
12768          this.complete(entry.completion, entry.afterLoc);
12769          resetTryEntry(entry);
12770          return ContinueSentinel;
12771        }
12772      }
12773    },
12774    "catch": function _catch(tryLoc) {
12775      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
12776        var entry = this.tryEntries[i];
12777
12778        if (entry.tryLoc === tryLoc) {
12779          var record = entry.completion;
12780
12781          if (record.type === "throw") {
12782            var thrown = record.arg;
12783            resetTryEntry(entry);
12784          }
12785
12786          return thrown;
12787        }
12788      }
12789
12790      throw new Error("illegal catch attempt");
12791    },
12792    delegateYield: function delegateYield(iterable, resultName, nextLoc) {
12793      this.delegate = {
12794        iterator: values(iterable),
12795        resultName: resultName,
12796        nextLoc: nextLoc
12797      };
12798
12799      if (this.method === "next") {
12800        this.arg = undefined;
12801      }
12802
12803      return ContinueSentinel;
12804    }
12805  };
12806  return exports;
12807}(( false ? undefined : _typeof(module)) === "object" ? module.exports : {});
12808
12809try {
12810  regeneratorRuntime = runtime;
12811} catch (accidentalStrictMode) {
12812  Function("r", "regeneratorRuntime = r")(runtime);
12813}
12814/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(150)(module)))
12815
12816/***/ }),
12817/* 150 */
12818/***/ (function(module, exports, __w_pdfjs_require__) {
12819
12820"use strict";
12821
12822
12823module.exports = function (module) {
12824  if (!module.webpackPolyfill) {
12825    module.deprecate = function () {};
12826
12827    module.paths = [];
12828    if (!module.children) module.children = [];
12829    Object.defineProperty(module, "loaded", {
12830      enumerable: true,
12831      get: function get() {
12832        return module.l;
12833      }
12834    });
12835    Object.defineProperty(module, "id", {
12836      enumerable: true,
12837      get: function get() {
12838        return module.i;
12839      }
12840    });
12841    module.webpackPolyfill = 1;
12842  }
12843
12844  return module;
12845};
12846
12847/***/ }),
12848/* 151 */
12849/***/ (function(module, exports, __w_pdfjs_require__) {
12850
12851"use strict";
12852
12853
12854Object.defineProperty(exports, "__esModule", {
12855  value: true
12856});
12857exports.addLinkAttributes = addLinkAttributes;
12858exports.getFilenameFromUrl = getFilenameFromUrl;
12859exports.isFetchSupported = isFetchSupported;
12860exports.isValidFetchUrl = isValidFetchUrl;
12861exports.loadScript = loadScript;
12862exports.deprecated = deprecated;
12863exports.releaseImageResources = releaseImageResources;
12864exports.PDFDateString = exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
12865
12866var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
12867
12868var _util = __w_pdfjs_require__(1);
12869
12870function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12871
12872function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
12873
12874function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
12875
12876function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12877
12878function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
12879
12880function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
12881
12882var DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
12883exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
12884var SVG_NS = 'http://www.w3.org/2000/svg';
12885
12886var DOMCanvasFactory =
12887/*#__PURE__*/
12888function () {
12889  function DOMCanvasFactory() {
12890    _classCallCheck(this, DOMCanvasFactory);
12891  }
12892
12893  _createClass(DOMCanvasFactory, [{
12894    key: "create",
12895    value: function create(width, height) {
12896      if (width <= 0 || height <= 0) {
12897        throw new Error('Invalid canvas size');
12898      }
12899
12900      var canvas = document.createElement('canvas');
12901      var context = canvas.getContext('2d');
12902      canvas.width = width;
12903      canvas.height = height;
12904      return {
12905        canvas: canvas,
12906        context: context
12907      };
12908    }
12909  }, {
12910    key: "reset",
12911    value: function reset(canvasAndContext, width, height) {
12912      if (!canvasAndContext.canvas) {
12913        throw new Error('Canvas is not specified');
12914      }
12915
12916      if (width <= 0 || height <= 0) {
12917        throw new Error('Invalid canvas size');
12918      }
12919
12920      canvasAndContext.canvas.width = width;
12921      canvasAndContext.canvas.height = height;
12922    }
12923  }, {
12924    key: "destroy",
12925    value: function destroy(canvasAndContext) {
12926      if (!canvasAndContext.canvas) {
12927        throw new Error('Canvas is not specified');
12928      }
12929
12930      canvasAndContext.canvas.width = 0;
12931      canvasAndContext.canvas.height = 0;
12932      canvasAndContext.canvas = null;
12933      canvasAndContext.context = null;
12934    }
12935  }]);
12936
12937  return DOMCanvasFactory;
12938}();
12939
12940exports.DOMCanvasFactory = DOMCanvasFactory;
12941
12942var DOMCMapReaderFactory =
12943/*#__PURE__*/
12944function () {
12945  function DOMCMapReaderFactory(_ref) {
12946    var _ref$baseUrl = _ref.baseUrl,
12947        baseUrl = _ref$baseUrl === void 0 ? null : _ref$baseUrl,
12948        _ref$isCompressed = _ref.isCompressed,
12949        isCompressed = _ref$isCompressed === void 0 ? false : _ref$isCompressed;
12950
12951    _classCallCheck(this, DOMCMapReaderFactory);
12952
12953    this.baseUrl = baseUrl;
12954    this.isCompressed = isCompressed;
12955  }
12956
12957  _createClass(DOMCMapReaderFactory, [{
12958    key: "fetch",
12959    value: function (_fetch) {
12960      function fetch(_x) {
12961        return _fetch.apply(this, arguments);
12962      }
12963
12964      fetch.toString = function () {
12965        return _fetch.toString();
12966      };
12967
12968      return fetch;
12969    }(
12970    /*#__PURE__*/
12971    function () {
12972      var _ref3 = _asyncToGenerator(
12973      /*#__PURE__*/
12974      _regenerator["default"].mark(function _callee2(_ref2) {
12975        var _this = this;
12976
12977        var name, url, compressionType;
12978        return _regenerator["default"].wrap(function _callee2$(_context2) {
12979          while (1) {
12980            switch (_context2.prev = _context2.next) {
12981              case 0:
12982                name = _ref2.name;
12983
12984                if (this.baseUrl) {
12985                  _context2.next = 3;
12986                  break;
12987                }
12988
12989                throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
12990
12991              case 3:
12992                if (name) {
12993                  _context2.next = 5;
12994                  break;
12995                }
12996
12997                throw new Error('CMap name must be specified.');
12998
12999              case 5:
13000                url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
13001                compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
13002
13003                if (!(isFetchSupported() && isValidFetchUrl(url, document.baseURI))) {
13004                  _context2.next = 9;
13005                  break;
13006                }
13007
13008                return _context2.abrupt("return", fetch(url).then(
13009                /*#__PURE__*/
13010                function () {
13011                  var _ref4 = _asyncToGenerator(
13012                  /*#__PURE__*/
13013                  _regenerator["default"].mark(function _callee(response) {
13014                    var cMapData;
13015                    return _regenerator["default"].wrap(function _callee$(_context) {
13016                      while (1) {
13017                        switch (_context.prev = _context.next) {
13018                          case 0:
13019                            if (response.ok) {
13020                              _context.next = 2;
13021                              break;
13022                            }
13023
13024                            throw new Error(response.statusText);
13025
13026                          case 2:
13027                            if (!_this.isCompressed) {
13028                              _context.next = 10;
13029                              break;
13030                            }
13031
13032                            _context.t0 = Uint8Array;
13033                            _context.next = 6;
13034                            return response.arrayBuffer();
13035
13036                          case 6:
13037                            _context.t1 = _context.sent;
13038                            cMapData = new _context.t0(_context.t1);
13039                            _context.next = 15;
13040                            break;
13041
13042                          case 10:
13043                            _context.t2 = _util.stringToBytes;
13044                            _context.next = 13;
13045                            return response.text();
13046
13047                          case 13:
13048                            _context.t3 = _context.sent;
13049                            cMapData = (0, _context.t2)(_context.t3);
13050
13051                          case 15:
13052                            return _context.abrupt("return", {
13053                              cMapData: cMapData,
13054                              compressionType: compressionType
13055                            });
13056
13057                          case 16:
13058                          case "end":
13059                            return _context.stop();
13060                        }
13061                      }
13062                    }, _callee);
13063                  }));
13064
13065                  return function (_x3) {
13066                    return _ref4.apply(this, arguments);
13067                  };
13068                }())["catch"](function (reason) {
13069                  throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url));
13070                }));
13071
13072              case 9:
13073                return _context2.abrupt("return", new Promise(function (resolve, reject) {
13074                  var request = new XMLHttpRequest();
13075                  request.open('GET', url, true);
13076
13077                  if (_this.isCompressed) {
13078                    request.responseType = 'arraybuffer';
13079                  }
13080
13081                  request.onreadystatechange = function () {
13082                    if (request.readyState !== XMLHttpRequest.DONE) {
13083                      return;
13084                    }
13085
13086                    if (request.status === 200 || request.status === 0) {
13087                      var cMapData;
13088
13089                      if (_this.isCompressed && request.response) {
13090                        cMapData = new Uint8Array(request.response);
13091                      } else if (!_this.isCompressed && request.responseText) {
13092                        cMapData = (0, _util.stringToBytes)(request.responseText);
13093                      }
13094
13095                      if (cMapData) {
13096                        resolve({
13097                          cMapData: cMapData,
13098                          compressionType: compressionType
13099                        });
13100                        return;
13101                      }
13102                    }
13103
13104                    reject(new Error(request.statusText));
13105                  };
13106
13107                  request.send(null);
13108                })["catch"](function (reason) {
13109                  throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url));
13110                }));
13111
13112              case 10:
13113              case "end":
13114                return _context2.stop();
13115            }
13116          }
13117        }, _callee2, this);
13118      }));
13119
13120      return function (_x2) {
13121        return _ref3.apply(this, arguments);
13122      };
13123    }())
13124  }]);
13125
13126  return DOMCMapReaderFactory;
13127}();
13128
13129exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
13130
13131var DOMSVGFactory =
13132/*#__PURE__*/
13133function () {
13134  function DOMSVGFactory() {
13135    _classCallCheck(this, DOMSVGFactory);
13136  }
13137
13138  _createClass(DOMSVGFactory, [{
13139    key: "create",
13140    value: function create(width, height) {
13141      (0, _util.assert)(width > 0 && height > 0, 'Invalid SVG dimensions');
13142      var svg = document.createElementNS(SVG_NS, 'svg:svg');
13143      svg.setAttribute('version', '1.1');
13144      svg.setAttribute('width', width + 'px');
13145      svg.setAttribute('height', height + 'px');
13146      svg.setAttribute('preserveAspectRatio', 'none');
13147      svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
13148      return svg;
13149    }
13150  }, {
13151    key: "createElement",
13152    value: function createElement(type) {
13153      (0, _util.assert)(typeof type === 'string', 'Invalid SVG element type');
13154      return document.createElementNS(SVG_NS, type);
13155    }
13156  }]);
13157
13158  return DOMSVGFactory;
13159}();
13160
13161exports.DOMSVGFactory = DOMSVGFactory;
13162
13163var PageViewport =
13164/*#__PURE__*/
13165function () {
13166  function PageViewport(_ref5) {
13167    var viewBox = _ref5.viewBox,
13168        scale = _ref5.scale,
13169        rotation = _ref5.rotation,
13170        _ref5$offsetX = _ref5.offsetX,
13171        offsetX = _ref5$offsetX === void 0 ? 0 : _ref5$offsetX,
13172        _ref5$offsetY = _ref5.offsetY,
13173        offsetY = _ref5$offsetY === void 0 ? 0 : _ref5$offsetY,
13174        _ref5$dontFlip = _ref5.dontFlip,
13175        dontFlip = _ref5$dontFlip === void 0 ? false : _ref5$dontFlip;
13176
13177    _classCallCheck(this, PageViewport);
13178
13179    this.viewBox = viewBox;
13180    this.scale = scale;
13181    this.rotation = rotation;
13182    this.offsetX = offsetX;
13183    this.offsetY = offsetY;
13184    var centerX = (viewBox[2] + viewBox[0]) / 2;
13185    var centerY = (viewBox[3] + viewBox[1]) / 2;
13186    var rotateA, rotateB, rotateC, rotateD;
13187    rotation = rotation % 360;
13188    rotation = rotation < 0 ? rotation + 360 : rotation;
13189
13190    switch (rotation) {
13191      case 180:
13192        rotateA = -1;
13193        rotateB = 0;
13194        rotateC = 0;
13195        rotateD = 1;
13196        break;
13197
13198      case 90:
13199        rotateA = 0;
13200        rotateB = 1;
13201        rotateC = 1;
13202        rotateD = 0;
13203        break;
13204
13205      case 270:
13206        rotateA = 0;
13207        rotateB = -1;
13208        rotateC = -1;
13209        rotateD = 0;
13210        break;
13211
13212      default:
13213        rotateA = 1;
13214        rotateB = 0;
13215        rotateC = 0;
13216        rotateD = -1;
13217        break;
13218    }
13219
13220    if (dontFlip) {
13221      rotateC = -rotateC;
13222      rotateD = -rotateD;
13223    }
13224
13225    var offsetCanvasX, offsetCanvasY;
13226    var width, height;
13227
13228    if (rotateA === 0) {
13229      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
13230      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
13231      width = Math.abs(viewBox[3] - viewBox[1]) * scale;
13232      height = Math.abs(viewBox[2] - viewBox[0]) * scale;
13233    } else {
13234      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
13235      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
13236      width = Math.abs(viewBox[2] - viewBox[0]) * scale;
13237      height = Math.abs(viewBox[3] - viewBox[1]) * scale;
13238    }
13239
13240    this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
13241    this.width = width;
13242    this.height = height;
13243  }
13244
13245  _createClass(PageViewport, [{
13246    key: "clone",
13247    value: function clone() {
13248      var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13249          _ref6$scale = _ref6.scale,
13250          scale = _ref6$scale === void 0 ? this.scale : _ref6$scale,
13251          _ref6$rotation = _ref6.rotation,
13252          rotation = _ref6$rotation === void 0 ? this.rotation : _ref6$rotation,
13253          _ref6$dontFlip = _ref6.dontFlip,
13254          dontFlip = _ref6$dontFlip === void 0 ? false : _ref6$dontFlip;
13255
13256      return new PageViewport({
13257        viewBox: this.viewBox.slice(),
13258        scale: scale,
13259        rotation: rotation,
13260        offsetX: this.offsetX,
13261        offsetY: this.offsetY,
13262        dontFlip: dontFlip
13263      });
13264    }
13265  }, {
13266    key: "convertToViewportPoint",
13267    value: function convertToViewportPoint(x, y) {
13268      return _util.Util.applyTransform([x, y], this.transform);
13269    }
13270  }, {
13271    key: "convertToViewportRectangle",
13272    value: function convertToViewportRectangle(rect) {
13273      var topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
13274
13275      var bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
13276
13277      return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
13278    }
13279  }, {
13280    key: "convertToPdfPoint",
13281    value: function convertToPdfPoint(x, y) {
13282      return _util.Util.applyInverseTransform([x, y], this.transform);
13283    }
13284  }]);
13285
13286  return PageViewport;
13287}();
13288
13289exports.PageViewport = PageViewport;
13290
13291var RenderingCancelledException = function RenderingCancelledException() {
13292  function RenderingCancelledException(msg, type) {
13293    this.message = msg;
13294    this.type = type;
13295  }
13296
13297  RenderingCancelledException.prototype = new Error();
13298  RenderingCancelledException.prototype.name = 'RenderingCancelledException';
13299  RenderingCancelledException.constructor = RenderingCancelledException;
13300  return RenderingCancelledException;
13301}();
13302
13303exports.RenderingCancelledException = RenderingCancelledException;
13304var LinkTarget = {
13305  NONE: 0,
13306  SELF: 1,
13307  BLANK: 2,
13308  PARENT: 3,
13309  TOP: 4
13310};
13311exports.LinkTarget = LinkTarget;
13312var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top'];
13313
13314function addLinkAttributes(link) {
13315  var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
13316      url = _ref7.url,
13317      target = _ref7.target,
13318      rel = _ref7.rel;
13319
13320  link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : '';
13321
13322  if (url) {
13323    var LinkTargetValues = Object.values(LinkTarget);
13324    var targetIndex = LinkTargetValues.includes(target) ? target : LinkTarget.NONE;
13325    link.target = LinkTargetStringMap[targetIndex];
13326    link.rel = typeof rel === 'string' ? rel : DEFAULT_LINK_REL;
13327  }
13328}
13329
13330function getFilenameFromUrl(url) {
13331  var anchor = url.indexOf('#');
13332  var query = url.indexOf('?');
13333  var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
13334  return url.substring(url.lastIndexOf('/', end) + 1, end);
13335}
13336
13337var StatTimer =
13338/*#__PURE__*/
13339function () {
13340  function StatTimer() {
13341    var enable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
13342
13343    _classCallCheck(this, StatTimer);
13344
13345    this.enabled = !!enable;
13346    this.started = Object.create(null);
13347    this.times = [];
13348  }
13349
13350  _createClass(StatTimer, [{
13351    key: "time",
13352    value: function time(name) {
13353      if (!this.enabled) {
13354        return;
13355      }
13356
13357      if (name in this.started) {
13358        (0, _util.warn)('Timer is already running for ' + name);
13359      }
13360
13361      this.started[name] = Date.now();
13362    }
13363  }, {
13364    key: "timeEnd",
13365    value: function timeEnd(name) {
13366      if (!this.enabled) {
13367        return;
13368      }
13369
13370      if (!(name in this.started)) {
13371        (0, _util.warn)('Timer has not been started for ' + name);
13372      }
13373
13374      this.times.push({
13375        'name': name,
13376        'start': this.started[name],
13377        'end': Date.now()
13378      });
13379      delete this.started[name];
13380    }
13381  }, {
13382    key: "toString",
13383    value: function toString() {
13384      var out = '',
13385          longest = 0;
13386      var _iteratorNormalCompletion = true;
13387      var _didIteratorError = false;
13388      var _iteratorError = undefined;
13389
13390      try {
13391        for (var _iterator = this.times[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
13392          var time = _step.value;
13393          var name = time.name;
13394
13395          if (name.length > longest) {
13396            longest = name.length;
13397          }
13398        }
13399      } catch (err) {
13400        _didIteratorError = true;
13401        _iteratorError = err;
13402      } finally {
13403        try {
13404          if (!_iteratorNormalCompletion && _iterator["return"] != null) {
13405            _iterator["return"]();
13406          }
13407        } finally {
13408          if (_didIteratorError) {
13409            throw _iteratorError;
13410          }
13411        }
13412      }
13413
13414      var _iteratorNormalCompletion2 = true;
13415      var _didIteratorError2 = false;
13416      var _iteratorError2 = undefined;
13417
13418      try {
13419        for (var _iterator2 = this.times[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
13420          var _time = _step2.value;
13421          var duration = _time.end - _time.start;
13422          out += "".concat(_time.name.padEnd(longest), " ").concat(duration, "ms\n");
13423        }
13424      } catch (err) {
13425        _didIteratorError2 = true;
13426        _iteratorError2 = err;
13427      } finally {
13428        try {
13429          if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
13430            _iterator2["return"]();
13431          }
13432        } finally {
13433          if (_didIteratorError2) {
13434            throw _iteratorError2;
13435          }
13436        }
13437      }
13438
13439      return out;
13440    }
13441  }]);
13442
13443  return StatTimer;
13444}();
13445
13446exports.StatTimer = StatTimer;
13447
13448var DummyStatTimer =
13449/*#__PURE__*/
13450function () {
13451  function DummyStatTimer() {
13452    _classCallCheck(this, DummyStatTimer);
13453
13454    (0, _util.unreachable)('Cannot initialize DummyStatTimer.');
13455  }
13456
13457  _createClass(DummyStatTimer, null, [{
13458    key: "time",
13459    value: function time(name) {}
13460  }, {
13461    key: "timeEnd",
13462    value: function timeEnd(name) {}
13463  }, {
13464    key: "toString",
13465    value: function toString() {
13466      return '';
13467    }
13468  }]);
13469
13470  return DummyStatTimer;
13471}();
13472
13473exports.DummyStatTimer = DummyStatTimer;
13474
13475function isFetchSupported() {
13476  return typeof fetch !== 'undefined' && typeof Response !== 'undefined' && 'body' in Response.prototype && typeof ReadableStream !== 'undefined';
13477}
13478
13479function isValidFetchUrl(url, baseUrl) {
13480  try {
13481    var _ref8 = baseUrl ? new _util.URL(url, baseUrl) : new _util.URL(url),
13482        protocol = _ref8.protocol;
13483
13484    return protocol === 'http:' || protocol === 'https:';
13485  } catch (ex) {
13486    return false;
13487  }
13488}
13489
13490function loadScript(src) {
13491  return new Promise(function (resolve, reject) {
13492    var script = document.createElement('script');
13493    script.src = src;
13494    script.onload = resolve;
13495
13496    script.onerror = function () {
13497      reject(new Error("Cannot load script at: ".concat(script.src)));
13498    };
13499
13500    (document.head || document.documentElement).appendChild(script);
13501  });
13502}
13503
13504function deprecated(details) {
13505  console.log('Deprecated API usage: ' + details);
13506}
13507
13508function releaseImageResources(img) {
13509  (0, _util.assert)(img instanceof Image, 'Invalid `img` parameter.');
13510  var url = img.src;
13511
13512  if (typeof url === 'string' && url.startsWith('blob:') && _util.URL.revokeObjectURL) {
13513    _util.URL.revokeObjectURL(url);
13514  }
13515
13516  img.removeAttribute('src');
13517}
13518
13519var pdfDateStringRegex;
13520
13521var PDFDateString =
13522/*#__PURE__*/
13523function () {
13524  function PDFDateString() {
13525    _classCallCheck(this, PDFDateString);
13526  }
13527
13528  _createClass(PDFDateString, null, [{
13529    key: "toDateObject",
13530    value: function toDateObject(input) {
13531      if (!input || !(0, _util.isString)(input)) {
13532        return null;
13533      }
13534
13535      if (!pdfDateStringRegex) {
13536        pdfDateStringRegex = new RegExp('^D:' + '(\\d{4})' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '([Z|+|-])?' + '(\\d{2})?' + '\'?' + '(\\d{2})?' + '\'?');
13537      }
13538
13539      var matches = pdfDateStringRegex.exec(input);
13540
13541      if (!matches) {
13542        return null;
13543      }
13544
13545      var year = parseInt(matches[1], 10);
13546      var month = parseInt(matches[2], 10);
13547      month = month >= 1 && month <= 12 ? month - 1 : 0;
13548      var day = parseInt(matches[3], 10);
13549      day = day >= 1 && day <= 31 ? day : 1;
13550      var hour = parseInt(matches[4], 10);
13551      hour = hour >= 0 && hour <= 23 ? hour : 0;
13552      var minute = parseInt(matches[5], 10);
13553      minute = minute >= 0 && minute <= 59 ? minute : 0;
13554      var second = parseInt(matches[6], 10);
13555      second = second >= 0 && second <= 59 ? second : 0;
13556      var universalTimeRelation = matches[7] || 'Z';
13557      var offsetHour = parseInt(matches[8], 10);
13558      offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
13559      var offsetMinute = parseInt(matches[9], 10) || 0;
13560      offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
13561
13562      if (universalTimeRelation === '-') {
13563        hour += offsetHour;
13564        minute += offsetMinute;
13565      } else if (universalTimeRelation === '+') {
13566        hour -= offsetHour;
13567        minute -= offsetMinute;
13568      }
13569
13570      return new Date(Date.UTC(year, month, day, hour, minute, second));
13571    }
13572  }]);
13573
13574  return PDFDateString;
13575}();
13576
13577exports.PDFDateString = PDFDateString;
13578
13579/***/ }),
13580/* 152 */
13581/***/ (function(module, exports, __w_pdfjs_require__) {
13582
13583"use strict";
13584
13585
13586Object.defineProperty(exports, "__esModule", {
13587  value: true
13588});
13589exports.FontLoader = exports.FontFaceObject = void 0;
13590
13591var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
13592
13593var _util = __w_pdfjs_require__(1);
13594
13595function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13596
13597function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13598
13599function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
13600
13601function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
13602
13603function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
13604
13605function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
13606
13607function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
13608
13609function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
13610
13611function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
13612
13613function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13614
13615function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
13616
13617function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
13618
13619var BaseFontLoader =
13620/*#__PURE__*/
13621function () {
13622  function BaseFontLoader(_ref) {
13623    var docId = _ref.docId,
13624        onUnsupportedFeature = _ref.onUnsupportedFeature;
13625
13626    _classCallCheck(this, BaseFontLoader);
13627
13628    if (this.constructor === BaseFontLoader) {
13629      (0, _util.unreachable)('Cannot initialize BaseFontLoader.');
13630    }
13631
13632    this.docId = docId;
13633    this._onUnsupportedFeature = onUnsupportedFeature;
13634    this.nativeFontFaces = [];
13635    this.styleElement = null;
13636  }
13637
13638  _createClass(BaseFontLoader, [{
13639    key: "addNativeFontFace",
13640    value: function addNativeFontFace(nativeFontFace) {
13641      this.nativeFontFaces.push(nativeFontFace);
13642      document.fonts.add(nativeFontFace);
13643    }
13644  }, {
13645    key: "insertRule",
13646    value: function insertRule(rule) {
13647      var styleElement = this.styleElement;
13648
13649      if (!styleElement) {
13650        styleElement = this.styleElement = document.createElement('style');
13651        styleElement.id = "PDFJS_FONT_STYLE_TAG_".concat(this.docId);
13652        document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement);
13653      }
13654
13655      var styleSheet = styleElement.sheet;
13656      styleSheet.insertRule(rule, styleSheet.cssRules.length);
13657    }
13658  }, {
13659    key: "clear",
13660    value: function clear() {
13661      this.nativeFontFaces.forEach(function (nativeFontFace) {
13662        document.fonts["delete"](nativeFontFace);
13663      });
13664      this.nativeFontFaces.length = 0;
13665
13666      if (this.styleElement) {
13667        this.styleElement.remove();
13668        this.styleElement = null;
13669      }
13670    }
13671  }, {
13672    key: "bind",
13673    value: function () {
13674      var _bind = _asyncToGenerator(
13675      /*#__PURE__*/
13676      _regenerator["default"].mark(function _callee(font) {
13677        var _this = this;
13678
13679        var nativeFontFace, rule;
13680        return _regenerator["default"].wrap(function _callee$(_context) {
13681          while (1) {
13682            switch (_context.prev = _context.next) {
13683              case 0:
13684                if (!(font.attached || font.missingFile)) {
13685                  _context.next = 2;
13686                  break;
13687                }
13688
13689                return _context.abrupt("return", undefined);
13690
13691              case 2:
13692                font.attached = true;
13693
13694                if (!this.isFontLoadingAPISupported) {
13695                  _context.next = 19;
13696                  break;
13697                }
13698
13699                nativeFontFace = font.createNativeFontFace();
13700
13701                if (!nativeFontFace) {
13702                  _context.next = 18;
13703                  break;
13704                }
13705
13706                this.addNativeFontFace(nativeFontFace);
13707                _context.prev = 7;
13708                _context.next = 10;
13709                return nativeFontFace.loaded;
13710
13711              case 10:
13712                _context.next = 18;
13713                break;
13714
13715              case 12:
13716                _context.prev = 12;
13717                _context.t0 = _context["catch"](7);
13718
13719                this._onUnsupportedFeature({
13720                  featureId: _util.UNSUPPORTED_FEATURES.font
13721                });
13722
13723                (0, _util.warn)("Failed to load font '".concat(nativeFontFace.family, "': '").concat(_context.t0, "'."));
13724                font.disableFontFace = true;
13725                throw _context.t0;
13726
13727              case 18:
13728                return _context.abrupt("return", undefined);
13729
13730              case 19:
13731                rule = font.createFontFaceRule();
13732
13733                if (!rule) {
13734                  _context.next = 25;
13735                  break;
13736                }
13737
13738                this.insertRule(rule);
13739
13740                if (!this.isSyncFontLoadingSupported) {
13741                  _context.next = 24;
13742                  break;
13743                }
13744
13745                return _context.abrupt("return", undefined);
13746
13747              case 24:
13748                return _context.abrupt("return", new Promise(function (resolve) {
13749                  var request = _this._queueLoadingCallback(resolve);
13750
13751                  _this._prepareFontLoadEvent([rule], [font], request);
13752                }));
13753
13754              case 25:
13755                return _context.abrupt("return", undefined);
13756
13757              case 26:
13758              case "end":
13759                return _context.stop();
13760            }
13761          }
13762        }, _callee, this, [[7, 12]]);
13763      }));
13764
13765      function bind(_x) {
13766        return _bind.apply(this, arguments);
13767      }
13768
13769      return bind;
13770    }()
13771  }, {
13772    key: "_queueLoadingCallback",
13773    value: function _queueLoadingCallback(callback) {
13774      (0, _util.unreachable)('Abstract method `_queueLoadingCallback`.');
13775    }
13776  }, {
13777    key: "_prepareFontLoadEvent",
13778    value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {
13779      (0, _util.unreachable)('Abstract method `_prepareFontLoadEvent`.');
13780    }
13781  }, {
13782    key: "isFontLoadingAPISupported",
13783    get: function get() {
13784      (0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.');
13785    }
13786  }, {
13787    key: "isSyncFontLoadingSupported",
13788    get: function get() {
13789      (0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.');
13790    }
13791  }, {
13792    key: "_loadTestFont",
13793    get: function get() {
13794      (0, _util.unreachable)('Abstract method `_loadTestFont`.');
13795    }
13796  }]);
13797
13798  return BaseFontLoader;
13799}();
13800
13801var FontLoader;
13802exports.FontLoader = FontLoader;
13803{
13804  exports.FontLoader = FontLoader =
13805  /*#__PURE__*/
13806  function (_BaseFontLoader) {
13807    _inherits(GenericFontLoader, _BaseFontLoader);
13808
13809    function GenericFontLoader(docId) {
13810      var _this2;
13811
13812      _classCallCheck(this, GenericFontLoader);
13813
13814      _this2 = _possibleConstructorReturn(this, _getPrototypeOf(GenericFontLoader).call(this, docId));
13815      _this2.loadingContext = {
13816        requests: [],
13817        nextRequestId: 0
13818      };
13819      _this2.loadTestFontId = 0;
13820      return _this2;
13821    }
13822
13823    _createClass(GenericFontLoader, [{
13824      key: "_queueLoadingCallback",
13825      value: function _queueLoadingCallback(callback) {
13826        function completeRequest() {
13827          (0, _util.assert)(!request.done, 'completeRequest() cannot be called twice.');
13828          request.done = true;
13829
13830          while (context.requests.length > 0 && context.requests[0].done) {
13831            var otherRequest = context.requests.shift();
13832            setTimeout(otherRequest.callback, 0);
13833          }
13834        }
13835
13836        var context = this.loadingContext;
13837        var request = {
13838          id: "pdfjs-font-loading-".concat(context.nextRequestId++),
13839          done: false,
13840          complete: completeRequest,
13841          callback: callback
13842        };
13843        context.requests.push(request);
13844        return request;
13845      }
13846    }, {
13847      key: "_prepareFontLoadEvent",
13848      value: function _prepareFontLoadEvent(rules, fonts, request) {
13849        function int32(data, offset) {
13850          return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
13851        }
13852
13853        function spliceString(s, offset, remove, insert) {
13854          var chunk1 = s.substring(0, offset);
13855          var chunk2 = s.substring(offset + remove);
13856          return chunk1 + insert + chunk2;
13857        }
13858
13859        var i, ii;
13860        var canvas = document.createElement('canvas');
13861        canvas.width = 1;
13862        canvas.height = 1;
13863        var ctx = canvas.getContext('2d');
13864        var called = 0;
13865
13866        function isFontReady(name, callback) {
13867          called++;
13868
13869          if (called > 30) {
13870            (0, _util.warn)('Load test font never loaded.');
13871            callback();
13872            return;
13873          }
13874
13875          ctx.font = '30px ' + name;
13876          ctx.fillText('.', 0, 20);
13877          var imageData = ctx.getImageData(0, 0, 1, 1);
13878
13879          if (imageData.data[3] > 0) {
13880            callback();
13881            return;
13882          }
13883
13884          setTimeout(isFontReady.bind(null, name, callback));
13885        }
13886
13887        var loadTestFontId = "lt".concat(Date.now()).concat(this.loadTestFontId++);
13888        var data = this._loadTestFont;
13889        var COMMENT_OFFSET = 976;
13890        data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
13891        var CFF_CHECKSUM_OFFSET = 16;
13892        var XXXX_VALUE = 0x58585858;
13893        var checksum = int32(data, CFF_CHECKSUM_OFFSET);
13894
13895        for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
13896          checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
13897        }
13898
13899        if (i < loadTestFontId.length) {
13900          checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0;
13901        }
13902
13903        data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
13904        var url = "url(data:font/opentype;base64,".concat(btoa(data), ");");
13905        var rule = "@font-face {font-family:\"".concat(loadTestFontId, "\";src:").concat(url, "}");
13906        this.insertRule(rule);
13907        var names = [];
13908
13909        for (i = 0, ii = fonts.length; i < ii; i++) {
13910          names.push(fonts[i].loadedName);
13911        }
13912
13913        names.push(loadTestFontId);
13914        var div = document.createElement('div');
13915        div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;');
13916
13917        for (i = 0, ii = names.length; i < ii; ++i) {
13918          var span = document.createElement('span');
13919          span.textContent = 'Hi';
13920          span.style.fontFamily = names[i];
13921          div.appendChild(span);
13922        }
13923
13924        document.body.appendChild(div);
13925        isFontReady(loadTestFontId, function () {
13926          document.body.removeChild(div);
13927          request.complete();
13928        });
13929      }
13930    }, {
13931      key: "isFontLoadingAPISupported",
13932      get: function get() {
13933        var supported = typeof document !== 'undefined' && !!document.fonts;
13934
13935        if (supported && typeof navigator !== 'undefined') {
13936          var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
13937
13938          if (m && m[1] < 63) {
13939            supported = false;
13940          }
13941        }
13942
13943        return (0, _util.shadow)(this, 'isFontLoadingAPISupported', supported);
13944      }
13945    }, {
13946      key: "isSyncFontLoadingSupported",
13947      get: function get() {
13948        var supported = false;
13949
13950        if (typeof navigator === 'undefined') {
13951          supported = true;
13952        } else {
13953          var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
13954
13955          if (m && m[1] >= 14) {
13956            supported = true;
13957          }
13958        }
13959
13960        return (0, _util.shadow)(this, 'isSyncFontLoadingSupported', supported);
13961      }
13962    }, {
13963      key: "_loadTestFont",
13964      get: function get() {
13965        var getLoadTestFont = function getLoadTestFont() {
13966          return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA' + 'FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA' + 'ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA' + 'AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1' + 'AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD' + '6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM' + 'AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D' + 'IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA' + 'AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA' + 'AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB' + 'AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY' + 'AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA' + 'AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA' + 'AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC' + 'AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3' + 'Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj' + 'FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==');
13967        };
13968
13969        return (0, _util.shadow)(this, '_loadTestFont', getLoadTestFont());
13970      }
13971    }]);
13972
13973    return GenericFontLoader;
13974  }(BaseFontLoader);
13975}
13976var IsEvalSupportedCached = {
13977  get value() {
13978    return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
13979  }
13980
13981};
13982
13983var FontFaceObject =
13984/*#__PURE__*/
13985function () {
13986  function FontFaceObject(translatedData, _ref2) {
13987    var _ref2$isEvalSupported = _ref2.isEvalSupported,
13988        isEvalSupported = _ref2$isEvalSupported === void 0 ? true : _ref2$isEvalSupported,
13989        _ref2$disableFontFace = _ref2.disableFontFace,
13990        disableFontFace = _ref2$disableFontFace === void 0 ? false : _ref2$disableFontFace,
13991        _ref2$ignoreErrors = _ref2.ignoreErrors,
13992        ignoreErrors = _ref2$ignoreErrors === void 0 ? false : _ref2$ignoreErrors,
13993        _ref2$onUnsupportedFe = _ref2.onUnsupportedFeature,
13994        onUnsupportedFeature = _ref2$onUnsupportedFe === void 0 ? null : _ref2$onUnsupportedFe,
13995        _ref2$fontRegistry = _ref2.fontRegistry,
13996        fontRegistry = _ref2$fontRegistry === void 0 ? null : _ref2$fontRegistry;
13997
13998    _classCallCheck(this, FontFaceObject);
13999
14000    this.compiledGlyphs = Object.create(null);
14001
14002    for (var i in translatedData) {
14003      this[i] = translatedData[i];
14004    }
14005
14006    this.isEvalSupported = isEvalSupported !== false;
14007    this.disableFontFace = disableFontFace === true;
14008    this.ignoreErrors = ignoreErrors === true;
14009    this._onUnsupportedFeature = onUnsupportedFeature;
14010    this.fontRegistry = fontRegistry;
14011  }
14012
14013  _createClass(FontFaceObject, [{
14014    key: "createNativeFontFace",
14015    value: function createNativeFontFace() {
14016      if (!this.data || this.disableFontFace) {
14017        return null;
14018      }
14019
14020      var nativeFontFace = new FontFace(this.loadedName, this.data, {});
14021
14022      if (this.fontRegistry) {
14023        this.fontRegistry.registerFont(this);
14024      }
14025
14026      return nativeFontFace;
14027    }
14028  }, {
14029    key: "createFontFaceRule",
14030    value: function createFontFaceRule() {
14031      if (!this.data || this.disableFontFace) {
14032        return null;
14033      }
14034
14035      var data = (0, _util.bytesToString)(new Uint8Array(this.data));
14036      var url = "url(data:".concat(this.mimetype, ";base64,").concat(btoa(data), ");");
14037      var rule = "@font-face {font-family:\"".concat(this.loadedName, "\";src:").concat(url, "}");
14038
14039      if (this.fontRegistry) {
14040        this.fontRegistry.registerFont(this, url);
14041      }
14042
14043      return rule;
14044    }
14045  }, {
14046    key: "getPathGenerator",
14047    value: function getPathGenerator(objs, character) {
14048      if (this.compiledGlyphs[character] !== undefined) {
14049        return this.compiledGlyphs[character];
14050      }
14051
14052      var cmds, current;
14053
14054      try {
14055        cmds = objs.get(this.loadedName + '_path_' + character);
14056      } catch (ex) {
14057        if (!this.ignoreErrors) {
14058          throw ex;
14059        }
14060
14061        if (this._onUnsupportedFeature) {
14062          this._onUnsupportedFeature({
14063            featureId: _util.UNSUPPORTED_FEATURES.font
14064          });
14065        }
14066
14067        (0, _util.warn)("getPathGenerator - ignoring character: \"".concat(ex, "\"."));
14068        return this.compiledGlyphs[character] = function (c, size) {};
14069      }
14070
14071      if (this.isEvalSupported && IsEvalSupportedCached.value) {
14072        var args,
14073            js = '';
14074
14075        for (var i = 0, ii = cmds.length; i < ii; i++) {
14076          current = cmds[i];
14077
14078          if (current.args !== undefined) {
14079            args = current.args.join(',');
14080          } else {
14081            args = '';
14082          }
14083
14084          js += 'c.' + current.cmd + '(' + args + ');\n';
14085        }
14086
14087        return this.compiledGlyphs[character] = new Function('c', 'size', js);
14088      }
14089
14090      return this.compiledGlyphs[character] = function (c, size) {
14091        for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) {
14092          current = cmds[_i];
14093
14094          if (current.cmd === 'scale') {
14095            current.args = [size, -size];
14096          }
14097
14098          c[current.cmd].apply(c, current.args);
14099        }
14100      };
14101    }
14102  }]);
14103
14104  return FontFaceObject;
14105}();
14106
14107exports.FontFaceObject = FontFaceObject;
14108
14109/***/ }),
14110/* 153 */
14111/***/ (function(module, exports, __w_pdfjs_require__) {
14112
14113"use strict";
14114
14115
14116var compatibilityParams = Object.create(null);
14117{
14118  var isNodeJS = __w_pdfjs_require__(4);
14119
14120  var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || '';
14121  var isIE = /Trident/.test(userAgent);
14122  var isIOSChrome = /CriOS/.test(userAgent);
14123
14124  (function checkOnBlobSupport() {
14125    if (isIE || isIOSChrome) {
14126      compatibilityParams.disableCreateObjectURL = true;
14127    }
14128  })();
14129
14130  (function checkFontFaceAndImage() {
14131    if (isNodeJS()) {
14132      compatibilityParams.disableFontFace = true;
14133      compatibilityParams.nativeImageDecoderSupport = 'none';
14134    }
14135  })();
14136}
14137exports.apiCompatibilityParams = Object.freeze(compatibilityParams);
14138
14139/***/ }),
14140/* 154 */
14141/***/ (function(module, exports, __w_pdfjs_require__) {
14142
14143"use strict";
14144
14145
14146Object.defineProperty(exports, "__esModule", {
14147  value: true
14148});
14149exports.CanvasGraphics = void 0;
14150
14151var _util = __w_pdfjs_require__(1);
14152
14153var _pattern_helper = __w_pdfjs_require__(155);
14154
14155var MIN_FONT_SIZE = 16;
14156var MAX_FONT_SIZE = 100;
14157var MAX_GROUP_SIZE = 4096;
14158var MIN_WIDTH_FACTOR = 0.65;
14159var COMPILE_TYPE3_GLYPHS = true;
14160var MAX_SIZE_TO_COMPILE = 1000;
14161var FULL_CHUNK_HEIGHT = 16;
14162var IsLittleEndianCached = {
14163  get value() {
14164    return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)());
14165  }
14166
14167};
14168
14169function addContextCurrentTransform(ctx) {
14170  if (!ctx.mozCurrentTransform) {
14171    ctx._originalSave = ctx.save;
14172    ctx._originalRestore = ctx.restore;
14173    ctx._originalRotate = ctx.rotate;
14174    ctx._originalScale = ctx.scale;
14175    ctx._originalTranslate = ctx.translate;
14176    ctx._originalTransform = ctx.transform;
14177    ctx._originalSetTransform = ctx.setTransform;
14178    ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];
14179    ctx._transformStack = [];
14180    Object.defineProperty(ctx, 'mozCurrentTransform', {
14181      get: function getCurrentTransform() {
14182        return this._transformMatrix;
14183      }
14184    });
14185    Object.defineProperty(ctx, 'mozCurrentTransformInverse', {
14186      get: function getCurrentTransformInverse() {
14187        var m = this._transformMatrix;
14188        var a = m[0],
14189            b = m[1],
14190            c = m[2],
14191            d = m[3],
14192            e = m[4],
14193            f = m[5];
14194        var ad_bc = a * d - b * c;
14195        var bc_ad = b * c - a * d;
14196        return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];
14197      }
14198    });
14199
14200    ctx.save = function ctxSave() {
14201      var old = this._transformMatrix;
14202
14203      this._transformStack.push(old);
14204
14205      this._transformMatrix = old.slice(0, 6);
14206
14207      this._originalSave();
14208    };
14209
14210    ctx.restore = function ctxRestore() {
14211      var prev = this._transformStack.pop();
14212
14213      if (prev) {
14214        this._transformMatrix = prev;
14215
14216        this._originalRestore();
14217      }
14218    };
14219
14220    ctx.translate = function ctxTranslate(x, y) {
14221      var m = this._transformMatrix;
14222      m[4] = m[0] * x + m[2] * y + m[4];
14223      m[5] = m[1] * x + m[3] * y + m[5];
14224
14225      this._originalTranslate(x, y);
14226    };
14227
14228    ctx.scale = function ctxScale(x, y) {
14229      var m = this._transformMatrix;
14230      m[0] = m[0] * x;
14231      m[1] = m[1] * x;
14232      m[2] = m[2] * y;
14233      m[3] = m[3] * y;
14234
14235      this._originalScale(x, y);
14236    };
14237
14238    ctx.transform = function ctxTransform(a, b, c, d, e, f) {
14239      var m = this._transformMatrix;
14240      this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];
14241
14242      ctx._originalTransform(a, b, c, d, e, f);
14243    };
14244
14245    ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
14246      this._transformMatrix = [a, b, c, d, e, f];
14247
14248      ctx._originalSetTransform(a, b, c, d, e, f);
14249    };
14250
14251    ctx.rotate = function ctxRotate(angle) {
14252      var cosValue = Math.cos(angle);
14253      var sinValue = Math.sin(angle);
14254      var m = this._transformMatrix;
14255      this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];
14256
14257      this._originalRotate(angle);
14258    };
14259  }
14260}
14261
14262var CachedCanvases = function CachedCanvasesClosure() {
14263  function CachedCanvases(canvasFactory) {
14264    this.canvasFactory = canvasFactory;
14265    this.cache = Object.create(null);
14266  }
14267
14268  CachedCanvases.prototype = {
14269    getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {
14270      var canvasEntry;
14271
14272      if (this.cache[id] !== undefined) {
14273        canvasEntry = this.cache[id];
14274        this.canvasFactory.reset(canvasEntry, width, height);
14275        canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);
14276      } else {
14277        canvasEntry = this.canvasFactory.create(width, height);
14278        this.cache[id] = canvasEntry;
14279      }
14280
14281      if (trackTransform) {
14282        addContextCurrentTransform(canvasEntry.context);
14283      }
14284
14285      return canvasEntry;
14286    },
14287    clear: function clear() {
14288      for (var id in this.cache) {
14289        var canvasEntry = this.cache[id];
14290        this.canvasFactory.destroy(canvasEntry);
14291        delete this.cache[id];
14292      }
14293    }
14294  };
14295  return CachedCanvases;
14296}();
14297
14298function compileType3Glyph(imgData) {
14299  var POINT_TO_PROCESS_LIMIT = 1000;
14300  var width = imgData.width,
14301      height = imgData.height;
14302  var i,
14303      j,
14304      j0,
14305      width1 = width + 1;
14306  var points = new Uint8Array(width1 * (height + 1));
14307  var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
14308  var lineSize = width + 7 & ~7,
14309      data0 = imgData.data;
14310  var data = new Uint8Array(lineSize * height),
14311      pos = 0,
14312      ii;
14313
14314  for (i = 0, ii = data0.length; i < ii; i++) {
14315    var mask = 128,
14316        elem = data0[i];
14317
14318    while (mask > 0) {
14319      data[pos++] = elem & mask ? 0 : 255;
14320      mask >>= 1;
14321    }
14322  }
14323
14324  var count = 0;
14325  pos = 0;
14326
14327  if (data[pos] !== 0) {
14328    points[0] = 1;
14329    ++count;
14330  }
14331
14332  for (j = 1; j < width; j++) {
14333    if (data[pos] !== data[pos + 1]) {
14334      points[j] = data[pos] ? 2 : 1;
14335      ++count;
14336    }
14337
14338    pos++;
14339  }
14340
14341  if (data[pos] !== 0) {
14342    points[j] = 2;
14343    ++count;
14344  }
14345
14346  for (i = 1; i < height; i++) {
14347    pos = i * lineSize;
14348    j0 = i * width1;
14349
14350    if (data[pos - lineSize] !== data[pos]) {
14351      points[j0] = data[pos] ? 1 : 8;
14352      ++count;
14353    }
14354
14355    var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
14356
14357    for (j = 1; j < width; j++) {
14358      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
14359
14360      if (POINT_TYPES[sum]) {
14361        points[j0 + j] = POINT_TYPES[sum];
14362        ++count;
14363      }
14364
14365      pos++;
14366    }
14367
14368    if (data[pos - lineSize] !== data[pos]) {
14369      points[j0 + j] = data[pos] ? 2 : 4;
14370      ++count;
14371    }
14372
14373    if (count > POINT_TO_PROCESS_LIMIT) {
14374      return null;
14375    }
14376  }
14377
14378  pos = lineSize * (height - 1);
14379  j0 = i * width1;
14380
14381  if (data[pos] !== 0) {
14382    points[j0] = 8;
14383    ++count;
14384  }
14385
14386  for (j = 1; j < width; j++) {
14387    if (data[pos] !== data[pos + 1]) {
14388      points[j0 + j] = data[pos] ? 4 : 8;
14389      ++count;
14390    }
14391
14392    pos++;
14393  }
14394
14395  if (data[pos] !== 0) {
14396    points[j0 + j] = 4;
14397    ++count;
14398  }
14399
14400  if (count > POINT_TO_PROCESS_LIMIT) {
14401    return null;
14402  }
14403
14404  var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
14405  var outlines = [];
14406
14407  for (i = 0; count && i <= height; i++) {
14408    var p = i * width1;
14409    var end = p + width;
14410
14411    while (p < end && !points[p]) {
14412      p++;
14413    }
14414
14415    if (p === end) {
14416      continue;
14417    }
14418
14419    var coords = [p % width1, i];
14420    var type = points[p],
14421        p0 = p,
14422        pp;
14423
14424    do {
14425      var step = steps[type];
14426
14427      do {
14428        p += step;
14429      } while (!points[p]);
14430
14431      pp = points[p];
14432
14433      if (pp !== 5 && pp !== 10) {
14434        type = pp;
14435        points[p] = 0;
14436      } else {
14437        type = pp & 0x33 * type >> 4;
14438        points[p] &= type >> 2 | type << 2;
14439      }
14440
14441      coords.push(p % width1);
14442      coords.push(p / width1 | 0);
14443
14444      if (!points[p]) {
14445        --count;
14446      }
14447    } while (p0 !== p);
14448
14449    outlines.push(coords);
14450    --i;
14451  }
14452
14453  var drawOutline = function drawOutline(c) {
14454    c.save();
14455    c.scale(1 / width, -1 / height);
14456    c.translate(0, -height);
14457    c.beginPath();
14458
14459    for (var i = 0, ii = outlines.length; i < ii; i++) {
14460      var o = outlines[i];
14461      c.moveTo(o[0], o[1]);
14462
14463      for (var j = 2, jj = o.length; j < jj; j += 2) {
14464        c.lineTo(o[j], o[j + 1]);
14465      }
14466    }
14467
14468    c.fill();
14469    c.beginPath();
14470    c.restore();
14471  };
14472
14473  return drawOutline;
14474}
14475
14476var CanvasExtraState = function CanvasExtraStateClosure() {
14477  function CanvasExtraState() {
14478    this.alphaIsShape = false;
14479    this.fontSize = 0;
14480    this.fontSizeScale = 1;
14481    this.textMatrix = _util.IDENTITY_MATRIX;
14482    this.textMatrixScale = 1;
14483    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
14484    this.leading = 0;
14485    this.x = 0;
14486    this.y = 0;
14487    this.lineX = 0;
14488    this.lineY = 0;
14489    this.charSpacing = 0;
14490    this.wordSpacing = 0;
14491    this.textHScale = 1;
14492    this.textRenderingMode = _util.TextRenderingMode.FILL;
14493    this.textRise = 0;
14494    this.fillColor = '#000000';
14495    this.strokeColor = '#000000';
14496    this.patternFill = false;
14497    this.fillAlpha = 1;
14498    this.strokeAlpha = 1;
14499    this.lineWidth = 1;
14500    this.activeSMask = null;
14501    this.resumeSMaskCtx = null;
14502  }
14503
14504  CanvasExtraState.prototype = {
14505    clone: function CanvasExtraState_clone() {
14506      return Object.create(this);
14507    },
14508    setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {
14509      this.x = x;
14510      this.y = y;
14511    }
14512  };
14513  return CanvasExtraState;
14514}();
14515
14516var CanvasGraphics = function CanvasGraphicsClosure() {
14517  var EXECUTION_TIME = 15;
14518  var EXECUTION_STEPS = 10;
14519
14520  function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer) {
14521    this.ctx = canvasCtx;
14522    this.current = new CanvasExtraState();
14523    this.stateStack = [];
14524    this.pendingClip = null;
14525    this.pendingEOFill = false;
14526    this.res = null;
14527    this.xobjs = null;
14528    this.commonObjs = commonObjs;
14529    this.objs = objs;
14530    this.canvasFactory = canvasFactory;
14531    this.webGLContext = webGLContext;
14532    this.imageLayer = imageLayer;
14533    this.groupStack = [];
14534    this.processingType3 = null;
14535    this.baseTransform = null;
14536    this.baseTransformStack = [];
14537    this.groupLevel = 0;
14538    this.smaskStack = [];
14539    this.smaskCounter = 0;
14540    this.tempSMask = null;
14541    this.cachedCanvases = new CachedCanvases(this.canvasFactory);
14542
14543    if (canvasCtx) {
14544      addContextCurrentTransform(canvasCtx);
14545    }
14546
14547    this._cachedGetSinglePixelWidth = null;
14548  }
14549
14550  function putBinaryImageData(ctx, imgData) {
14551    if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {
14552      ctx.putImageData(imgData, 0, 0);
14553      return;
14554    }
14555
14556    var height = imgData.height,
14557        width = imgData.width;
14558    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
14559    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
14560    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
14561    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
14562    var srcPos = 0,
14563        destPos;
14564    var src = imgData.data;
14565    var dest = chunkImgData.data;
14566    var i, j, thisChunkHeight, elemsInThisChunk;
14567
14568    if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
14569      var srcLength = src.byteLength;
14570      var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
14571      var dest32DataLength = dest32.length;
14572      var fullSrcDiff = width + 7 >> 3;
14573      var white = 0xFFFFFFFF;
14574      var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF;
14575
14576      for (i = 0; i < totalChunks; i++) {
14577        thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
14578        destPos = 0;
14579
14580        for (j = 0; j < thisChunkHeight; j++) {
14581          var srcDiff = srcLength - srcPos;
14582          var k = 0;
14583          var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
14584          var kEndUnrolled = kEnd & ~7;
14585          var mask = 0;
14586          var srcByte = 0;
14587
14588          for (; k < kEndUnrolled; k += 8) {
14589            srcByte = src[srcPos++];
14590            dest32[destPos++] = srcByte & 128 ? white : black;
14591            dest32[destPos++] = srcByte & 64 ? white : black;
14592            dest32[destPos++] = srcByte & 32 ? white : black;
14593            dest32[destPos++] = srcByte & 16 ? white : black;
14594            dest32[destPos++] = srcByte & 8 ? white : black;
14595            dest32[destPos++] = srcByte & 4 ? white : black;
14596            dest32[destPos++] = srcByte & 2 ? white : black;
14597            dest32[destPos++] = srcByte & 1 ? white : black;
14598          }
14599
14600          for (; k < kEnd; k++) {
14601            if (mask === 0) {
14602              srcByte = src[srcPos++];
14603              mask = 128;
14604            }
14605
14606            dest32[destPos++] = srcByte & mask ? white : black;
14607            mask >>= 1;
14608          }
14609        }
14610
14611        while (destPos < dest32DataLength) {
14612          dest32[destPos++] = 0;
14613        }
14614
14615        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
14616      }
14617    } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {
14618      j = 0;
14619      elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
14620
14621      for (i = 0; i < fullChunks; i++) {
14622        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
14623        srcPos += elemsInThisChunk;
14624        ctx.putImageData(chunkImgData, 0, j);
14625        j += FULL_CHUNK_HEIGHT;
14626      }
14627
14628      if (i < totalChunks) {
14629        elemsInThisChunk = width * partialChunkHeight * 4;
14630        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
14631        ctx.putImageData(chunkImgData, 0, j);
14632      }
14633    } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {
14634      thisChunkHeight = FULL_CHUNK_HEIGHT;
14635      elemsInThisChunk = width * thisChunkHeight;
14636
14637      for (i = 0; i < totalChunks; i++) {
14638        if (i >= fullChunks) {
14639          thisChunkHeight = partialChunkHeight;
14640          elemsInThisChunk = width * thisChunkHeight;
14641        }
14642
14643        destPos = 0;
14644
14645        for (j = elemsInThisChunk; j--;) {
14646          dest[destPos++] = src[srcPos++];
14647          dest[destPos++] = src[srcPos++];
14648          dest[destPos++] = src[srcPos++];
14649          dest[destPos++] = 255;
14650        }
14651
14652        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
14653      }
14654    } else {
14655      throw new Error("bad image kind: ".concat(imgData.kind));
14656    }
14657  }
14658
14659  function putBinaryImageMask(ctx, imgData) {
14660    var height = imgData.height,
14661        width = imgData.width;
14662    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
14663    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
14664    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
14665    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
14666    var srcPos = 0;
14667    var src = imgData.data;
14668    var dest = chunkImgData.data;
14669
14670    for (var i = 0; i < totalChunks; i++) {
14671      var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
14672      var destPos = 3;
14673
14674      for (var j = 0; j < thisChunkHeight; j++) {
14675        var mask = 0;
14676
14677        for (var k = 0; k < width; k++) {
14678          if (!mask) {
14679            var elem = src[srcPos++];
14680            mask = 128;
14681          }
14682
14683          dest[destPos] = elem & mask ? 0 : 255;
14684          destPos += 4;
14685          mask >>= 1;
14686        }
14687      }
14688
14689      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
14690    }
14691  }
14692
14693  function copyCtxState(sourceCtx, destCtx) {
14694    var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha', 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', 'globalCompositeOperation', 'font'];
14695
14696    for (var i = 0, ii = properties.length; i < ii; i++) {
14697      var property = properties[i];
14698
14699      if (sourceCtx[property] !== undefined) {
14700        destCtx[property] = sourceCtx[property];
14701      }
14702    }
14703
14704    if (sourceCtx.setLineDash !== undefined) {
14705      destCtx.setLineDash(sourceCtx.getLineDash());
14706      destCtx.lineDashOffset = sourceCtx.lineDashOffset;
14707    }
14708  }
14709
14710  function resetCtxToDefault(ctx) {
14711    ctx.strokeStyle = '#000000';
14712    ctx.fillStyle = '#000000';
14713    ctx.fillRule = 'nonzero';
14714    ctx.globalAlpha = 1;
14715    ctx.lineWidth = 1;
14716    ctx.lineCap = 'butt';
14717    ctx.lineJoin = 'miter';
14718    ctx.miterLimit = 10;
14719    ctx.globalCompositeOperation = 'source-over';
14720    ctx.font = '10px sans-serif';
14721
14722    if (ctx.setLineDash !== undefined) {
14723      ctx.setLineDash([]);
14724      ctx.lineDashOffset = 0;
14725    }
14726  }
14727
14728  function composeSMaskBackdrop(bytes, r0, g0, b0) {
14729    var length = bytes.length;
14730
14731    for (var i = 3; i < length; i += 4) {
14732      var alpha = bytes[i];
14733
14734      if (alpha === 0) {
14735        bytes[i - 3] = r0;
14736        bytes[i - 2] = g0;
14737        bytes[i - 1] = b0;
14738      } else if (alpha < 255) {
14739        var alpha_ = 255 - alpha;
14740        bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
14741        bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
14742        bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
14743      }
14744    }
14745  }
14746
14747  function composeSMaskAlpha(maskData, layerData, transferMap) {
14748    var length = maskData.length;
14749    var scale = 1 / 255;
14750
14751    for (var i = 3; i < length; i += 4) {
14752      var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
14753      layerData[i] = layerData[i] * alpha * scale | 0;
14754    }
14755  }
14756
14757  function composeSMaskLuminosity(maskData, layerData, transferMap) {
14758    var length = maskData.length;
14759
14760    for (var i = 3; i < length; i += 4) {
14761      var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
14762      layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
14763    }
14764  }
14765
14766  function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {
14767    var hasBackdrop = !!backdrop;
14768    var r0 = hasBackdrop ? backdrop[0] : 0;
14769    var g0 = hasBackdrop ? backdrop[1] : 0;
14770    var b0 = hasBackdrop ? backdrop[2] : 0;
14771    var composeFn;
14772
14773    if (subtype === 'Luminosity') {
14774      composeFn = composeSMaskLuminosity;
14775    } else {
14776      composeFn = composeSMaskAlpha;
14777    }
14778
14779    var PIXELS_TO_PROCESS = 1048576;
14780    var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
14781
14782    for (var row = 0; row < height; row += chunkSize) {
14783      var chunkHeight = Math.min(chunkSize, height - row);
14784      var maskData = maskCtx.getImageData(0, row, width, chunkHeight);
14785      var layerData = layerCtx.getImageData(0, row, width, chunkHeight);
14786
14787      if (hasBackdrop) {
14788        composeSMaskBackdrop(maskData.data, r0, g0, b0);
14789      }
14790
14791      composeFn(maskData.data, layerData.data, transferMap);
14792      maskCtx.putImageData(layerData, 0, row);
14793    }
14794  }
14795
14796  function composeSMask(ctx, smask, layerCtx, webGLContext) {
14797    var mask = smask.canvas;
14798    var maskCtx = smask.context;
14799    ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);
14800    var backdrop = smask.backdrop || null;
14801
14802    if (!smask.transferMap && webGLContext.isEnabled) {
14803      var composed = webGLContext.composeSMask({
14804        layer: layerCtx.canvas,
14805        mask: mask,
14806        properties: {
14807          subtype: smask.subtype,
14808          backdrop: backdrop
14809        }
14810      });
14811      ctx.setTransform(1, 0, 0, 1, 0, 0);
14812      ctx.drawImage(composed, smask.offsetX, smask.offsetY);
14813      return;
14814    }
14815
14816    genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap);
14817    ctx.drawImage(mask, 0, 0);
14818  }
14819
14820  var LINE_CAP_STYLES = ['butt', 'round', 'square'];
14821  var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
14822  var NORMAL_CLIP = {};
14823  var EO_CLIP = {};
14824  CanvasGraphics.prototype = {
14825    beginDrawing: function beginDrawing(_ref) {
14826      var transform = _ref.transform,
14827          viewport = _ref.viewport,
14828          _ref$transparency = _ref.transparency,
14829          transparency = _ref$transparency === void 0 ? false : _ref$transparency,
14830          _ref$background = _ref.background,
14831          background = _ref$background === void 0 ? null : _ref$background;
14832      var width = this.ctx.canvas.width;
14833      var height = this.ctx.canvas.height;
14834      this.ctx.save();
14835      this.ctx.fillStyle = background || 'rgb(255, 255, 255)';
14836      this.ctx.fillRect(0, 0, width, height);
14837      this.ctx.restore();
14838
14839      if (transparency) {
14840        var transparentCanvas = this.cachedCanvases.getCanvas('transparent', width, height, true);
14841        this.compositeCtx = this.ctx;
14842        this.transparentCanvas = transparentCanvas.canvas;
14843        this.ctx = transparentCanvas.context;
14844        this.ctx.save();
14845        this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);
14846      }
14847
14848      this.ctx.save();
14849      resetCtxToDefault(this.ctx);
14850
14851      if (transform) {
14852        this.ctx.transform.apply(this.ctx, transform);
14853      }
14854
14855      this.ctx.transform.apply(this.ctx, viewport.transform);
14856      this.baseTransform = this.ctx.mozCurrentTransform.slice();
14857
14858      if (this.imageLayer) {
14859        this.imageLayer.beginLayout();
14860      }
14861    },
14862    executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
14863      var argsArray = operatorList.argsArray;
14864      var fnArray = operatorList.fnArray;
14865      var i = executionStartIdx || 0;
14866      var argsArrayLen = argsArray.length;
14867
14868      if (argsArrayLen === i) {
14869        return i;
14870      }
14871
14872      var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === 'function';
14873      var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
14874      var steps = 0;
14875      var commonObjs = this.commonObjs;
14876      var objs = this.objs;
14877      var fnId;
14878
14879      while (true) {
14880        if (stepper !== undefined && i === stepper.nextBreakPoint) {
14881          stepper.breakIt(i, continueCallback);
14882          return i;
14883        }
14884
14885        fnId = fnArray[i];
14886
14887        if (fnId !== _util.OPS.dependency) {
14888          this[fnId].apply(this, argsArray[i]);
14889        } else {
14890          var _iteratorNormalCompletion = true;
14891          var _didIteratorError = false;
14892          var _iteratorError = undefined;
14893
14894          try {
14895            for (var _iterator = argsArray[i][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
14896              var depObjId = _step.value;
14897              var objsPool = depObjId.startsWith('g_') ? commonObjs : objs;
14898
14899              if (!objsPool.has(depObjId)) {
14900                objsPool.get(depObjId, continueCallback);
14901                return i;
14902              }
14903            }
14904          } catch (err) {
14905            _didIteratorError = true;
14906            _iteratorError = err;
14907          } finally {
14908            try {
14909              if (!_iteratorNormalCompletion && _iterator["return"] != null) {
14910                _iterator["return"]();
14911              }
14912            } finally {
14913              if (_didIteratorError) {
14914                throw _iteratorError;
14915              }
14916            }
14917          }
14918        }
14919
14920        i++;
14921
14922        if (i === argsArrayLen) {
14923          return i;
14924        }
14925
14926        if (chunkOperations && ++steps > EXECUTION_STEPS) {
14927          if (Date.now() > endTime) {
14928            continueCallback();
14929            return i;
14930          }
14931
14932          steps = 0;
14933        }
14934      }
14935    },
14936    endDrawing: function CanvasGraphics_endDrawing() {
14937      if (this.current.activeSMask !== null) {
14938        this.endSMaskGroup();
14939      }
14940
14941      this.ctx.restore();
14942
14943      if (this.transparentCanvas) {
14944        this.ctx = this.compositeCtx;
14945        this.ctx.save();
14946        this.ctx.setTransform(1, 0, 0, 1, 0, 0);
14947        this.ctx.drawImage(this.transparentCanvas, 0, 0);
14948        this.ctx.restore();
14949        this.transparentCanvas = null;
14950      }
14951
14952      this.cachedCanvases.clear();
14953      this.webGLContext.clear();
14954
14955      if (this.imageLayer) {
14956        this.imageLayer.endLayout();
14957      }
14958    },
14959    setLineWidth: function CanvasGraphics_setLineWidth(width) {
14960      this.current.lineWidth = width;
14961      this.ctx.lineWidth = width;
14962    },
14963    setLineCap: function CanvasGraphics_setLineCap(style) {
14964      this.ctx.lineCap = LINE_CAP_STYLES[style];
14965    },
14966    setLineJoin: function CanvasGraphics_setLineJoin(style) {
14967      this.ctx.lineJoin = LINE_JOIN_STYLES[style];
14968    },
14969    setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {
14970      this.ctx.miterLimit = limit;
14971    },
14972    setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
14973      var ctx = this.ctx;
14974
14975      if (ctx.setLineDash !== undefined) {
14976        ctx.setLineDash(dashArray);
14977        ctx.lineDashOffset = dashPhase;
14978      }
14979    },
14980    setRenderingIntent: function setRenderingIntent(intent) {},
14981    setFlatness: function setFlatness(flatness) {},
14982    setGState: function CanvasGraphics_setGState(states) {
14983      for (var i = 0, ii = states.length; i < ii; i++) {
14984        var state = states[i];
14985        var key = state[0];
14986        var value = state[1];
14987
14988        switch (key) {
14989          case 'LW':
14990            this.setLineWidth(value);
14991            break;
14992
14993          case 'LC':
14994            this.setLineCap(value);
14995            break;
14996
14997          case 'LJ':
14998            this.setLineJoin(value);
14999            break;
15000
15001          case 'ML':
15002            this.setMiterLimit(value);
15003            break;
15004
15005          case 'D':
15006            this.setDash(value[0], value[1]);
15007            break;
15008
15009          case 'RI':
15010            this.setRenderingIntent(value);
15011            break;
15012
15013          case 'FL':
15014            this.setFlatness(value);
15015            break;
15016
15017          case 'Font':
15018            this.setFont(value[0], value[1]);
15019            break;
15020
15021          case 'CA':
15022            this.current.strokeAlpha = state[1];
15023            break;
15024
15025          case 'ca':
15026            this.current.fillAlpha = state[1];
15027            this.ctx.globalAlpha = state[1];
15028            break;
15029
15030          case 'BM':
15031            this.ctx.globalCompositeOperation = value;
15032            break;
15033
15034          case 'SMask':
15035            if (this.current.activeSMask) {
15036              if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) {
15037                this.suspendSMaskGroup();
15038              } else {
15039                this.endSMaskGroup();
15040              }
15041            }
15042
15043            this.current.activeSMask = value ? this.tempSMask : null;
15044
15045            if (this.current.activeSMask) {
15046              this.beginSMaskGroup();
15047            }
15048
15049            this.tempSMask = null;
15050            break;
15051        }
15052      }
15053    },
15054    beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {
15055      var activeSMask = this.current.activeSMask;
15056      var drawnWidth = activeSMask.canvas.width;
15057      var drawnHeight = activeSMask.canvas.height;
15058      var cacheId = 'smaskGroupAt' + this.groupLevel;
15059      var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
15060      var currentCtx = this.ctx;
15061      var currentTransform = currentCtx.mozCurrentTransform;
15062      this.ctx.save();
15063      var groupCtx = scratchCanvas.context;
15064      groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
15065      groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
15066      groupCtx.transform.apply(groupCtx, currentTransform);
15067      activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;
15068      copyCtxState(currentCtx, groupCtx);
15069      this.ctx = groupCtx;
15070      this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]);
15071      this.groupStack.push(currentCtx);
15072      this.groupLevel++;
15073    },
15074    suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {
15075      var groupCtx = this.ctx;
15076      this.groupLevel--;
15077      this.ctx = this.groupStack.pop();
15078      composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
15079      this.ctx.restore();
15080      this.ctx.save();
15081      copyCtxState(groupCtx, this.ctx);
15082      this.current.resumeSMaskCtx = groupCtx;
15083
15084      var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
15085
15086      this.ctx.transform.apply(this.ctx, deltaTransform);
15087      groupCtx.save();
15088      groupCtx.setTransform(1, 0, 0, 1, 0, 0);
15089      groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
15090      groupCtx.restore();
15091    },
15092    resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {
15093      var groupCtx = this.current.resumeSMaskCtx;
15094      var currentCtx = this.ctx;
15095      this.ctx = groupCtx;
15096      this.groupStack.push(currentCtx);
15097      this.groupLevel++;
15098    },
15099    endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
15100      var groupCtx = this.ctx;
15101      this.groupLevel--;
15102      this.ctx = this.groupStack.pop();
15103      composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
15104      this.ctx.restore();
15105      copyCtxState(groupCtx, this.ctx);
15106
15107      var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
15108
15109      this.ctx.transform.apply(this.ctx, deltaTransform);
15110    },
15111    save: function CanvasGraphics_save() {
15112      this.ctx.save();
15113      var old = this.current;
15114      this.stateStack.push(old);
15115      this.current = old.clone();
15116      this.current.resumeSMaskCtx = null;
15117    },
15118    restore: function CanvasGraphics_restore() {
15119      if (this.current.resumeSMaskCtx) {
15120        this.resumeSMaskGroup();
15121      }
15122
15123      if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {
15124        this.endSMaskGroup();
15125      }
15126
15127      if (this.stateStack.length !== 0) {
15128        this.current = this.stateStack.pop();
15129        this.ctx.restore();
15130        this.pendingClip = null;
15131        this._cachedGetSinglePixelWidth = null;
15132      }
15133    },
15134    transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
15135      this.ctx.transform(a, b, c, d, e, f);
15136      this._cachedGetSinglePixelWidth = null;
15137    },
15138    constructPath: function CanvasGraphics_constructPath(ops, args) {
15139      var ctx = this.ctx;
15140      var current = this.current;
15141      var x = current.x,
15142          y = current.y;
15143
15144      for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {
15145        switch (ops[i] | 0) {
15146          case _util.OPS.rectangle:
15147            x = args[j++];
15148            y = args[j++];
15149            var width = args[j++];
15150            var height = args[j++];
15151
15152            if (width === 0) {
15153              width = this.getSinglePixelWidth();
15154            }
15155
15156            if (height === 0) {
15157              height = this.getSinglePixelWidth();
15158            }
15159
15160            var xw = x + width;
15161            var yh = y + height;
15162            this.ctx.moveTo(x, y);
15163            this.ctx.lineTo(xw, y);
15164            this.ctx.lineTo(xw, yh);
15165            this.ctx.lineTo(x, yh);
15166            this.ctx.lineTo(x, y);
15167            this.ctx.closePath();
15168            break;
15169
15170          case _util.OPS.moveTo:
15171            x = args[j++];
15172            y = args[j++];
15173            ctx.moveTo(x, y);
15174            break;
15175
15176          case _util.OPS.lineTo:
15177            x = args[j++];
15178            y = args[j++];
15179            ctx.lineTo(x, y);
15180            break;
15181
15182          case _util.OPS.curveTo:
15183            x = args[j + 4];
15184            y = args[j + 5];
15185            ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
15186            j += 6;
15187            break;
15188
15189          case _util.OPS.curveTo2:
15190            ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
15191            x = args[j + 2];
15192            y = args[j + 3];
15193            j += 4;
15194            break;
15195
15196          case _util.OPS.curveTo3:
15197            x = args[j + 2];
15198            y = args[j + 3];
15199            ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
15200            j += 4;
15201            break;
15202
15203          case _util.OPS.closePath:
15204            ctx.closePath();
15205            break;
15206        }
15207      }
15208
15209      current.setCurrentPoint(x, y);
15210    },
15211    closePath: function CanvasGraphics_closePath() {
15212      this.ctx.closePath();
15213    },
15214    stroke: function CanvasGraphics_stroke(consumePath) {
15215      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
15216      var ctx = this.ctx;
15217      var strokeColor = this.current.strokeColor;
15218      ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);
15219      ctx.globalAlpha = this.current.strokeAlpha;
15220
15221      if (strokeColor && strokeColor.hasOwnProperty('type') && strokeColor.type === 'Pattern') {
15222        ctx.save();
15223        ctx.strokeStyle = strokeColor.getPattern(ctx, this);
15224        ctx.stroke();
15225        ctx.restore();
15226      } else {
15227        ctx.stroke();
15228      }
15229
15230      if (consumePath) {
15231        this.consumePath();
15232      }
15233
15234      ctx.globalAlpha = this.current.fillAlpha;
15235    },
15236    closeStroke: function CanvasGraphics_closeStroke() {
15237      this.closePath();
15238      this.stroke();
15239    },
15240    fill: function CanvasGraphics_fill(consumePath) {
15241      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
15242      var ctx = this.ctx;
15243      var fillColor = this.current.fillColor;
15244      var isPatternFill = this.current.patternFill;
15245      var needRestore = false;
15246
15247      if (isPatternFill) {
15248        ctx.save();
15249
15250        if (this.baseTransform) {
15251          ctx.setTransform.apply(ctx, this.baseTransform);
15252        }
15253
15254        ctx.fillStyle = fillColor.getPattern(ctx, this);
15255        needRestore = true;
15256      }
15257
15258      if (this.pendingEOFill) {
15259        ctx.fill('evenodd');
15260        this.pendingEOFill = false;
15261      } else {
15262        ctx.fill();
15263      }
15264
15265      if (needRestore) {
15266        ctx.restore();
15267      }
15268
15269      if (consumePath) {
15270        this.consumePath();
15271      }
15272    },
15273    eoFill: function CanvasGraphics_eoFill() {
15274      this.pendingEOFill = true;
15275      this.fill();
15276    },
15277    fillStroke: function CanvasGraphics_fillStroke() {
15278      this.fill(false);
15279      this.stroke(false);
15280      this.consumePath();
15281    },
15282    eoFillStroke: function CanvasGraphics_eoFillStroke() {
15283      this.pendingEOFill = true;
15284      this.fillStroke();
15285    },
15286    closeFillStroke: function CanvasGraphics_closeFillStroke() {
15287      this.closePath();
15288      this.fillStroke();
15289    },
15290    closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
15291      this.pendingEOFill = true;
15292      this.closePath();
15293      this.fillStroke();
15294    },
15295    endPath: function CanvasGraphics_endPath() {
15296      this.consumePath();
15297    },
15298    clip: function CanvasGraphics_clip() {
15299      this.pendingClip = NORMAL_CLIP;
15300    },
15301    eoClip: function CanvasGraphics_eoClip() {
15302      this.pendingClip = EO_CLIP;
15303    },
15304    beginText: function CanvasGraphics_beginText() {
15305      this.current.textMatrix = _util.IDENTITY_MATRIX;
15306      this.current.textMatrixScale = 1;
15307      this.current.x = this.current.lineX = 0;
15308      this.current.y = this.current.lineY = 0;
15309    },
15310    endText: function CanvasGraphics_endText() {
15311      var paths = this.pendingTextPaths;
15312      var ctx = this.ctx;
15313
15314      if (paths === undefined) {
15315        ctx.beginPath();
15316        return;
15317      }
15318
15319      ctx.save();
15320      ctx.beginPath();
15321
15322      for (var i = 0; i < paths.length; i++) {
15323        var path = paths[i];
15324        ctx.setTransform.apply(ctx, path.transform);
15325        ctx.translate(path.x, path.y);
15326        path.addToPath(ctx, path.fontSize);
15327      }
15328
15329      ctx.restore();
15330      ctx.clip();
15331      ctx.beginPath();
15332      delete this.pendingTextPaths;
15333    },
15334    setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {
15335      this.current.charSpacing = spacing;
15336    },
15337    setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {
15338      this.current.wordSpacing = spacing;
15339    },
15340    setHScale: function CanvasGraphics_setHScale(scale) {
15341      this.current.textHScale = scale / 100;
15342    },
15343    setLeading: function CanvasGraphics_setLeading(leading) {
15344      this.current.leading = -leading;
15345    },
15346    setFont: function CanvasGraphics_setFont(fontRefName, size) {
15347      var fontObj = this.commonObjs.get(fontRefName);
15348      var current = this.current;
15349
15350      if (!fontObj) {
15351        throw new Error("Can't find font for ".concat(fontRefName));
15352      }
15353
15354      current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
15355
15356      if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
15357        (0, _util.warn)('Invalid font matrix for font ' + fontRefName);
15358      }
15359
15360      if (size < 0) {
15361        size = -size;
15362        current.fontDirection = -1;
15363      } else {
15364        current.fontDirection = 1;
15365      }
15366
15367      this.current.font = fontObj;
15368      this.current.fontSize = size;
15369
15370      if (fontObj.isType3Font) {
15371        return;
15372      }
15373
15374      var name = fontObj.loadedName || 'sans-serif';
15375      var bold = fontObj.black ? '900' : fontObj.bold ? 'bold' : 'normal';
15376      var italic = fontObj.italic ? 'italic' : 'normal';
15377      var typeface = "\"".concat(name, "\", ").concat(fontObj.fallbackName);
15378      var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;
15379      this.current.fontSizeScale = size / browserFontSize;
15380      this.ctx.font = "".concat(italic, " ").concat(bold, " ").concat(browserFontSize, "px ").concat(typeface);
15381    },
15382    setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {
15383      this.current.textRenderingMode = mode;
15384    },
15385    setTextRise: function CanvasGraphics_setTextRise(rise) {
15386      this.current.textRise = rise;
15387    },
15388    moveText: function CanvasGraphics_moveText(x, y) {
15389      this.current.x = this.current.lineX += x;
15390      this.current.y = this.current.lineY += y;
15391    },
15392    setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {
15393      this.setLeading(-y);
15394      this.moveText(x, y);
15395    },
15396    setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {
15397      this.current.textMatrix = [a, b, c, d, e, f];
15398      this.current.textMatrixScale = Math.sqrt(a * a + b * b);
15399      this.current.x = this.current.lineX = 0;
15400      this.current.y = this.current.lineY = 0;
15401    },
15402    nextLine: function CanvasGraphics_nextLine() {
15403      this.moveText(0, this.current.leading);
15404    },
15405    paintChar: function paintChar(character, x, y, patternTransform) {
15406      var ctx = this.ctx;
15407      var current = this.current;
15408      var font = current.font;
15409      var textRenderingMode = current.textRenderingMode;
15410      var fontSize = current.fontSize / current.fontSizeScale;
15411      var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
15412      var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
15413      var patternFill = current.patternFill && font.data;
15414      var addToPath;
15415
15416      if (font.disableFontFace || isAddToPathSet || patternFill) {
15417        addToPath = font.getPathGenerator(this.commonObjs, character);
15418      }
15419
15420      if (font.disableFontFace || patternFill) {
15421        ctx.save();
15422        ctx.translate(x, y);
15423        ctx.beginPath();
15424        addToPath(ctx, fontSize);
15425
15426        if (patternTransform) {
15427          ctx.setTransform.apply(ctx, patternTransform);
15428        }
15429
15430        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
15431          ctx.fill();
15432        }
15433
15434        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
15435          ctx.stroke();
15436        }
15437
15438        ctx.restore();
15439      } else {
15440        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
15441          ctx.fillText(character, x, y);
15442        }
15443
15444        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
15445          ctx.strokeText(character, x, y);
15446        }
15447      }
15448
15449      if (isAddToPathSet) {
15450        var paths = this.pendingTextPaths || (this.pendingTextPaths = []);
15451        paths.push({
15452          transform: ctx.mozCurrentTransform,
15453          x: x,
15454          y: y,
15455          fontSize: fontSize,
15456          addToPath: addToPath
15457        });
15458      }
15459    },
15460
15461    get isFontSubpixelAAEnabled() {
15462      var _this$cachedCanvases$ = this.cachedCanvases.getCanvas('isFontSubpixelAAEnabled', 10, 10),
15463          ctx = _this$cachedCanvases$.context;
15464
15465      ctx.scale(1.5, 1);
15466      ctx.fillText('I', 0, 10);
15467      var data = ctx.getImageData(0, 0, 10, 10).data;
15468      var enabled = false;
15469
15470      for (var i = 3; i < data.length; i += 4) {
15471        if (data[i] > 0 && data[i] < 255) {
15472          enabled = true;
15473          break;
15474        }
15475      }
15476
15477      return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled);
15478    },
15479
15480    showText: function CanvasGraphics_showText(glyphs) {
15481      var current = this.current;
15482      var font = current.font;
15483
15484      if (font.isType3Font) {
15485        return this.showType3Text(glyphs);
15486      }
15487
15488      var fontSize = current.fontSize;
15489
15490      if (fontSize === 0) {
15491        return undefined;
15492      }
15493
15494      var ctx = this.ctx;
15495      var fontSizeScale = current.fontSizeScale;
15496      var charSpacing = current.charSpacing;
15497      var wordSpacing = current.wordSpacing;
15498      var fontDirection = current.fontDirection;
15499      var textHScale = current.textHScale * fontDirection;
15500      var glyphsLength = glyphs.length;
15501      var vertical = font.vertical;
15502      var spacingDir = vertical ? 1 : -1;
15503      var defaultVMetrics = font.defaultVMetrics;
15504      var widthAdvanceScale = fontSize * current.fontMatrix[0];
15505      var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;
15506      ctx.save();
15507      var patternTransform;
15508
15509      if (current.patternFill) {
15510        ctx.save();
15511        var pattern = current.fillColor.getPattern(ctx, this);
15512        patternTransform = ctx.mozCurrentTransform;
15513        ctx.restore();
15514        ctx.fillStyle = pattern;
15515      }
15516
15517      ctx.transform.apply(ctx, current.textMatrix);
15518      ctx.translate(current.x, current.y + current.textRise);
15519
15520      if (fontDirection > 0) {
15521        ctx.scale(textHScale, -1);
15522      } else {
15523        ctx.scale(textHScale, 1);
15524      }
15525
15526      var lineWidth = current.lineWidth;
15527      var scale = current.textMatrixScale;
15528
15529      if (scale === 0 || lineWidth === 0) {
15530        var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
15531
15532        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
15533          this._cachedGetSinglePixelWidth = null;
15534          lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;
15535        }
15536      } else {
15537        lineWidth /= scale;
15538      }
15539
15540      if (fontSizeScale !== 1.0) {
15541        ctx.scale(fontSizeScale, fontSizeScale);
15542        lineWidth /= fontSizeScale;
15543      }
15544
15545      ctx.lineWidth = lineWidth;
15546      var x = 0,
15547          i;
15548
15549      for (i = 0; i < glyphsLength; ++i) {
15550        var glyph = glyphs[i];
15551
15552        if ((0, _util.isNum)(glyph)) {
15553          x += spacingDir * glyph * fontSize / 1000;
15554          continue;
15555        }
15556
15557        var restoreNeeded = false;
15558        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
15559        var character = glyph.fontChar;
15560        var accent = glyph.accent;
15561        var scaledX, scaledY, scaledAccentX, scaledAccentY;
15562        var width = glyph.width;
15563
15564        if (vertical) {
15565          var vmetric, vx, vy;
15566          vmetric = glyph.vmetric || defaultVMetrics;
15567          vx = glyph.vmetric ? vmetric[1] : width * 0.5;
15568          vx = -vx * widthAdvanceScale;
15569          vy = vmetric[2] * widthAdvanceScale;
15570          width = vmetric ? -vmetric[0] : width;
15571          scaledX = vx / fontSizeScale;
15572          scaledY = (x + vy) / fontSizeScale;
15573        } else {
15574          scaledX = x / fontSizeScale;
15575          scaledY = 0;
15576        }
15577
15578        if (font.remeasure && width > 0) {
15579          var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
15580
15581          if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
15582            var characterScaleX = width / measuredWidth;
15583            restoreNeeded = true;
15584            ctx.save();
15585            ctx.scale(characterScaleX, 1);
15586            scaledX /= characterScaleX;
15587          } else if (width !== measuredWidth) {
15588            scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
15589          }
15590        }
15591
15592        if (glyph.isInFont || font.missingFile) {
15593          if (simpleFillText && !accent) {
15594            ctx.fillText(character, scaledX, scaledY);
15595          } else {
15596            this.paintChar(character, scaledX, scaledY, patternTransform);
15597
15598            if (accent) {
15599              scaledAccentX = scaledX + accent.offset.x / fontSizeScale;
15600              scaledAccentY = scaledY - accent.offset.y / fontSizeScale;
15601              this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);
15602            }
15603          }
15604        }
15605
15606        var charWidth = width * widthAdvanceScale + spacing * fontDirection;
15607        x += charWidth;
15608
15609        if (restoreNeeded) {
15610          ctx.restore();
15611        }
15612      }
15613
15614      if (vertical) {
15615        current.y -= x * textHScale;
15616      } else {
15617        current.x += x * textHScale;
15618      }
15619
15620      ctx.restore();
15621    },
15622    showType3Text: function CanvasGraphics_showType3Text(glyphs) {
15623      var ctx = this.ctx;
15624      var current = this.current;
15625      var font = current.font;
15626      var fontSize = current.fontSize;
15627      var fontDirection = current.fontDirection;
15628      var spacingDir = font.vertical ? 1 : -1;
15629      var charSpacing = current.charSpacing;
15630      var wordSpacing = current.wordSpacing;
15631      var textHScale = current.textHScale * fontDirection;
15632      var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
15633      var glyphsLength = glyphs.length;
15634      var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
15635      var i, glyph, width, spacingLength;
15636
15637      if (isTextInvisible || fontSize === 0) {
15638        return;
15639      }
15640
15641      this._cachedGetSinglePixelWidth = null;
15642      ctx.save();
15643      ctx.transform.apply(ctx, current.textMatrix);
15644      ctx.translate(current.x, current.y);
15645      ctx.scale(textHScale, fontDirection);
15646
15647      for (i = 0; i < glyphsLength; ++i) {
15648        glyph = glyphs[i];
15649
15650        if ((0, _util.isNum)(glyph)) {
15651          spacingLength = spacingDir * glyph * fontSize / 1000;
15652          this.ctx.translate(spacingLength, 0);
15653          current.x += spacingLength * textHScale;
15654          continue;
15655        }
15656
15657        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
15658        var operatorList = font.charProcOperatorList[glyph.operatorListId];
15659
15660        if (!operatorList) {
15661          (0, _util.warn)("Type3 character \"".concat(glyph.operatorListId, "\" is not available."));
15662          continue;
15663        }
15664
15665        this.processingType3 = glyph;
15666        this.save();
15667        ctx.scale(fontSize, fontSize);
15668        ctx.transform.apply(ctx, fontMatrix);
15669        this.executeOperatorList(operatorList);
15670        this.restore();
15671
15672        var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
15673
15674        width = transformed[0] * fontSize + spacing;
15675        ctx.translate(width, 0);
15676        current.x += width * textHScale;
15677      }
15678
15679      ctx.restore();
15680      this.processingType3 = null;
15681    },
15682    setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {},
15683    setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
15684      this.ctx.rect(llx, lly, urx - llx, ury - lly);
15685      this.clip();
15686      this.endPath();
15687    },
15688    getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {
15689      var _this = this;
15690
15691      var pattern;
15692
15693      if (IR[0] === 'TilingPattern') {
15694        var color = IR[1];
15695        var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
15696        var canvasGraphicsFactory = {
15697          createCanvasGraphics: function createCanvasGraphics(ctx) {
15698            return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory, _this.webGLContext);
15699          }
15700        };
15701        pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);
15702      } else {
15703        pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR);
15704      }
15705
15706      return pattern;
15707    },
15708    setStrokeColorN: function CanvasGraphics_setStrokeColorN() {
15709      this.current.strokeColor = this.getColorN_Pattern(arguments);
15710    },
15711    setFillColorN: function CanvasGraphics_setFillColorN() {
15712      this.current.fillColor = this.getColorN_Pattern(arguments);
15713      this.current.patternFill = true;
15714    },
15715    setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
15716      var color = _util.Util.makeCssRgb(r, g, b);
15717
15718      this.ctx.strokeStyle = color;
15719      this.current.strokeColor = color;
15720    },
15721    setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
15722      var color = _util.Util.makeCssRgb(r, g, b);
15723
15724      this.ctx.fillStyle = color;
15725      this.current.fillColor = color;
15726      this.current.patternFill = false;
15727    },
15728    shadingFill: function CanvasGraphics_shadingFill(patternIR) {
15729      var ctx = this.ctx;
15730      this.save();
15731      var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);
15732      ctx.fillStyle = pattern.getPattern(ctx, this, true);
15733      var inv = ctx.mozCurrentTransformInverse;
15734
15735      if (inv) {
15736        var canvas = ctx.canvas;
15737        var width = canvas.width;
15738        var height = canvas.height;
15739
15740        var bl = _util.Util.applyTransform([0, 0], inv);
15741
15742        var br = _util.Util.applyTransform([0, height], inv);
15743
15744        var ul = _util.Util.applyTransform([width, 0], inv);
15745
15746        var ur = _util.Util.applyTransform([width, height], inv);
15747
15748        var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
15749        var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
15750        var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
15751        var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
15752        this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
15753      } else {
15754        this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
15755      }
15756
15757      this.restore();
15758    },
15759    beginInlineImage: function CanvasGraphics_beginInlineImage() {
15760      (0, _util.unreachable)('Should not call beginInlineImage');
15761    },
15762    beginImageData: function CanvasGraphics_beginImageData() {
15763      (0, _util.unreachable)('Should not call beginImageData');
15764    },
15765    paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) {
15766      this.save();
15767      this.baseTransformStack.push(this.baseTransform);
15768
15769      if (Array.isArray(matrix) && matrix.length === 6) {
15770        this.transform.apply(this, matrix);
15771      }
15772
15773      this.baseTransform = this.ctx.mozCurrentTransform;
15774
15775      if (bbox) {
15776        var width = bbox[2] - bbox[0];
15777        var height = bbox[3] - bbox[1];
15778        this.ctx.rect(bbox[0], bbox[1], width, height);
15779        this.clip();
15780        this.endPath();
15781      }
15782    },
15783    paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
15784      this.restore();
15785      this.baseTransform = this.baseTransformStack.pop();
15786    },
15787    beginGroup: function CanvasGraphics_beginGroup(group) {
15788      this.save();
15789      var currentCtx = this.ctx;
15790
15791      if (!group.isolated) {
15792        (0, _util.info)('TODO: Support non-isolated groups.');
15793      }
15794
15795      if (group.knockout) {
15796        (0, _util.warn)('Knockout groups not supported.');
15797      }
15798
15799      var currentTransform = currentCtx.mozCurrentTransform;
15800
15801      if (group.matrix) {
15802        currentCtx.transform.apply(currentCtx, group.matrix);
15803      }
15804
15805      if (!group.bbox) {
15806        throw new Error('Bounding box is required.');
15807      }
15808
15809      var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
15810
15811      var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
15812      bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
15813      var offsetX = Math.floor(bounds[0]);
15814      var offsetY = Math.floor(bounds[1]);
15815      var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
15816      var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
15817      var scaleX = 1,
15818          scaleY = 1;
15819
15820      if (drawnWidth > MAX_GROUP_SIZE) {
15821        scaleX = drawnWidth / MAX_GROUP_SIZE;
15822        drawnWidth = MAX_GROUP_SIZE;
15823      }
15824
15825      if (drawnHeight > MAX_GROUP_SIZE) {
15826        scaleY = drawnHeight / MAX_GROUP_SIZE;
15827        drawnHeight = MAX_GROUP_SIZE;
15828      }
15829
15830      var cacheId = 'groupAt' + this.groupLevel;
15831
15832      if (group.smask) {
15833        cacheId += '_smask_' + this.smaskCounter++ % 2;
15834      }
15835
15836      var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
15837      var groupCtx = scratchCanvas.context;
15838      groupCtx.scale(1 / scaleX, 1 / scaleY);
15839      groupCtx.translate(-offsetX, -offsetY);
15840      groupCtx.transform.apply(groupCtx, currentTransform);
15841
15842      if (group.smask) {
15843        this.smaskStack.push({
15844          canvas: scratchCanvas.canvas,
15845          context: groupCtx,
15846          offsetX: offsetX,
15847          offsetY: offsetY,
15848          scaleX: scaleX,
15849          scaleY: scaleY,
15850          subtype: group.smask.subtype,
15851          backdrop: group.smask.backdrop,
15852          transferMap: group.smask.transferMap || null,
15853          startTransformInverse: null
15854        });
15855      } else {
15856        currentCtx.setTransform(1, 0, 0, 1, 0, 0);
15857        currentCtx.translate(offsetX, offsetY);
15858        currentCtx.scale(scaleX, scaleY);
15859      }
15860
15861      copyCtxState(currentCtx, groupCtx);
15862      this.ctx = groupCtx;
15863      this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]);
15864      this.groupStack.push(currentCtx);
15865      this.groupLevel++;
15866      this.current.activeSMask = null;
15867    },
15868    endGroup: function CanvasGraphics_endGroup(group) {
15869      this.groupLevel--;
15870      var groupCtx = this.ctx;
15871      this.ctx = this.groupStack.pop();
15872
15873      if (this.ctx.imageSmoothingEnabled !== undefined) {
15874        this.ctx.imageSmoothingEnabled = false;
15875      } else {
15876        this.ctx.mozImageSmoothingEnabled = false;
15877      }
15878
15879      if (group.smask) {
15880        this.tempSMask = this.smaskStack.pop();
15881      } else {
15882        this.ctx.drawImage(groupCtx.canvas, 0, 0);
15883      }
15884
15885      this.restore();
15886    },
15887    beginAnnotations: function CanvasGraphics_beginAnnotations() {
15888      this.save();
15889
15890      if (this.baseTransform) {
15891        this.ctx.setTransform.apply(this.ctx, this.baseTransform);
15892      }
15893    },
15894    endAnnotations: function CanvasGraphics_endAnnotations() {
15895      this.restore();
15896    },
15897    beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) {
15898      this.save();
15899      resetCtxToDefault(this.ctx);
15900      this.current = new CanvasExtraState();
15901
15902      if (Array.isArray(rect) && rect.length === 4) {
15903        var width = rect[2] - rect[0];
15904        var height = rect[3] - rect[1];
15905        this.ctx.rect(rect[0], rect[1], width, height);
15906        this.clip();
15907        this.endPath();
15908      }
15909
15910      this.transform.apply(this, transform);
15911      this.transform.apply(this, matrix);
15912    },
15913    endAnnotation: function CanvasGraphics_endAnnotation() {
15914      this.restore();
15915    },
15916    paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {
15917      var domImage = this.processingType3 ? this.commonObjs.get(objId) : this.objs.get(objId);
15918
15919      if (!domImage) {
15920        (0, _util.warn)('Dependent image isn\'t ready yet');
15921        return;
15922      }
15923
15924      this.save();
15925      var ctx = this.ctx;
15926      ctx.scale(1 / w, -1 / h);
15927      ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, 0, -h, w, h);
15928
15929      if (this.imageLayer) {
15930        var currentTransform = ctx.mozCurrentTransformInverse;
15931        var position = this.getCanvasPosition(0, 0);
15932        this.imageLayer.appendImage({
15933          objId: objId,
15934          left: position[0],
15935          top: position[1],
15936          width: w / currentTransform[0],
15937          height: h / currentTransform[3]
15938        });
15939      }
15940
15941      this.restore();
15942    },
15943    paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {
15944      var ctx = this.ctx;
15945      var width = img.width,
15946          height = img.height;
15947      var fillColor = this.current.fillColor;
15948      var isPatternFill = this.current.patternFill;
15949      var glyph = this.processingType3;
15950
15951      if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
15952        if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
15953          glyph.compiled = compileType3Glyph({
15954            data: img.data,
15955            width: width,
15956            height: height
15957          });
15958        } else {
15959          glyph.compiled = null;
15960        }
15961      }
15962
15963      if (glyph && glyph.compiled) {
15964        glyph.compiled(ctx);
15965        return;
15966      }
15967
15968      var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
15969      var maskCtx = maskCanvas.context;
15970      maskCtx.save();
15971      putBinaryImageMask(maskCtx, img);
15972      maskCtx.globalCompositeOperation = 'source-in';
15973      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
15974      maskCtx.fillRect(0, 0, width, height);
15975      maskCtx.restore();
15976      this.paintInlineImageXObject(maskCanvas.canvas);
15977    },
15978    paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) {
15979      var width = imgData.width;
15980      var height = imgData.height;
15981      var fillColor = this.current.fillColor;
15982      var isPatternFill = this.current.patternFill;
15983      var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
15984      var maskCtx = maskCanvas.context;
15985      maskCtx.save();
15986      putBinaryImageMask(maskCtx, imgData);
15987      maskCtx.globalCompositeOperation = 'source-in';
15988      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
15989      maskCtx.fillRect(0, 0, width, height);
15990      maskCtx.restore();
15991      var ctx = this.ctx;
15992
15993      for (var i = 0, ii = positions.length; i < ii; i += 2) {
15994        ctx.save();
15995        ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);
15996        ctx.scale(1, -1);
15997        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
15998        ctx.restore();
15999      }
16000    },
16001    paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) {
16002      var ctx = this.ctx;
16003      var fillColor = this.current.fillColor;
16004      var isPatternFill = this.current.patternFill;
16005
16006      for (var i = 0, ii = images.length; i < ii; i++) {
16007        var image = images[i];
16008        var width = image.width,
16009            height = image.height;
16010        var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
16011        var maskCtx = maskCanvas.context;
16012        maskCtx.save();
16013        putBinaryImageMask(maskCtx, image);
16014        maskCtx.globalCompositeOperation = 'source-in';
16015        maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
16016        maskCtx.fillRect(0, 0, width, height);
16017        maskCtx.restore();
16018        ctx.save();
16019        ctx.transform.apply(ctx, image.transform);
16020        ctx.scale(1, -1);
16021        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
16022        ctx.restore();
16023      }
16024    },
16025    paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {
16026      var imgData = this.processingType3 ? this.commonObjs.get(objId) : this.objs.get(objId);
16027
16028      if (!imgData) {
16029        (0, _util.warn)('Dependent image isn\'t ready yet');
16030        return;
16031      }
16032
16033      this.paintInlineImageXObject(imgData);
16034    },
16035    paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {
16036      var imgData = this.processingType3 ? this.commonObjs.get(objId) : this.objs.get(objId);
16037
16038      if (!imgData) {
16039        (0, _util.warn)('Dependent image isn\'t ready yet');
16040        return;
16041      }
16042
16043      var width = imgData.width;
16044      var height = imgData.height;
16045      var map = [];
16046
16047      for (var i = 0, ii = positions.length; i < ii; i += 2) {
16048        map.push({
16049          transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
16050          x: 0,
16051          y: 0,
16052          w: width,
16053          h: height
16054        });
16055      }
16056
16057      this.paintInlineImageXObjectGroup(imgData, map);
16058    },
16059    paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) {
16060      var width = imgData.width;
16061      var height = imgData.height;
16062      var ctx = this.ctx;
16063      this.save();
16064      ctx.scale(1 / width, -1 / height);
16065      var currentTransform = ctx.mozCurrentTransformInverse;
16066      var a = currentTransform[0],
16067          b = currentTransform[1];
16068      var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
16069      var c = currentTransform[2],
16070          d = currentTransform[3];
16071      var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
16072      var imgToPaint, tmpCanvas;
16073
16074      if (typeof HTMLElement === 'function' && imgData instanceof HTMLElement || !imgData.data) {
16075        imgToPaint = imgData;
16076      } else {
16077        tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', width, height);
16078        var tmpCtx = tmpCanvas.context;
16079        putBinaryImageData(tmpCtx, imgData);
16080        imgToPaint = tmpCanvas.canvas;
16081      }
16082
16083      var paintWidth = width,
16084          paintHeight = height;
16085      var tmpCanvasId = 'prescale1';
16086
16087      while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
16088        var newWidth = paintWidth,
16089            newHeight = paintHeight;
16090
16091        if (widthScale > 2 && paintWidth > 1) {
16092          newWidth = Math.ceil(paintWidth / 2);
16093          widthScale /= paintWidth / newWidth;
16094        }
16095
16096        if (heightScale > 2 && paintHeight > 1) {
16097          newHeight = Math.ceil(paintHeight / 2);
16098          heightScale /= paintHeight / newHeight;
16099        }
16100
16101        tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
16102        tmpCtx = tmpCanvas.context;
16103        tmpCtx.clearRect(0, 0, newWidth, newHeight);
16104        tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
16105        imgToPaint = tmpCanvas.canvas;
16106        paintWidth = newWidth;
16107        paintHeight = newHeight;
16108        tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';
16109      }
16110
16111      ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);
16112
16113      if (this.imageLayer) {
16114        var position = this.getCanvasPosition(0, -height);
16115        this.imageLayer.appendImage({
16116          imgData: imgData,
16117          left: position[0],
16118          top: position[1],
16119          width: width / currentTransform[0],
16120          height: height / currentTransform[3]
16121        });
16122      }
16123
16124      this.restore();
16125    },
16126    paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {
16127      var ctx = this.ctx;
16128      var w = imgData.width;
16129      var h = imgData.height;
16130      var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);
16131      var tmpCtx = tmpCanvas.context;
16132      putBinaryImageData(tmpCtx, imgData);
16133
16134      for (var i = 0, ii = map.length; i < ii; i++) {
16135        var entry = map[i];
16136        ctx.save();
16137        ctx.transform.apply(ctx, entry.transform);
16138        ctx.scale(1, -1);
16139        ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
16140
16141        if (this.imageLayer) {
16142          var position = this.getCanvasPosition(entry.x, entry.y);
16143          this.imageLayer.appendImage({
16144            imgData: imgData,
16145            left: position[0],
16146            top: position[1],
16147            width: w,
16148            height: h
16149          });
16150        }
16151
16152        ctx.restore();
16153      }
16154    },
16155    paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {
16156      this.ctx.fillRect(0, 0, 1, 1);
16157    },
16158    paintXObject: function CanvasGraphics_paintXObject() {
16159      (0, _util.warn)('Unsupported \'paintXObject\' command.');
16160    },
16161    markPoint: function CanvasGraphics_markPoint(tag) {},
16162    markPointProps: function CanvasGraphics_markPointProps(tag, properties) {},
16163    beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {},
16164    beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {},
16165    endMarkedContent: function CanvasGraphics_endMarkedContent() {},
16166    beginCompat: function CanvasGraphics_beginCompat() {},
16167    endCompat: function CanvasGraphics_endCompat() {},
16168    consumePath: function CanvasGraphics_consumePath() {
16169      var ctx = this.ctx;
16170
16171      if (this.pendingClip) {
16172        if (this.pendingClip === EO_CLIP) {
16173          ctx.clip('evenodd');
16174        } else {
16175          ctx.clip();
16176        }
16177
16178        this.pendingClip = null;
16179      }
16180
16181      ctx.beginPath();
16182    },
16183    getSinglePixelWidth: function getSinglePixelWidth(scale) {
16184      if (this._cachedGetSinglePixelWidth === null) {
16185        var inverse = this.ctx.mozCurrentTransformInverse;
16186        this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3]));
16187      }
16188
16189      return this._cachedGetSinglePixelWidth;
16190    },
16191    getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {
16192      var transform = this.ctx.mozCurrentTransform;
16193      return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];
16194    }
16195  };
16196
16197  for (var op in _util.OPS) {
16198    CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
16199  }
16200
16201  return CanvasGraphics;
16202}();
16203
16204exports.CanvasGraphics = CanvasGraphics;
16205
16206/***/ }),
16207/* 155 */
16208/***/ (function(module, exports, __w_pdfjs_require__) {
16209
16210"use strict";
16211
16212
16213Object.defineProperty(exports, "__esModule", {
16214  value: true
16215});
16216exports.getShadingPatternFromIR = getShadingPatternFromIR;
16217exports.TilingPattern = void 0;
16218
16219var _util = __w_pdfjs_require__(1);
16220
16221var ShadingIRs = {};
16222ShadingIRs.RadialAxial = {
16223  fromIR: function RadialAxial_fromIR(raw) {
16224    var type = raw[1];
16225    var colorStops = raw[2];
16226    var p0 = raw[3];
16227    var p1 = raw[4];
16228    var r0 = raw[5];
16229    var r1 = raw[6];
16230    return {
16231      type: 'Pattern',
16232      getPattern: function RadialAxial_getPattern(ctx) {
16233        var grad;
16234
16235        if (type === 'axial') {
16236          grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
16237        } else if (type === 'radial') {
16238          grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
16239        }
16240
16241        for (var i = 0, ii = colorStops.length; i < ii; ++i) {
16242          var c = colorStops[i];
16243          grad.addColorStop(c[0], c[1]);
16244        }
16245
16246        return grad;
16247      }
16248    };
16249  }
16250};
16251
16252var createMeshCanvas = function createMeshCanvasClosure() {
16253  function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
16254    var coords = context.coords,
16255        colors = context.colors;
16256    var bytes = data.data,
16257        rowSize = data.width * 4;
16258    var tmp;
16259
16260    if (coords[p1 + 1] > coords[p2 + 1]) {
16261      tmp = p1;
16262      p1 = p2;
16263      p2 = tmp;
16264      tmp = c1;
16265      c1 = c2;
16266      c2 = tmp;
16267    }
16268
16269    if (coords[p2 + 1] > coords[p3 + 1]) {
16270      tmp = p2;
16271      p2 = p3;
16272      p3 = tmp;
16273      tmp = c2;
16274      c2 = c3;
16275      c3 = tmp;
16276    }
16277
16278    if (coords[p1 + 1] > coords[p2 + 1]) {
16279      tmp = p1;
16280      p1 = p2;
16281      p2 = tmp;
16282      tmp = c1;
16283      c1 = c2;
16284      c2 = tmp;
16285    }
16286
16287    var x1 = (coords[p1] + context.offsetX) * context.scaleX;
16288    var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
16289    var x2 = (coords[p2] + context.offsetX) * context.scaleX;
16290    var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
16291    var x3 = (coords[p3] + context.offsetX) * context.scaleX;
16292    var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
16293
16294    if (y1 >= y3) {
16295      return;
16296    }
16297
16298    var c1r = colors[c1],
16299        c1g = colors[c1 + 1],
16300        c1b = colors[c1 + 2];
16301    var c2r = colors[c2],
16302        c2g = colors[c2 + 1],
16303        c2b = colors[c2 + 2];
16304    var c3r = colors[c3],
16305        c3g = colors[c3 + 1],
16306        c3b = colors[c3 + 2];
16307    var minY = Math.round(y1),
16308        maxY = Math.round(y3);
16309    var xa, car, cag, cab;
16310    var xb, cbr, cbg, cbb;
16311    var k;
16312
16313    for (var y = minY; y <= maxY; y++) {
16314      if (y < y2) {
16315        k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);
16316        xa = x1 - (x1 - x2) * k;
16317        car = c1r - (c1r - c2r) * k;
16318        cag = c1g - (c1g - c2g) * k;
16319        cab = c1b - (c1b - c2b) * k;
16320      } else {
16321        k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);
16322        xa = x2 - (x2 - x3) * k;
16323        car = c2r - (c2r - c3r) * k;
16324        cag = c2g - (c2g - c3g) * k;
16325        cab = c2b - (c2b - c3b) * k;
16326      }
16327
16328      k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);
16329      xb = x1 - (x1 - x3) * k;
16330      cbr = c1r - (c1r - c3r) * k;
16331      cbg = c1g - (c1g - c3g) * k;
16332      cbb = c1b - (c1b - c3b) * k;
16333      var x1_ = Math.round(Math.min(xa, xb));
16334      var x2_ = Math.round(Math.max(xa, xb));
16335      var j = rowSize * y + x1_ * 4;
16336
16337      for (var x = x1_; x <= x2_; x++) {
16338        k = (xa - x) / (xa - xb);
16339        k = k < 0 ? 0 : k > 1 ? 1 : k;
16340        bytes[j++] = car - (car - cbr) * k | 0;
16341        bytes[j++] = cag - (cag - cbg) * k | 0;
16342        bytes[j++] = cab - (cab - cbb) * k | 0;
16343        bytes[j++] = 255;
16344      }
16345    }
16346  }
16347
16348  function drawFigure(data, figure, context) {
16349    var ps = figure.coords;
16350    var cs = figure.colors;
16351    var i, ii;
16352
16353    switch (figure.type) {
16354      case 'lattice':
16355        var verticesPerRow = figure.verticesPerRow;
16356        var rows = Math.floor(ps.length / verticesPerRow) - 1;
16357        var cols = verticesPerRow - 1;
16358
16359        for (i = 0; i < rows; i++) {
16360          var q = i * verticesPerRow;
16361
16362          for (var j = 0; j < cols; j++, q++) {
16363            drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);
16364            drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
16365          }
16366        }
16367
16368        break;
16369
16370      case 'triangles':
16371        for (i = 0, ii = ps.length; i < ii; i += 3) {
16372          drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);
16373        }
16374
16375        break;
16376
16377      default:
16378        throw new Error('illegal figure');
16379    }
16380  }
16381
16382  function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {
16383    var EXPECTED_SCALE = 1.1;
16384    var MAX_PATTERN_SIZE = 3000;
16385    var BORDER_SIZE = 2;
16386    var offsetX = Math.floor(bounds[0]);
16387    var offsetY = Math.floor(bounds[1]);
16388    var boundsWidth = Math.ceil(bounds[2]) - offsetX;
16389    var boundsHeight = Math.ceil(bounds[3]) - offsetY;
16390    var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
16391    var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
16392    var scaleX = boundsWidth / width;
16393    var scaleY = boundsHeight / height;
16394    var context = {
16395      coords: coords,
16396      colors: colors,
16397      offsetX: -offsetX,
16398      offsetY: -offsetY,
16399      scaleX: 1 / scaleX,
16400      scaleY: 1 / scaleY
16401    };
16402    var paddedWidth = width + BORDER_SIZE * 2;
16403    var paddedHeight = height + BORDER_SIZE * 2;
16404    var canvas, tmpCanvas, i, ii;
16405
16406    if (webGLContext.isEnabled) {
16407      canvas = webGLContext.drawFigures({
16408        width: width,
16409        height: height,
16410        backgroundColor: backgroundColor,
16411        figures: figures,
16412        context: context
16413      });
16414      tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);
16415      tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);
16416      canvas = tmpCanvas.canvas;
16417    } else {
16418      tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);
16419      var tmpCtx = tmpCanvas.context;
16420      var data = tmpCtx.createImageData(width, height);
16421
16422      if (backgroundColor) {
16423        var bytes = data.data;
16424
16425        for (i = 0, ii = bytes.length; i < ii; i += 4) {
16426          bytes[i] = backgroundColor[0];
16427          bytes[i + 1] = backgroundColor[1];
16428          bytes[i + 2] = backgroundColor[2];
16429          bytes[i + 3] = 255;
16430        }
16431      }
16432
16433      for (i = 0; i < figures.length; i++) {
16434        drawFigure(data, figures[i], context);
16435      }
16436
16437      tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);
16438      canvas = tmpCanvas.canvas;
16439    }
16440
16441    return {
16442      canvas: canvas,
16443      offsetX: offsetX - BORDER_SIZE * scaleX,
16444      offsetY: offsetY - BORDER_SIZE * scaleY,
16445      scaleX: scaleX,
16446      scaleY: scaleY
16447    };
16448  }
16449
16450  return createMeshCanvas;
16451}();
16452
16453ShadingIRs.Mesh = {
16454  fromIR: function Mesh_fromIR(raw) {
16455    var coords = raw[2];
16456    var colors = raw[3];
16457    var figures = raw[4];
16458    var bounds = raw[5];
16459    var matrix = raw[6];
16460    var background = raw[8];
16461    return {
16462      type: 'Pattern',
16463      getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {
16464        var scale;
16465
16466        if (shadingFill) {
16467          scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
16468        } else {
16469          scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
16470
16471          if (matrix) {
16472            var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);
16473
16474            scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
16475          }
16476        }
16477
16478        var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);
16479
16480        if (!shadingFill) {
16481          ctx.setTransform.apply(ctx, owner.baseTransform);
16482
16483          if (matrix) {
16484            ctx.transform.apply(ctx, matrix);
16485          }
16486        }
16487
16488        ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
16489        ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);
16490        return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');
16491      }
16492    };
16493  }
16494};
16495ShadingIRs.Dummy = {
16496  fromIR: function Dummy_fromIR() {
16497    return {
16498      type: 'Pattern',
16499      getPattern: function Dummy_fromIR_getPattern() {
16500        return 'hotpink';
16501      }
16502    };
16503  }
16504};
16505
16506function getShadingPatternFromIR(raw) {
16507  var shadingIR = ShadingIRs[raw[0]];
16508
16509  if (!shadingIR) {
16510    throw new Error("Unknown IR type: ".concat(raw[0]));
16511  }
16512
16513  return shadingIR.fromIR(raw);
16514}
16515
16516var TilingPattern = function TilingPatternClosure() {
16517  var PaintType = {
16518    COLORED: 1,
16519    UNCOLORED: 2
16520  };
16521  var MAX_PATTERN_SIZE = 3000;
16522
16523  function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
16524    this.operatorList = IR[2];
16525    this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
16526    this.bbox = IR[4];
16527    this.xstep = IR[5];
16528    this.ystep = IR[6];
16529    this.paintType = IR[7];
16530    this.tilingType = IR[8];
16531    this.color = color;
16532    this.canvasGraphicsFactory = canvasGraphicsFactory;
16533    this.baseTransform = baseTransform;
16534    this.type = 'Pattern';
16535    this.ctx = ctx;
16536  }
16537
16538  TilingPattern.prototype = {
16539    createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {
16540      var operatorList = this.operatorList;
16541      var bbox = this.bbox;
16542      var xstep = this.xstep;
16543      var ystep = this.ystep;
16544      var paintType = this.paintType;
16545      var tilingType = this.tilingType;
16546      var color = this.color;
16547      var canvasGraphicsFactory = this.canvasGraphicsFactory;
16548      (0, _util.info)('TilingType: ' + tilingType);
16549      var x0 = bbox[0],
16550          y0 = bbox[1],
16551          x1 = bbox[2],
16552          y1 = bbox[3];
16553
16554      var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
16555
16556      var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
16557
16558      var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
16559      var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
16560      var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
16561      var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', dimx.size, dimy.size, true);
16562      var tmpCtx = tmpCanvas.context;
16563      var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
16564      graphics.groupLevel = owner.groupLevel;
16565      this.setFillAndStrokeStyleToContext(graphics, paintType, color);
16566      graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
16567      graphics.transform(1, 0, 0, 1, -x0, -y0);
16568      this.clipBbox(graphics, bbox, x0, y0, x1, y1);
16569      graphics.executeOperatorList(operatorList);
16570      this.ctx.transform(1, 0, 0, 1, x0, y0);
16571      this.ctx.scale(1 / dimx.scale, 1 / dimy.scale);
16572      return tmpCanvas.canvas;
16573    },
16574    getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) {
16575      step = Math.abs(step);
16576      var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);
16577      var size = Math.ceil(step * scale);
16578
16579      if (size >= maxSize) {
16580        size = maxSize;
16581      } else {
16582        scale = size / step;
16583      }
16584
16585      return {
16586        scale: scale,
16587        size: size
16588      };
16589    },
16590    clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {
16591      if (Array.isArray(bbox) && bbox.length === 4) {
16592        var bboxWidth = x1 - x0;
16593        var bboxHeight = y1 - y0;
16594        graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
16595        graphics.clip();
16596        graphics.endPath();
16597      }
16598    },
16599    setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {
16600      var context = graphics.ctx,
16601          current = graphics.current;
16602
16603      switch (paintType) {
16604        case PaintType.COLORED:
16605          var ctx = this.ctx;
16606          context.fillStyle = ctx.fillStyle;
16607          context.strokeStyle = ctx.strokeStyle;
16608          current.fillColor = ctx.fillStyle;
16609          current.strokeColor = ctx.strokeStyle;
16610          break;
16611
16612        case PaintType.UNCOLORED:
16613          var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);
16614
16615          context.fillStyle = cssColor;
16616          context.strokeStyle = cssColor;
16617          current.fillColor = cssColor;
16618          current.strokeColor = cssColor;
16619          break;
16620
16621        default:
16622          throw new _util.FormatError("Unsupported paint type: ".concat(paintType));
16623      }
16624    },
16625    getPattern: function TilingPattern_getPattern(ctx, owner) {
16626      ctx = this.ctx;
16627      ctx.setTransform.apply(ctx, this.baseTransform);
16628      ctx.transform.apply(ctx, this.matrix);
16629      var temporaryPatternCanvas = this.createPatternCanvas(owner);
16630      return ctx.createPattern(temporaryPatternCanvas, 'repeat');
16631    }
16632  };
16633  return TilingPattern;
16634}();
16635
16636exports.TilingPattern = TilingPattern;
16637
16638/***/ }),
16639/* 156 */
16640/***/ (function(module, exports, __w_pdfjs_require__) {
16641
16642"use strict";
16643
16644
16645Object.defineProperty(exports, "__esModule", {
16646  value: true
16647});
16648exports.GlobalWorkerOptions = void 0;
16649var GlobalWorkerOptions = Object.create(null);
16650exports.GlobalWorkerOptions = GlobalWorkerOptions;
16651GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;
16652GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? '' : GlobalWorkerOptions.workerSrc;
16653
16654/***/ }),
16655/* 157 */
16656/***/ (function(module, exports, __w_pdfjs_require__) {
16657
16658"use strict";
16659
16660
16661Object.defineProperty(exports, "__esModule", {
16662  value: true
16663});
16664exports.MessageHandler = MessageHandler;
16665
16666var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
16667
16668var _util = __w_pdfjs_require__(1);
16669
16670function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
16671
16672function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16673
16674function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
16675
16676function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
16677
16678function resolveCall(_x, _x2) {
16679  return _resolveCall.apply(this, arguments);
16680}
16681
16682function _resolveCall() {
16683  _resolveCall = _asyncToGenerator(
16684  /*#__PURE__*/
16685  _regenerator["default"].mark(function _callee(fn, args) {
16686    var thisArg,
16687        _args = arguments;
16688    return _regenerator["default"].wrap(function _callee$(_context) {
16689      while (1) {
16690        switch (_context.prev = _context.next) {
16691          case 0:
16692            thisArg = _args.length > 2 && _args[2] !== undefined ? _args[2] : null;
16693
16694            if (fn) {
16695              _context.next = 3;
16696              break;
16697            }
16698
16699            return _context.abrupt("return", undefined);
16700
16701          case 3:
16702            return _context.abrupt("return", fn.apply(thisArg, args));
16703
16704          case 4:
16705          case "end":
16706            return _context.stop();
16707        }
16708      }
16709    }, _callee);
16710  }));
16711  return _resolveCall.apply(this, arguments);
16712}
16713
16714function wrapReason(reason) {
16715  if (_typeof(reason) !== 'object') {
16716    return reason;
16717  }
16718
16719  switch (reason.name) {
16720    case 'AbortException':
16721      return new _util.AbortException(reason.message);
16722
16723    case 'MissingPDFException':
16724      return new _util.MissingPDFException(reason.message);
16725
16726    case 'UnexpectedResponseException':
16727      return new _util.UnexpectedResponseException(reason.message, reason.status);
16728
16729    default:
16730      return new _util.UnknownErrorException(reason.message, reason.details);
16731  }
16732}
16733
16734function makeReasonSerializable(reason) {
16735  if (!(reason instanceof Error) || reason instanceof _util.AbortException || reason instanceof _util.MissingPDFException || reason instanceof _util.UnexpectedResponseException || reason instanceof _util.UnknownErrorException) {
16736    return reason;
16737  }
16738
16739  return new _util.UnknownErrorException(reason.message, reason.toString());
16740}
16741
16742function resolveOrReject(capability, success, reason) {
16743  if (success) {
16744    capability.resolve();
16745  } else {
16746    capability.reject(reason);
16747  }
16748}
16749
16750function finalize(promise) {
16751  return Promise.resolve(promise)["catch"](function () {});
16752}
16753
16754function MessageHandler(sourceName, targetName, comObj) {
16755  var _this = this;
16756
16757  this.sourceName = sourceName;
16758  this.targetName = targetName;
16759  this.comObj = comObj;
16760  this.callbackId = 1;
16761  this.streamId = 1;
16762  this.postMessageTransfers = true;
16763  this.streamSinks = Object.create(null);
16764  this.streamControllers = Object.create(null);
16765  var callbacksCapabilities = this.callbacksCapabilities = Object.create(null);
16766  var ah = this.actionHandler = Object.create(null);
16767
16768  this._onComObjOnMessage = function (event) {
16769    var data = event.data;
16770
16771    if (data.targetName !== _this.sourceName) {
16772      return;
16773    }
16774
16775    if (data.stream) {
16776      _this._processStreamMessage(data);
16777    } else if (data.isReply) {
16778      var callbackId = data.callbackId;
16779
16780      if (data.callbackId in callbacksCapabilities) {
16781        var callback = callbacksCapabilities[callbackId];
16782        delete callbacksCapabilities[callbackId];
16783
16784        if ('error' in data) {
16785          callback.reject(wrapReason(data.error));
16786        } else {
16787          callback.resolve(data.data);
16788        }
16789      } else {
16790        throw new Error("Cannot resolve callback ".concat(callbackId));
16791      }
16792    } else if (data.action in ah) {
16793      var action = ah[data.action];
16794
16795      if (data.callbackId) {
16796        var _sourceName = _this.sourceName;
16797        var _targetName = data.sourceName;
16798        Promise.resolve().then(function () {
16799          return action[0].call(action[1], data.data);
16800        }).then(function (result) {
16801          comObj.postMessage({
16802            sourceName: _sourceName,
16803            targetName: _targetName,
16804            isReply: true,
16805            callbackId: data.callbackId,
16806            data: result
16807          });
16808        }, function (reason) {
16809          comObj.postMessage({
16810            sourceName: _sourceName,
16811            targetName: _targetName,
16812            isReply: true,
16813            callbackId: data.callbackId,
16814            error: makeReasonSerializable(reason)
16815          });
16816        });
16817      } else if (data.streamId) {
16818        _this._createStreamSink(data);
16819      } else {
16820        action[0].call(action[1], data.data);
16821      }
16822    } else {
16823      throw new Error("Unknown action from worker: ".concat(data.action));
16824    }
16825  };
16826
16827  comObj.addEventListener('message', this._onComObjOnMessage);
16828}
16829
16830MessageHandler.prototype = {
16831  on: function on(actionName, handler, scope) {
16832    var ah = this.actionHandler;
16833
16834    if (ah[actionName]) {
16835      throw new Error("There is already an actionName called \"".concat(actionName, "\""));
16836    }
16837
16838    ah[actionName] = [handler, scope];
16839  },
16840  send: function send(actionName, data, transfers) {
16841    var message = {
16842      sourceName: this.sourceName,
16843      targetName: this.targetName,
16844      action: actionName,
16845      data: data
16846    };
16847    this.postMessage(message, transfers);
16848  },
16849  sendWithPromise: function sendWithPromise(actionName, data, transfers) {
16850    var callbackId = this.callbackId++;
16851    var message = {
16852      sourceName: this.sourceName,
16853      targetName: this.targetName,
16854      action: actionName,
16855      data: data,
16856      callbackId: callbackId
16857    };
16858    var capability = (0, _util.createPromiseCapability)();
16859    this.callbacksCapabilities[callbackId] = capability;
16860
16861    try {
16862      this.postMessage(message, transfers);
16863    } catch (e) {
16864      capability.reject(e);
16865    }
16866
16867    return capability.promise;
16868  },
16869  sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) {
16870    var _this2 = this;
16871
16872    var streamId = this.streamId++;
16873    var sourceName = this.sourceName;
16874    var targetName = this.targetName;
16875    return new _util.ReadableStream({
16876      start: function start(controller) {
16877        var startCapability = (0, _util.createPromiseCapability)();
16878        _this2.streamControllers[streamId] = {
16879          controller: controller,
16880          startCall: startCapability,
16881          isClosed: false
16882        };
16883
16884        _this2.postMessage({
16885          sourceName: sourceName,
16886          targetName: targetName,
16887          action: actionName,
16888          streamId: streamId,
16889          data: data,
16890          desiredSize: controller.desiredSize
16891        });
16892
16893        return startCapability.promise;
16894      },
16895      pull: function pull(controller) {
16896        var pullCapability = (0, _util.createPromiseCapability)();
16897        _this2.streamControllers[streamId].pullCall = pullCapability;
16898
16899        _this2.postMessage({
16900          sourceName: sourceName,
16901          targetName: targetName,
16902          stream: 'pull',
16903          streamId: streamId,
16904          desiredSize: controller.desiredSize
16905        });
16906
16907        return pullCapability.promise;
16908      },
16909      cancel: function cancel(reason) {
16910        var cancelCapability = (0, _util.createPromiseCapability)();
16911        _this2.streamControllers[streamId].cancelCall = cancelCapability;
16912        _this2.streamControllers[streamId].isClosed = true;
16913
16914        _this2.postMessage({
16915          sourceName: sourceName,
16916          targetName: targetName,
16917          stream: 'cancel',
16918          reason: reason,
16919          streamId: streamId
16920        });
16921
16922        return cancelCapability.promise;
16923      }
16924    }, queueingStrategy);
16925  },
16926  _createStreamSink: function _createStreamSink(data) {
16927    var _this3 = this;
16928
16929    var self = this;
16930    var action = this.actionHandler[data.action];
16931    var streamId = data.streamId;
16932    var desiredSize = data.desiredSize;
16933    var sourceName = this.sourceName;
16934    var targetName = data.sourceName;
16935    var capability = (0, _util.createPromiseCapability)();
16936
16937    var sendStreamRequest = function sendStreamRequest(_ref) {
16938      var stream = _ref.stream,
16939          chunk = _ref.chunk,
16940          transfers = _ref.transfers,
16941          success = _ref.success,
16942          reason = _ref.reason;
16943
16944      _this3.postMessage({
16945        sourceName: sourceName,
16946        targetName: targetName,
16947        stream: stream,
16948        streamId: streamId,
16949        chunk: chunk,
16950        success: success,
16951        reason: reason
16952      }, transfers);
16953    };
16954
16955    var streamSink = {
16956      enqueue: function enqueue(chunk) {
16957        var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
16958        var transfers = arguments.length > 2 ? arguments[2] : undefined;
16959
16960        if (this.isCancelled) {
16961          return;
16962        }
16963
16964        var lastDesiredSize = this.desiredSize;
16965        this.desiredSize -= size;
16966
16967        if (lastDesiredSize > 0 && this.desiredSize <= 0) {
16968          this.sinkCapability = (0, _util.createPromiseCapability)();
16969          this.ready = this.sinkCapability.promise;
16970        }
16971
16972        sendStreamRequest({
16973          stream: 'enqueue',
16974          chunk: chunk,
16975          transfers: transfers
16976        });
16977      },
16978      close: function close() {
16979        if (this.isCancelled) {
16980          return;
16981        }
16982
16983        this.isCancelled = true;
16984        sendStreamRequest({
16985          stream: 'close'
16986        });
16987        delete self.streamSinks[streamId];
16988      },
16989      error: function error(reason) {
16990        if (this.isCancelled) {
16991          return;
16992        }
16993
16994        this.isCancelled = true;
16995        sendStreamRequest({
16996          stream: 'error',
16997          reason: reason
16998        });
16999      },
17000      sinkCapability: capability,
17001      onPull: null,
17002      onCancel: null,
17003      isCancelled: false,
17004      desiredSize: desiredSize,
17005      ready: null
17006    };
17007    streamSink.sinkCapability.resolve();
17008    streamSink.ready = streamSink.sinkCapability.promise;
17009    this.streamSinks[streamId] = streamSink;
17010    resolveCall(action[0], [data.data, streamSink], action[1]).then(function () {
17011      sendStreamRequest({
17012        stream: 'start_complete',
17013        success: true
17014      });
17015    }, function (reason) {
17016      sendStreamRequest({
17017        stream: 'start_complete',
17018        success: false,
17019        reason: reason
17020      });
17021    });
17022  },
17023  _processStreamMessage: function _processStreamMessage(data) {
17024    var _this4 = this;
17025
17026    var sourceName = this.sourceName;
17027    var targetName = data.sourceName;
17028    var streamId = data.streamId;
17029
17030    var sendStreamResponse = function sendStreamResponse(_ref2) {
17031      var stream = _ref2.stream,
17032          success = _ref2.success,
17033          reason = _ref2.reason;
17034
17035      _this4.comObj.postMessage({
17036        sourceName: sourceName,
17037        targetName: targetName,
17038        stream: stream,
17039        success: success,
17040        streamId: streamId,
17041        reason: reason
17042      });
17043    };
17044
17045    var deleteStreamController = function deleteStreamController() {
17046      Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) {
17047        return capability && finalize(capability.promise);
17048      })).then(function () {
17049        delete _this4.streamControllers[data.streamId];
17050      });
17051    };
17052
17053    switch (data.stream) {
17054      case 'start_complete':
17055        resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason));
17056        break;
17057
17058      case 'pull_complete':
17059        resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason));
17060        break;
17061
17062      case 'pull':
17063        if (!this.streamSinks[data.streamId]) {
17064          sendStreamResponse({
17065            stream: 'pull_complete',
17066            success: true
17067          });
17068          break;
17069        }
17070
17071        if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) {
17072          this.streamSinks[data.streamId].sinkCapability.resolve();
17073        }
17074
17075        this.streamSinks[data.streamId].desiredSize = data.desiredSize;
17076        resolveCall(this.streamSinks[data.streamId].onPull).then(function () {
17077          sendStreamResponse({
17078            stream: 'pull_complete',
17079            success: true
17080          });
17081        }, function (reason) {
17082          sendStreamResponse({
17083            stream: 'pull_complete',
17084            success: false,
17085            reason: reason
17086          });
17087        });
17088        break;
17089
17090      case 'enqueue':
17091        (0, _util.assert)(this.streamControllers[data.streamId], 'enqueue should have stream controller');
17092
17093        if (!this.streamControllers[data.streamId].isClosed) {
17094          this.streamControllers[data.streamId].controller.enqueue(data.chunk);
17095        }
17096
17097        break;
17098
17099      case 'close':
17100        (0, _util.assert)(this.streamControllers[data.streamId], 'close should have stream controller');
17101
17102        if (this.streamControllers[data.streamId].isClosed) {
17103          break;
17104        }
17105
17106        this.streamControllers[data.streamId].isClosed = true;
17107        this.streamControllers[data.streamId].controller.close();
17108        deleteStreamController();
17109        break;
17110
17111      case 'error':
17112        (0, _util.assert)(this.streamControllers[data.streamId], 'error should have stream controller');
17113        this.streamControllers[data.streamId].controller.error(wrapReason(data.reason));
17114        deleteStreamController();
17115        break;
17116
17117      case 'cancel_complete':
17118        resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason));
17119        deleteStreamController();
17120        break;
17121
17122      case 'cancel':
17123        if (!this.streamSinks[data.streamId]) {
17124          break;
17125        }
17126
17127        resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () {
17128          sendStreamResponse({
17129            stream: 'cancel_complete',
17130            success: true
17131          });
17132        }, function (reason) {
17133          sendStreamResponse({
17134            stream: 'cancel_complete',
17135            success: false,
17136            reason: reason
17137          });
17138        });
17139        this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason));
17140        this.streamSinks[data.streamId].isCancelled = true;
17141        delete this.streamSinks[data.streamId];
17142        break;
17143
17144      default:
17145        throw new Error('Unexpected stream case');
17146    }
17147  },
17148  postMessage: function postMessage(message, transfers) {
17149    if (transfers && this.postMessageTransfers) {
17150      this.comObj.postMessage(message, transfers);
17151    } else {
17152      this.comObj.postMessage(message);
17153    }
17154  },
17155  destroy: function destroy() {
17156    this.comObj.removeEventListener('message', this._onComObjOnMessage);
17157  }
17158};
17159
17160/***/ }),
17161/* 158 */
17162/***/ (function(module, exports, __w_pdfjs_require__) {
17163
17164"use strict";
17165
17166
17167Object.defineProperty(exports, "__esModule", {
17168  value: true
17169});
17170exports.Metadata = void 0;
17171
17172var _util = __w_pdfjs_require__(1);
17173
17174var _xml_parser = __w_pdfjs_require__(159);
17175
17176function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17177
17178function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
17179
17180function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
17181
17182var Metadata =
17183/*#__PURE__*/
17184function () {
17185  function Metadata(data) {
17186    _classCallCheck(this, Metadata);
17187
17188    (0, _util.assert)(typeof data === 'string', 'Metadata: input is not a string');
17189    data = this._repair(data);
17190    var parser = new _xml_parser.SimpleXMLParser();
17191    var xmlDocument = parser.parseFromString(data);
17192    this._metadata = Object.create(null);
17193
17194    if (xmlDocument) {
17195      this._parse(xmlDocument);
17196    }
17197  }
17198
17199  _createClass(Metadata, [{
17200    key: "_repair",
17201    value: function _repair(data) {
17202      return data.replace(/^([^<]+)/, '').replace(/>\\376\\377([^<]+)/g, function (all, codes) {
17203        var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {
17204          return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
17205        }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {
17206          switch (name) {
17207            case 'amp':
17208              return '&';
17209
17210            case 'apos':
17211              return '\'';
17212
17213            case 'gt':
17214              return '>';
17215
17216            case 'lt':
17217              return '<';
17218
17219            case 'quot':
17220              return '\"';
17221          }
17222
17223          throw new Error("_repair: ".concat(name, " isn't defined."));
17224        });
17225        var chars = '';
17226
17227        for (var i = 0, ii = bytes.length; i < ii; i += 2) {
17228          var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
17229
17230          if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {
17231            chars += String.fromCharCode(code);
17232          } else {
17233            chars += '&#x' + (0x10000 + code).toString(16).substring(1) + ';';
17234          }
17235        }
17236
17237        return '>' + chars;
17238      });
17239    }
17240  }, {
17241    key: "_parse",
17242    value: function _parse(xmlDocument) {
17243      var rdf = xmlDocument.documentElement;
17244
17245      if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
17246        rdf = rdf.firstChild;
17247
17248        while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
17249          rdf = rdf.nextSibling;
17250        }
17251      }
17252
17253      var nodeName = rdf ? rdf.nodeName.toLowerCase() : null;
17254
17255      if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {
17256        return;
17257      }
17258
17259      var children = rdf.childNodes;
17260
17261      for (var i = 0, ii = children.length; i < ii; i++) {
17262        var desc = children[i];
17263
17264        if (desc.nodeName.toLowerCase() !== 'rdf:description') {
17265          continue;
17266        }
17267
17268        for (var j = 0, jj = desc.childNodes.length; j < jj; j++) {
17269          if (desc.childNodes[j].nodeName.toLowerCase() !== '#text') {
17270            var entry = desc.childNodes[j];
17271            var name = entry.nodeName.toLowerCase();
17272            this._metadata[name] = entry.textContent.trim();
17273          }
17274        }
17275      }
17276    }
17277  }, {
17278    key: "get",
17279    value: function get(name) {
17280      var data = this._metadata[name];
17281      return typeof data !== 'undefined' ? data : null;
17282    }
17283  }, {
17284    key: "getAll",
17285    value: function getAll() {
17286      return this._metadata;
17287    }
17288  }, {
17289    key: "has",
17290    value: function has(name) {
17291      return typeof this._metadata[name] !== 'undefined';
17292    }
17293  }]);
17294
17295  return Metadata;
17296}();
17297
17298exports.Metadata = Metadata;
17299
17300/***/ }),
17301/* 159 */
17302/***/ (function(module, exports, __w_pdfjs_require__) {
17303
17304"use strict";
17305
17306
17307Object.defineProperty(exports, "__esModule", {
17308  value: true
17309});
17310exports.SimpleXMLParser = void 0;
17311
17312function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17313
17314function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
17315
17316function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
17317
17318function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
17319
17320function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17321
17322function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
17323
17324function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
17325
17326function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
17327
17328function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
17329
17330function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
17331
17332function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
17333
17334function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
17335
17336function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17337
17338function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
17339
17340function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
17341
17342var XMLParserErrorCode = {
17343  NoError: 0,
17344  EndOfDocument: -1,
17345  UnterminatedCdat: -2,
17346  UnterminatedXmlDeclaration: -3,
17347  UnterminatedDoctypeDeclaration: -4,
17348  UnterminatedComment: -5,
17349  MalformedElement: -6,
17350  OutOfMemory: -7,
17351  UnterminatedAttributeValue: -8,
17352  UnterminatedElement: -9,
17353  ElementNeverBegun: -10
17354};
17355
17356function isWhitespace(s, index) {
17357  var ch = s[index];
17358  return ch === ' ' || ch === '\n' || ch === '\r' || ch === '\t';
17359}
17360
17361function isWhitespaceString(s) {
17362  for (var i = 0, ii = s.length; i < ii; i++) {
17363    if (!isWhitespace(s, i)) {
17364      return false;
17365    }
17366  }
17367
17368  return true;
17369}
17370
17371var XMLParserBase =
17372/*#__PURE__*/
17373function () {
17374  function XMLParserBase() {
17375    _classCallCheck(this, XMLParserBase);
17376  }
17377
17378  _createClass(XMLParserBase, [{
17379    key: "_resolveEntities",
17380    value: function _resolveEntities(s) {
17381      var _this = this;
17382
17383      return s.replace(/&([^;]+);/g, function (all, entity) {
17384        if (entity.substring(0, 2) === '#x') {
17385          return String.fromCharCode(parseInt(entity.substring(2), 16));
17386        } else if (entity.substring(0, 1) === '#') {
17387          return String.fromCharCode(parseInt(entity.substring(1), 10));
17388        }
17389
17390        switch (entity) {
17391          case 'lt':
17392            return '<';
17393
17394          case 'gt':
17395            return '>';
17396
17397          case 'amp':
17398            return '&';
17399
17400          case 'quot':
17401            return '\"';
17402        }
17403
17404        return _this.onResolveEntity(entity);
17405      });
17406    }
17407  }, {
17408    key: "_parseContent",
17409    value: function _parseContent(s, start) {
17410      var pos = start,
17411          name,
17412          attributes = [];
17413
17414      function skipWs() {
17415        while (pos < s.length && isWhitespace(s, pos)) {
17416          ++pos;
17417        }
17418      }
17419
17420      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') {
17421        ++pos;
17422      }
17423
17424      name = s.substring(start, pos);
17425      skipWs();
17426
17427      while (pos < s.length && s[pos] !== '>' && s[pos] !== '/' && s[pos] !== '?') {
17428        skipWs();
17429        var attrName = '',
17430            attrValue = '';
17431
17432        while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '=') {
17433          attrName += s[pos];
17434          ++pos;
17435        }
17436
17437        skipWs();
17438
17439        if (s[pos] !== '=') {
17440          return null;
17441        }
17442
17443        ++pos;
17444        skipWs();
17445        var attrEndChar = s[pos];
17446
17447        if (attrEndChar !== '\"' && attrEndChar !== '\'') {
17448          return null;
17449        }
17450
17451        var attrEndIndex = s.indexOf(attrEndChar, ++pos);
17452
17453        if (attrEndIndex < 0) {
17454          return null;
17455        }
17456
17457        attrValue = s.substring(pos, attrEndIndex);
17458        attributes.push({
17459          name: attrName,
17460          value: this._resolveEntities(attrValue)
17461        });
17462        pos = attrEndIndex + 1;
17463        skipWs();
17464      }
17465
17466      return {
17467        name: name,
17468        attributes: attributes,
17469        parsed: pos - start
17470      };
17471    }
17472  }, {
17473    key: "_parseProcessingInstruction",
17474    value: function _parseProcessingInstruction(s, start) {
17475      var pos = start,
17476          name,
17477          value;
17478
17479      function skipWs() {
17480        while (pos < s.length && isWhitespace(s, pos)) {
17481          ++pos;
17482        }
17483      }
17484
17485      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') {
17486        ++pos;
17487      }
17488
17489      name = s.substring(start, pos);
17490      skipWs();
17491      var attrStart = pos;
17492
17493      while (pos < s.length && (s[pos] !== '?' || s[pos + 1] !== '>')) {
17494        ++pos;
17495      }
17496
17497      value = s.substring(attrStart, pos);
17498      return {
17499        name: name,
17500        value: value,
17501        parsed: pos - start
17502      };
17503    }
17504  }, {
17505    key: "parseXml",
17506    value: function parseXml(s) {
17507      var i = 0;
17508
17509      while (i < s.length) {
17510        var ch = s[i];
17511        var j = i;
17512
17513        if (ch === '<') {
17514          ++j;
17515          var ch2 = s[j];
17516          var q = void 0;
17517
17518          switch (ch2) {
17519            case '/':
17520              ++j;
17521              q = s.indexOf('>', j);
17522
17523              if (q < 0) {
17524                this.onError(XMLParserErrorCode.UnterminatedElement);
17525                return;
17526              }
17527
17528              this.onEndElement(s.substring(j, q));
17529              j = q + 1;
17530              break;
17531
17532            case '?':
17533              ++j;
17534
17535              var pi = this._parseProcessingInstruction(s, j);
17536
17537              if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== '?>') {
17538                this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);
17539                return;
17540              }
17541
17542              this.onPi(pi.name, pi.value);
17543              j += pi.parsed + 2;
17544              break;
17545
17546            case '!':
17547              if (s.substring(j + 1, j + 3) === '--') {
17548                q = s.indexOf('-->', j + 3);
17549
17550                if (q < 0) {
17551                  this.onError(XMLParserErrorCode.UnterminatedComment);
17552                  return;
17553                }
17554
17555                this.onComment(s.substring(j + 3, q));
17556                j = q + 3;
17557              } else if (s.substring(j + 1, j + 8) === '[CDATA[') {
17558                q = s.indexOf(']]>', j + 8);
17559
17560                if (q < 0) {
17561                  this.onError(XMLParserErrorCode.UnterminatedCdat);
17562                  return;
17563                }
17564
17565                this.onCdata(s.substring(j + 8, q));
17566                j = q + 3;
17567              } else if (s.substring(j + 1, j + 8) === 'DOCTYPE') {
17568                var q2 = s.indexOf('[', j + 8);
17569                var complexDoctype = false;
17570                q = s.indexOf('>', j + 8);
17571
17572                if (q < 0) {
17573                  this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
17574                  return;
17575                }
17576
17577                if (q2 > 0 && q > q2) {
17578                  q = s.indexOf(']>', j + 8);
17579
17580                  if (q < 0) {
17581                    this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
17582                    return;
17583                  }
17584
17585                  complexDoctype = true;
17586                }
17587
17588                var doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));
17589                this.onDoctype(doctypeContent);
17590                j = q + (complexDoctype ? 2 : 1);
17591              } else {
17592                this.onError(XMLParserErrorCode.MalformedElement);
17593                return;
17594              }
17595
17596              break;
17597
17598            default:
17599              var content = this._parseContent(s, j);
17600
17601              if (content === null) {
17602                this.onError(XMLParserErrorCode.MalformedElement);
17603                return;
17604              }
17605
17606              var isClosed = false;
17607
17608              if (s.substring(j + content.parsed, j + content.parsed + 2) === '/>') {
17609                isClosed = true;
17610              } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== '>') {
17611                this.onError(XMLParserErrorCode.UnterminatedElement);
17612                return;
17613              }
17614
17615              this.onBeginElement(content.name, content.attributes, isClosed);
17616              j += content.parsed + (isClosed ? 2 : 1);
17617              break;
17618          }
17619        } else {
17620          while (j < s.length && s[j] !== '<') {
17621            j++;
17622          }
17623
17624          var text = s.substring(i, j);
17625          this.onText(this._resolveEntities(text));
17626        }
17627
17628        i = j;
17629      }
17630    }
17631  }, {
17632    key: "onResolveEntity",
17633    value: function onResolveEntity(name) {
17634      return "&".concat(name, ";");
17635    }
17636  }, {
17637    key: "onPi",
17638    value: function onPi(name, value) {}
17639  }, {
17640    key: "onComment",
17641    value: function onComment(text) {}
17642  }, {
17643    key: "onCdata",
17644    value: function onCdata(text) {}
17645  }, {
17646    key: "onDoctype",
17647    value: function onDoctype(doctypeContent) {}
17648  }, {
17649    key: "onText",
17650    value: function onText(text) {}
17651  }, {
17652    key: "onBeginElement",
17653    value: function onBeginElement(name, attributes, isEmpty) {}
17654  }, {
17655    key: "onEndElement",
17656    value: function onEndElement(name) {}
17657  }, {
17658    key: "onError",
17659    value: function onError(code) {}
17660  }]);
17661
17662  return XMLParserBase;
17663}();
17664
17665var SimpleDOMNode =
17666/*#__PURE__*/
17667function () {
17668  function SimpleDOMNode(nodeName, nodeValue) {
17669    _classCallCheck(this, SimpleDOMNode);
17670
17671    this.nodeName = nodeName;
17672    this.nodeValue = nodeValue;
17673    Object.defineProperty(this, 'parentNode', {
17674      value: null,
17675      writable: true
17676    });
17677  }
17678
17679  _createClass(SimpleDOMNode, [{
17680    key: "hasChildNodes",
17681    value: function hasChildNodes() {
17682      return this.childNodes && this.childNodes.length > 0;
17683    }
17684  }, {
17685    key: "firstChild",
17686    get: function get() {
17687      return this.childNodes && this.childNodes[0];
17688    }
17689  }, {
17690    key: "nextSibling",
17691    get: function get() {
17692      var childNodes = this.parentNode.childNodes;
17693
17694      if (!childNodes) {
17695        return undefined;
17696      }
17697
17698      var index = childNodes.indexOf(this);
17699
17700      if (index === -1) {
17701        return undefined;
17702      }
17703
17704      return childNodes[index + 1];
17705    }
17706  }, {
17707    key: "textContent",
17708    get: function get() {
17709      if (!this.childNodes) {
17710        return this.nodeValue || '';
17711      }
17712
17713      return this.childNodes.map(function (child) {
17714        return child.textContent;
17715      }).join('');
17716    }
17717  }]);
17718
17719  return SimpleDOMNode;
17720}();
17721
17722var SimpleXMLParser =
17723/*#__PURE__*/
17724function (_XMLParserBase) {
17725  _inherits(SimpleXMLParser, _XMLParserBase);
17726
17727  function SimpleXMLParser() {
17728    var _this2;
17729
17730    _classCallCheck(this, SimpleXMLParser);
17731
17732    _this2 = _possibleConstructorReturn(this, _getPrototypeOf(SimpleXMLParser).call(this));
17733    _this2._currentFragment = null;
17734    _this2._stack = null;
17735    _this2._errorCode = XMLParserErrorCode.NoError;
17736    return _this2;
17737  }
17738
17739  _createClass(SimpleXMLParser, [{
17740    key: "parseFromString",
17741    value: function parseFromString(data) {
17742      this._currentFragment = [];
17743      this._stack = [];
17744      this._errorCode = XMLParserErrorCode.NoError;
17745      this.parseXml(data);
17746
17747      if (this._errorCode !== XMLParserErrorCode.NoError) {
17748        return undefined;
17749      }
17750
17751      var _this$_currentFragmen = _slicedToArray(this._currentFragment, 1),
17752          documentElement = _this$_currentFragmen[0];
17753
17754      if (!documentElement) {
17755        return undefined;
17756      }
17757
17758      return {
17759        documentElement: documentElement
17760      };
17761    }
17762  }, {
17763    key: "onResolveEntity",
17764    value: function onResolveEntity(name) {
17765      switch (name) {
17766        case 'apos':
17767          return '\'';
17768      }
17769
17770      return _get(_getPrototypeOf(SimpleXMLParser.prototype), "onResolveEntity", this).call(this, name);
17771    }
17772  }, {
17773    key: "onText",
17774    value: function onText(text) {
17775      if (isWhitespaceString(text)) {
17776        return;
17777      }
17778
17779      var node = new SimpleDOMNode('#text', text);
17780
17781      this._currentFragment.push(node);
17782    }
17783  }, {
17784    key: "onCdata",
17785    value: function onCdata(text) {
17786      var node = new SimpleDOMNode('#text', text);
17787
17788      this._currentFragment.push(node);
17789    }
17790  }, {
17791    key: "onBeginElement",
17792    value: function onBeginElement(name, attributes, isEmpty) {
17793      var node = new SimpleDOMNode(name);
17794      node.childNodes = [];
17795
17796      this._currentFragment.push(node);
17797
17798      if (isEmpty) {
17799        return;
17800      }
17801
17802      this._stack.push(this._currentFragment);
17803
17804      this._currentFragment = node.childNodes;
17805    }
17806  }, {
17807    key: "onEndElement",
17808    value: function onEndElement(name) {
17809      this._currentFragment = this._stack.pop() || [];
17810      var lastElement = this._currentFragment[this._currentFragment.length - 1];
17811
17812      if (!lastElement) {
17813        return;
17814      }
17815
17816      for (var i = 0, ii = lastElement.childNodes.length; i < ii; i++) {
17817        lastElement.childNodes[i].parentNode = lastElement;
17818      }
17819    }
17820  }, {
17821    key: "onError",
17822    value: function onError(code) {
17823      this._errorCode = code;
17824    }
17825  }]);
17826
17827  return SimpleXMLParser;
17828}(XMLParserBase);
17829
17830exports.SimpleXMLParser = SimpleXMLParser;
17831
17832/***/ }),
17833/* 160 */
17834/***/ (function(module, exports, __w_pdfjs_require__) {
17835
17836"use strict";
17837
17838
17839Object.defineProperty(exports, "__esModule", {
17840  value: true
17841});
17842exports.PDFDataTransportStream = void 0;
17843
17844var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
17845
17846var _util = __w_pdfjs_require__(1);
17847
17848function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17849
17850function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
17851
17852function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
17853
17854function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17855
17856function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
17857
17858function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
17859
17860var PDFDataTransportStream =
17861/*#__PURE__*/
17862function () {
17863  function PDFDataTransportStream(params, pdfDataRangeTransport) {
17864    var _this = this;
17865
17866    _classCallCheck(this, PDFDataTransportStream);
17867
17868    (0, _util.assert)(pdfDataRangeTransport);
17869    this._queuedChunks = [];
17870    this._progressiveDone = params.progressiveDone || false;
17871    var initialData = params.initialData;
17872
17873    if (initialData && initialData.length > 0) {
17874      var buffer = new Uint8Array(initialData).buffer;
17875
17876      this._queuedChunks.push(buffer);
17877    }
17878
17879    this._pdfDataRangeTransport = pdfDataRangeTransport;
17880    this._isStreamingSupported = !params.disableStream;
17881    this._isRangeSupported = !params.disableRange;
17882    this._contentLength = params.length;
17883    this._fullRequestReader = null;
17884    this._rangeReaders = [];
17885
17886    this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) {
17887      _this._onReceiveData({
17888        begin: begin,
17889        chunk: chunk
17890      });
17891    });
17892
17893    this._pdfDataRangeTransport.addProgressListener(function (loaded, total) {
17894      _this._onProgress({
17895        loaded: loaded,
17896        total: total
17897      });
17898    });
17899
17900    this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) {
17901      _this._onReceiveData({
17902        chunk: chunk
17903      });
17904    });
17905
17906    this._pdfDataRangeTransport.addProgressiveDoneListener(function () {
17907      _this._onProgressiveDone();
17908    });
17909
17910    this._pdfDataRangeTransport.transportReady();
17911  }
17912
17913  _createClass(PDFDataTransportStream, [{
17914    key: "_onReceiveData",
17915    value: function _onReceiveData(args) {
17916      var buffer = new Uint8Array(args.chunk).buffer;
17917
17918      if (args.begin === undefined) {
17919        if (this._fullRequestReader) {
17920          this._fullRequestReader._enqueue(buffer);
17921        } else {
17922          this._queuedChunks.push(buffer);
17923        }
17924      } else {
17925        var found = this._rangeReaders.some(function (rangeReader) {
17926          if (rangeReader._begin !== args.begin) {
17927            return false;
17928          }
17929
17930          rangeReader._enqueue(buffer);
17931
17932          return true;
17933        });
17934
17935        (0, _util.assert)(found);
17936      }
17937    }
17938  }, {
17939    key: "_onProgress",
17940    value: function _onProgress(evt) {
17941      if (evt.total === undefined) {
17942        var firstReader = this._rangeReaders[0];
17943
17944        if (firstReader && firstReader.onProgress) {
17945          firstReader.onProgress({
17946            loaded: evt.loaded
17947          });
17948        }
17949      } else {
17950        var fullReader = this._fullRequestReader;
17951
17952        if (fullReader && fullReader.onProgress) {
17953          fullReader.onProgress({
17954            loaded: evt.loaded,
17955            total: evt.total
17956          });
17957        }
17958      }
17959    }
17960  }, {
17961    key: "_onProgressiveDone",
17962    value: function _onProgressiveDone() {
17963      if (this._fullRequestReader) {
17964        this._fullRequestReader.progressiveDone();
17965      }
17966
17967      this._progressiveDone = true;
17968    }
17969  }, {
17970    key: "_removeRangeReader",
17971    value: function _removeRangeReader(reader) {
17972      var i = this._rangeReaders.indexOf(reader);
17973
17974      if (i >= 0) {
17975        this._rangeReaders.splice(i, 1);
17976      }
17977    }
17978  }, {
17979    key: "getFullReader",
17980    value: function getFullReader() {
17981      (0, _util.assert)(!this._fullRequestReader);
17982      var queuedChunks = this._queuedChunks;
17983      this._queuedChunks = null;
17984      return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone);
17985    }
17986  }, {
17987    key: "getRangeReader",
17988    value: function getRangeReader(begin, end) {
17989      if (end <= this._progressiveDataLength) {
17990        return null;
17991      }
17992
17993      var reader = new PDFDataTransportStreamRangeReader(this, begin, end);
17994
17995      this._pdfDataRangeTransport.requestDataRange(begin, end);
17996
17997      this._rangeReaders.push(reader);
17998
17999      return reader;
18000    }
18001  }, {
18002    key: "cancelAllRequests",
18003    value: function cancelAllRequests(reason) {
18004      if (this._fullRequestReader) {
18005        this._fullRequestReader.cancel(reason);
18006      }
18007
18008      var readers = this._rangeReaders.slice(0);
18009
18010      readers.forEach(function (rangeReader) {
18011        rangeReader.cancel(reason);
18012      });
18013
18014      this._pdfDataRangeTransport.abort();
18015    }
18016  }, {
18017    key: "_progressiveDataLength",
18018    get: function get() {
18019      return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
18020    }
18021  }]);
18022
18023  return PDFDataTransportStream;
18024}();
18025
18026exports.PDFDataTransportStream = PDFDataTransportStream;
18027
18028var PDFDataTransportStreamReader =
18029/*#__PURE__*/
18030function () {
18031  function PDFDataTransportStreamReader(stream, queuedChunks) {
18032    var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
18033
18034    _classCallCheck(this, PDFDataTransportStreamReader);
18035
18036    this._stream = stream;
18037    this._done = progressiveDone || false;
18038    this._filename = null;
18039    this._queuedChunks = queuedChunks || [];
18040    this._loaded = 0;
18041    var _iteratorNormalCompletion = true;
18042    var _didIteratorError = false;
18043    var _iteratorError = undefined;
18044
18045    try {
18046      for (var _iterator = this._queuedChunks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
18047        var chunk = _step.value;
18048        this._loaded += chunk.byteLength;
18049      }
18050    } catch (err) {
18051      _didIteratorError = true;
18052      _iteratorError = err;
18053    } finally {
18054      try {
18055        if (!_iteratorNormalCompletion && _iterator["return"] != null) {
18056          _iterator["return"]();
18057        }
18058      } finally {
18059        if (_didIteratorError) {
18060          throw _iteratorError;
18061        }
18062      }
18063    }
18064
18065    this._requests = [];
18066    this._headersReady = Promise.resolve();
18067    stream._fullRequestReader = this;
18068    this.onProgress = null;
18069  }
18070
18071  _createClass(PDFDataTransportStreamReader, [{
18072    key: "_enqueue",
18073    value: function _enqueue(chunk) {
18074      if (this._done) {
18075        return;
18076      }
18077
18078      if (this._requests.length > 0) {
18079        var requestCapability = this._requests.shift();
18080
18081        requestCapability.resolve({
18082          value: chunk,
18083          done: false
18084        });
18085      } else {
18086        this._queuedChunks.push(chunk);
18087      }
18088
18089      this._loaded += chunk.byteLength;
18090    }
18091  }, {
18092    key: "read",
18093    value: function () {
18094      var _read = _asyncToGenerator(
18095      /*#__PURE__*/
18096      _regenerator["default"].mark(function _callee() {
18097        var chunk, requestCapability;
18098        return _regenerator["default"].wrap(function _callee$(_context) {
18099          while (1) {
18100            switch (_context.prev = _context.next) {
18101              case 0:
18102                if (!(this._queuedChunks.length > 0)) {
18103                  _context.next = 3;
18104                  break;
18105                }
18106
18107                chunk = this._queuedChunks.shift();
18108                return _context.abrupt("return", {
18109                  value: chunk,
18110                  done: false
18111                });
18112
18113              case 3:
18114                if (!this._done) {
18115                  _context.next = 5;
18116                  break;
18117                }
18118
18119                return _context.abrupt("return", {
18120                  value: undefined,
18121                  done: true
18122                });
18123
18124              case 5:
18125                requestCapability = (0, _util.createPromiseCapability)();
18126
18127                this._requests.push(requestCapability);
18128
18129                return _context.abrupt("return", requestCapability.promise);
18130
18131              case 8:
18132              case "end":
18133                return _context.stop();
18134            }
18135          }
18136        }, _callee, this);
18137      }));
18138
18139      function read() {
18140        return _read.apply(this, arguments);
18141      }
18142
18143      return read;
18144    }()
18145  }, {
18146    key: "cancel",
18147    value: function cancel(reason) {
18148      this._done = true;
18149
18150      this._requests.forEach(function (requestCapability) {
18151        requestCapability.resolve({
18152          value: undefined,
18153          done: true
18154        });
18155      });
18156
18157      this._requests = [];
18158    }
18159  }, {
18160    key: "progressiveDone",
18161    value: function progressiveDone() {
18162      if (this._done) {
18163        return;
18164      }
18165
18166      this._done = true;
18167    }
18168  }, {
18169    key: "headersReady",
18170    get: function get() {
18171      return this._headersReady;
18172    }
18173  }, {
18174    key: "filename",
18175    get: function get() {
18176      return this._filename;
18177    }
18178  }, {
18179    key: "isRangeSupported",
18180    get: function get() {
18181      return this._stream._isRangeSupported;
18182    }
18183  }, {
18184    key: "isStreamingSupported",
18185    get: function get() {
18186      return this._stream._isStreamingSupported;
18187    }
18188  }, {
18189    key: "contentLength",
18190    get: function get() {
18191      return this._stream._contentLength;
18192    }
18193  }]);
18194
18195  return PDFDataTransportStreamReader;
18196}();
18197
18198var PDFDataTransportStreamRangeReader =
18199/*#__PURE__*/
18200function () {
18201  function PDFDataTransportStreamRangeReader(stream, begin, end) {
18202    _classCallCheck(this, PDFDataTransportStreamRangeReader);
18203
18204    this._stream = stream;
18205    this._begin = begin;
18206    this._end = end;
18207    this._queuedChunk = null;
18208    this._requests = [];
18209    this._done = false;
18210    this.onProgress = null;
18211  }
18212
18213  _createClass(PDFDataTransportStreamRangeReader, [{
18214    key: "_enqueue",
18215    value: function _enqueue(chunk) {
18216      if (this._done) {
18217        return;
18218      }
18219
18220      if (this._requests.length === 0) {
18221        this._queuedChunk = chunk;
18222      } else {
18223        var requestsCapability = this._requests.shift();
18224
18225        requestsCapability.resolve({
18226          value: chunk,
18227          done: false
18228        });
18229
18230        this._requests.forEach(function (requestCapability) {
18231          requestCapability.resolve({
18232            value: undefined,
18233            done: true
18234          });
18235        });
18236
18237        this._requests = [];
18238      }
18239
18240      this._done = true;
18241
18242      this._stream._removeRangeReader(this);
18243    }
18244  }, {
18245    key: "read",
18246    value: function () {
18247      var _read2 = _asyncToGenerator(
18248      /*#__PURE__*/
18249      _regenerator["default"].mark(function _callee2() {
18250        var chunk, requestCapability;
18251        return _regenerator["default"].wrap(function _callee2$(_context2) {
18252          while (1) {
18253            switch (_context2.prev = _context2.next) {
18254              case 0:
18255                if (!this._queuedChunk) {
18256                  _context2.next = 4;
18257                  break;
18258                }
18259
18260                chunk = this._queuedChunk;
18261                this._queuedChunk = null;
18262                return _context2.abrupt("return", {
18263                  value: chunk,
18264                  done: false
18265                });
18266
18267              case 4:
18268                if (!this._done) {
18269                  _context2.next = 6;
18270                  break;
18271                }
18272
18273                return _context2.abrupt("return", {
18274                  value: undefined,
18275                  done: true
18276                });
18277
18278              case 6:
18279                requestCapability = (0, _util.createPromiseCapability)();
18280
18281                this._requests.push(requestCapability);
18282
18283                return _context2.abrupt("return", requestCapability.promise);
18284
18285              case 9:
18286              case "end":
18287                return _context2.stop();
18288            }
18289          }
18290        }, _callee2, this);
18291      }));
18292
18293      function read() {
18294        return _read2.apply(this, arguments);
18295      }
18296
18297      return read;
18298    }()
18299  }, {
18300    key: "cancel",
18301    value: function cancel(reason) {
18302      this._done = true;
18303
18304      this._requests.forEach(function (requestCapability) {
18305        requestCapability.resolve({
18306          value: undefined,
18307          done: true
18308        });
18309      });
18310
18311      this._requests = [];
18312
18313      this._stream._removeRangeReader(this);
18314    }
18315  }, {
18316    key: "isStreamingSupported",
18317    get: function get() {
18318      return false;
18319    }
18320  }]);
18321
18322  return PDFDataTransportStreamRangeReader;
18323}();
18324
18325/***/ }),
18326/* 161 */
18327/***/ (function(module, exports, __w_pdfjs_require__) {
18328
18329"use strict";
18330
18331
18332Object.defineProperty(exports, "__esModule", {
18333  value: true
18334});
18335exports.WebGLContext = void 0;
18336
18337var _util = __w_pdfjs_require__(1);
18338
18339function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
18340
18341function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
18342
18343function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
18344
18345var WebGLContext =
18346/*#__PURE__*/
18347function () {
18348  function WebGLContext(_ref) {
18349    var _ref$enable = _ref.enable,
18350        enable = _ref$enable === void 0 ? false : _ref$enable;
18351
18352    _classCallCheck(this, WebGLContext);
18353
18354    this._enabled = enable === true;
18355  }
18356
18357  _createClass(WebGLContext, [{
18358    key: "composeSMask",
18359    value: function composeSMask(_ref2) {
18360      var layer = _ref2.layer,
18361          mask = _ref2.mask,
18362          properties = _ref2.properties;
18363      return WebGLUtils.composeSMask(layer, mask, properties);
18364    }
18365  }, {
18366    key: "drawFigures",
18367    value: function drawFigures(_ref3) {
18368      var width = _ref3.width,
18369          height = _ref3.height,
18370          backgroundColor = _ref3.backgroundColor,
18371          figures = _ref3.figures,
18372          context = _ref3.context;
18373      return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);
18374    }
18375  }, {
18376    key: "clear",
18377    value: function clear() {
18378      WebGLUtils.cleanup();
18379    }
18380  }, {
18381    key: "isEnabled",
18382    get: function get() {
18383      var enabled = this._enabled;
18384
18385      if (enabled) {
18386        enabled = WebGLUtils.tryInitGL();
18387      }
18388
18389      return (0, _util.shadow)(this, 'isEnabled', enabled);
18390    }
18391  }]);
18392
18393  return WebGLContext;
18394}();
18395
18396exports.WebGLContext = WebGLContext;
18397
18398var WebGLUtils = function WebGLUtilsClosure() {
18399  function loadShader(gl, code, shaderType) {
18400    var shader = gl.createShader(shaderType);
18401    gl.shaderSource(shader, code);
18402    gl.compileShader(shader);
18403    var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
18404
18405    if (!compiled) {
18406      var errorMsg = gl.getShaderInfoLog(shader);
18407      throw new Error('Error during shader compilation: ' + errorMsg);
18408    }
18409
18410    return shader;
18411  }
18412
18413  function createVertexShader(gl, code) {
18414    return loadShader(gl, code, gl.VERTEX_SHADER);
18415  }
18416
18417  function createFragmentShader(gl, code) {
18418    return loadShader(gl, code, gl.FRAGMENT_SHADER);
18419  }
18420
18421  function createProgram(gl, shaders) {
18422    var program = gl.createProgram();
18423
18424    for (var i = 0, ii = shaders.length; i < ii; ++i) {
18425      gl.attachShader(program, shaders[i]);
18426    }
18427
18428    gl.linkProgram(program);
18429    var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
18430
18431    if (!linked) {
18432      var errorMsg = gl.getProgramInfoLog(program);
18433      throw new Error('Error during program linking: ' + errorMsg);
18434    }
18435
18436    return program;
18437  }
18438
18439  function createTexture(gl, image, textureId) {
18440    gl.activeTexture(textureId);
18441    var texture = gl.createTexture();
18442    gl.bindTexture(gl.TEXTURE_2D, texture);
18443    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
18444    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
18445    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
18446    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
18447    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
18448    return texture;
18449  }
18450
18451  var currentGL, currentCanvas;
18452
18453  function generateGL() {
18454    if (currentGL) {
18455      return;
18456    }
18457
18458    currentCanvas = document.createElement('canvas');
18459    currentGL = currentCanvas.getContext('webgl', {
18460      premultipliedalpha: false
18461    });
18462  }
18463
18464  var smaskVertexShaderCode = '\
18465  attribute vec2 a_position;                                    \
18466  attribute vec2 a_texCoord;                                    \
18467                                                                \
18468  uniform vec2 u_resolution;                                    \
18469                                                                \
18470  varying vec2 v_texCoord;                                      \
18471                                                                \
18472  void main() {                                                 \
18473    vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0;   \
18474    gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);          \
18475                                                                \
18476    v_texCoord = a_texCoord;                                    \
18477  }                                                             ';
18478  var smaskFragmentShaderCode = '\
18479  precision mediump float;                                      \
18480                                                                \
18481  uniform vec4 u_backdrop;                                      \
18482  uniform int u_subtype;                                        \
18483  uniform sampler2D u_image;                                    \
18484  uniform sampler2D u_mask;                                     \
18485                                                                \
18486  varying vec2 v_texCoord;                                      \
18487                                                                \
18488  void main() {                                                 \
18489    vec4 imageColor = texture2D(u_image, v_texCoord);           \
18490    vec4 maskColor = texture2D(u_mask, v_texCoord);             \
18491    if (u_backdrop.a > 0.0) {                                   \
18492      maskColor.rgb = maskColor.rgb * maskColor.a +             \
18493                      u_backdrop.rgb * (1.0 - maskColor.a);     \
18494    }                                                           \
18495    float lum;                                                  \
18496    if (u_subtype == 0) {                                       \
18497      lum = maskColor.a;                                        \
18498    } else {                                                    \
18499      lum = maskColor.r * 0.3 + maskColor.g * 0.59 +            \
18500            maskColor.b * 0.11;                                 \
18501    }                                                           \
18502    imageColor.a *= lum;                                        \
18503    imageColor.rgb *= imageColor.a;                             \
18504    gl_FragColor = imageColor;                                  \
18505  }                                                             ';
18506  var smaskCache = null;
18507
18508  function initSmaskGL() {
18509    var canvas, gl;
18510    generateGL();
18511    canvas = currentCanvas;
18512    currentCanvas = null;
18513    gl = currentGL;
18514    currentGL = null;
18515    var vertexShader = createVertexShader(gl, smaskVertexShaderCode);
18516    var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);
18517    var program = createProgram(gl, [vertexShader, fragmentShader]);
18518    gl.useProgram(program);
18519    var cache = {};
18520    cache.gl = gl;
18521    cache.canvas = canvas;
18522    cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
18523    cache.positionLocation = gl.getAttribLocation(program, 'a_position');
18524    cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');
18525    cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');
18526    var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');
18527    var texLayerLocation = gl.getUniformLocation(program, 'u_image');
18528    var texMaskLocation = gl.getUniformLocation(program, 'u_mask');
18529    var texCoordBuffer = gl.createBuffer();
18530    gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
18531    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);
18532    gl.enableVertexAttribArray(texCoordLocation);
18533    gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);
18534    gl.uniform1i(texLayerLocation, 0);
18535    gl.uniform1i(texMaskLocation, 1);
18536    smaskCache = cache;
18537  }
18538
18539  function composeSMask(layer, mask, properties) {
18540    var width = layer.width,
18541        height = layer.height;
18542
18543    if (!smaskCache) {
18544      initSmaskGL();
18545    }
18546
18547    var cache = smaskCache,
18548        canvas = cache.canvas,
18549        gl = cache.gl;
18550    canvas.width = width;
18551    canvas.height = height;
18552    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
18553    gl.uniform2f(cache.resolutionLocation, width, height);
18554
18555    if (properties.backdrop) {
18556      gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);
18557    } else {
18558      gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);
18559    }
18560
18561    gl.uniform1i(cache.subtypeLocation, properties.subtype === 'Luminosity' ? 1 : 0);
18562    var texture = createTexture(gl, layer, gl.TEXTURE0);
18563    var maskTexture = createTexture(gl, mask, gl.TEXTURE1);
18564    var buffer = gl.createBuffer();
18565    gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
18566    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW);
18567    gl.enableVertexAttribArray(cache.positionLocation);
18568    gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
18569    gl.clearColor(0, 0, 0, 0);
18570    gl.enable(gl.BLEND);
18571    gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
18572    gl.clear(gl.COLOR_BUFFER_BIT);
18573    gl.drawArrays(gl.TRIANGLES, 0, 6);
18574    gl.flush();
18575    gl.deleteTexture(texture);
18576    gl.deleteTexture(maskTexture);
18577    gl.deleteBuffer(buffer);
18578    return canvas;
18579  }
18580
18581  var figuresVertexShaderCode = '\
18582  attribute vec2 a_position;                                    \
18583  attribute vec3 a_color;                                       \
18584                                                                \
18585  uniform vec2 u_resolution;                                    \
18586  uniform vec2 u_scale;                                         \
18587  uniform vec2 u_offset;                                        \
18588                                                                \
18589  varying vec4 v_color;                                         \
18590                                                                \
18591  void main() {                                                 \
18592    vec2 position = (a_position + u_offset) * u_scale;          \
18593    vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0;     \
18594    gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);          \
18595                                                                \
18596    v_color = vec4(a_color / 255.0, 1.0);                       \
18597  }                                                             ';
18598  var figuresFragmentShaderCode = '\
18599  precision mediump float;                                      \
18600                                                                \
18601  varying vec4 v_color;                                         \
18602                                                                \
18603  void main() {                                                 \
18604    gl_FragColor = v_color;                                     \
18605  }                                                             ';
18606  var figuresCache = null;
18607
18608  function initFiguresGL() {
18609    var canvas, gl;
18610    generateGL();
18611    canvas = currentCanvas;
18612    currentCanvas = null;
18613    gl = currentGL;
18614    currentGL = null;
18615    var vertexShader = createVertexShader(gl, figuresVertexShaderCode);
18616    var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);
18617    var program = createProgram(gl, [vertexShader, fragmentShader]);
18618    gl.useProgram(program);
18619    var cache = {};
18620    cache.gl = gl;
18621    cache.canvas = canvas;
18622    cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
18623    cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');
18624    cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');
18625    cache.positionLocation = gl.getAttribLocation(program, 'a_position');
18626    cache.colorLocation = gl.getAttribLocation(program, 'a_color');
18627    figuresCache = cache;
18628  }
18629
18630  function drawFigures(width, height, backgroundColor, figures, context) {
18631    if (!figuresCache) {
18632      initFiguresGL();
18633    }
18634
18635    var cache = figuresCache,
18636        canvas = cache.canvas,
18637        gl = cache.gl;
18638    canvas.width = width;
18639    canvas.height = height;
18640    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
18641    gl.uniform2f(cache.resolutionLocation, width, height);
18642    var count = 0;
18643    var i, ii, rows;
18644
18645    for (i = 0, ii = figures.length; i < ii; i++) {
18646      switch (figures[i].type) {
18647        case 'lattice':
18648          rows = figures[i].coords.length / figures[i].verticesPerRow | 0;
18649          count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;
18650          break;
18651
18652        case 'triangles':
18653          count += figures[i].coords.length;
18654          break;
18655      }
18656    }
18657
18658    var coords = new Float32Array(count * 2);
18659    var colors = new Uint8Array(count * 3);
18660    var coordsMap = context.coords,
18661        colorsMap = context.colors;
18662    var pIndex = 0,
18663        cIndex = 0;
18664
18665    for (i = 0, ii = figures.length; i < ii; i++) {
18666      var figure = figures[i],
18667          ps = figure.coords,
18668          cs = figure.colors;
18669
18670      switch (figure.type) {
18671        case 'lattice':
18672          var cols = figure.verticesPerRow;
18673          rows = ps.length / cols | 0;
18674
18675          for (var row = 1; row < rows; row++) {
18676            var offset = row * cols + 1;
18677
18678            for (var col = 1; col < cols; col++, offset++) {
18679              coords[pIndex] = coordsMap[ps[offset - cols - 1]];
18680              coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];
18681              coords[pIndex + 2] = coordsMap[ps[offset - cols]];
18682              coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];
18683              coords[pIndex + 4] = coordsMap[ps[offset - 1]];
18684              coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];
18685              colors[cIndex] = colorsMap[cs[offset - cols - 1]];
18686              colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];
18687              colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];
18688              colors[cIndex + 3] = colorsMap[cs[offset - cols]];
18689              colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];
18690              colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];
18691              colors[cIndex + 6] = colorsMap[cs[offset - 1]];
18692              colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];
18693              colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];
18694              coords[pIndex + 6] = coords[pIndex + 2];
18695              coords[pIndex + 7] = coords[pIndex + 3];
18696              coords[pIndex + 8] = coords[pIndex + 4];
18697              coords[pIndex + 9] = coords[pIndex + 5];
18698              coords[pIndex + 10] = coordsMap[ps[offset]];
18699              coords[pIndex + 11] = coordsMap[ps[offset] + 1];
18700              colors[cIndex + 9] = colors[cIndex + 3];
18701              colors[cIndex + 10] = colors[cIndex + 4];
18702              colors[cIndex + 11] = colors[cIndex + 5];
18703              colors[cIndex + 12] = colors[cIndex + 6];
18704              colors[cIndex + 13] = colors[cIndex + 7];
18705              colors[cIndex + 14] = colors[cIndex + 8];
18706              colors[cIndex + 15] = colorsMap[cs[offset]];
18707              colors[cIndex + 16] = colorsMap[cs[offset] + 1];
18708              colors[cIndex + 17] = colorsMap[cs[offset] + 2];
18709              pIndex += 12;
18710              cIndex += 18;
18711            }
18712          }
18713
18714          break;
18715
18716        case 'triangles':
18717          for (var j = 0, jj = ps.length; j < jj; j++) {
18718            coords[pIndex] = coordsMap[ps[j]];
18719            coords[pIndex + 1] = coordsMap[ps[j] + 1];
18720            colors[cIndex] = colorsMap[cs[j]];
18721            colors[cIndex + 1] = colorsMap[cs[j] + 1];
18722            colors[cIndex + 2] = colorsMap[cs[j] + 2];
18723            pIndex += 2;
18724            cIndex += 3;
18725          }
18726
18727          break;
18728      }
18729    }
18730
18731    if (backgroundColor) {
18732      gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);
18733    } else {
18734      gl.clearColor(0, 0, 0, 0);
18735    }
18736
18737    gl.clear(gl.COLOR_BUFFER_BIT);
18738    var coordsBuffer = gl.createBuffer();
18739    gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);
18740    gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);
18741    gl.enableVertexAttribArray(cache.positionLocation);
18742    gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
18743    var colorsBuffer = gl.createBuffer();
18744    gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);
18745    gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);
18746    gl.enableVertexAttribArray(cache.colorLocation);
18747    gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0);
18748    gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);
18749    gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);
18750    gl.drawArrays(gl.TRIANGLES, 0, count);
18751    gl.flush();
18752    gl.deleteBuffer(coordsBuffer);
18753    gl.deleteBuffer(colorsBuffer);
18754    return canvas;
18755  }
18756
18757  return {
18758    tryInitGL: function tryInitGL() {
18759      try {
18760        generateGL();
18761        return !!currentGL;
18762      } catch (ex) {}
18763
18764      return false;
18765    },
18766    composeSMask: composeSMask,
18767    drawFigures: drawFigures,
18768    cleanup: function cleanup() {
18769      if (smaskCache && smaskCache.canvas) {
18770        smaskCache.canvas.width = 0;
18771        smaskCache.canvas.height = 0;
18772      }
18773
18774      if (figuresCache && figuresCache.canvas) {
18775        figuresCache.canvas.width = 0;
18776        figuresCache.canvas.height = 0;
18777      }
18778
18779      smaskCache = null;
18780      figuresCache = null;
18781    }
18782  };
18783}();
18784
18785/***/ }),
18786/* 162 */
18787/***/ (function(module, exports, __w_pdfjs_require__) {
18788
18789"use strict";
18790
18791
18792Object.defineProperty(exports, "__esModule", {
18793  value: true
18794});
18795exports.renderTextLayer = void 0;
18796
18797var _util = __w_pdfjs_require__(1);
18798
18799var _global_scope = _interopRequireDefault(__w_pdfjs_require__(3));
18800
18801function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18802
18803var renderTextLayer = function renderTextLayerClosure() {
18804  var MAX_TEXT_DIVS_TO_RENDER = 100000;
18805  var NonWhitespaceRegexp = /\S/;
18806
18807  function isAllWhitespace(str) {
18808    return !NonWhitespaceRegexp.test(str);
18809  }
18810
18811  var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';'];
18812
18813  function appendText(task, geom, styles) {
18814    var textDiv = document.createElement('span');
18815    var textDivProperties = {
18816      style: null,
18817      angle: 0,
18818      canvasWidth: 0,
18819      isWhitespace: false,
18820      originalTransform: null,
18821      paddingBottom: 0,
18822      paddingLeft: 0,
18823      paddingRight: 0,
18824      paddingTop: 0,
18825      scale: 1
18826    };
18827
18828    task._textDivs.push(textDiv);
18829
18830    if (isAllWhitespace(geom.str)) {
18831      textDivProperties.isWhitespace = true;
18832
18833      task._textDivProperties.set(textDiv, textDivProperties);
18834
18835      return;
18836    }
18837
18838    var tx = _util.Util.transform(task._viewport.transform, geom.transform);
18839
18840    var angle = Math.atan2(tx[1], tx[0]);
18841    var style = styles[geom.fontName];
18842
18843    if (style.vertical) {
18844      angle += Math.PI / 2;
18845    }
18846
18847    var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
18848    var fontAscent = fontHeight;
18849
18850    if (style.ascent) {
18851      fontAscent = style.ascent * fontAscent;
18852    } else if (style.descent) {
18853      fontAscent = (1 + style.descent) * fontAscent;
18854    }
18855
18856    var left;
18857    var top;
18858
18859    if (angle === 0) {
18860      left = tx[4];
18861      top = tx[5] - fontAscent;
18862    } else {
18863      left = tx[4] + fontAscent * Math.sin(angle);
18864      top = tx[5] - fontAscent * Math.cos(angle);
18865    }
18866
18867    styleBuf[1] = left;
18868    styleBuf[3] = top;
18869    styleBuf[5] = fontHeight;
18870    styleBuf[7] = style.fontFamily;
18871    textDivProperties.style = styleBuf.join('');
18872    textDiv.setAttribute('style', textDivProperties.style);
18873    textDiv.textContent = geom.str;
18874
18875    if (task._fontInspectorEnabled) {
18876      textDiv.dataset.fontName = geom.fontName;
18877    }
18878
18879    if (angle !== 0) {
18880      textDivProperties.angle = angle * (180 / Math.PI);
18881    }
18882
18883    if (geom.str.length > 1) {
18884      if (style.vertical) {
18885        textDivProperties.canvasWidth = geom.height * task._viewport.scale;
18886      } else {
18887        textDivProperties.canvasWidth = geom.width * task._viewport.scale;
18888      }
18889    }
18890
18891    task._textDivProperties.set(textDiv, textDivProperties);
18892
18893    if (task._textContentStream) {
18894      task._layoutText(textDiv);
18895    }
18896
18897    if (task._enhanceTextSelection) {
18898      var angleCos = 1,
18899          angleSin = 0;
18900
18901      if (angle !== 0) {
18902        angleCos = Math.cos(angle);
18903        angleSin = Math.sin(angle);
18904      }
18905
18906      var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
18907      var divHeight = fontHeight;
18908      var m, b;
18909
18910      if (angle !== 0) {
18911        m = [angleCos, angleSin, -angleSin, angleCos, left, top];
18912        b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);
18913      } else {
18914        b = [left, top, left + divWidth, top + divHeight];
18915      }
18916
18917      task._bounds.push({
18918        left: b[0],
18919        top: b[1],
18920        right: b[2],
18921        bottom: b[3],
18922        div: textDiv,
18923        size: [divWidth, divHeight],
18924        m: m
18925      });
18926    }
18927  }
18928
18929  function render(task) {
18930    if (task._canceled) {
18931      return;
18932    }
18933
18934    var textDivs = task._textDivs;
18935    var capability = task._capability;
18936    var textDivsLength = textDivs.length;
18937
18938    if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
18939      task._renderingDone = true;
18940      capability.resolve();
18941      return;
18942    }
18943
18944    if (!task._textContentStream) {
18945      for (var i = 0; i < textDivsLength; i++) {
18946        task._layoutText(textDivs[i]);
18947      }
18948    }
18949
18950    task._renderingDone = true;
18951    capability.resolve();
18952  }
18953
18954  function expand(task) {
18955    var bounds = task._bounds;
18956    var viewport = task._viewport;
18957    var expanded = expandBounds(viewport.width, viewport.height, bounds);
18958
18959    for (var i = 0; i < expanded.length; i++) {
18960      var div = bounds[i].div;
18961
18962      var divProperties = task._textDivProperties.get(div);
18963
18964      if (divProperties.angle === 0) {
18965        divProperties.paddingLeft = bounds[i].left - expanded[i].left;
18966        divProperties.paddingTop = bounds[i].top - expanded[i].top;
18967        divProperties.paddingRight = expanded[i].right - bounds[i].right;
18968        divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;
18969
18970        task._textDivProperties.set(div, divProperties);
18971
18972        continue;
18973      }
18974
18975      var e = expanded[i],
18976          b = bounds[i];
18977      var m = b.m,
18978          c = m[0],
18979          s = m[1];
18980      var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];
18981      var ts = new Float64Array(64);
18982      points.forEach(function (p, i) {
18983        var t = _util.Util.applyTransform(p, m);
18984
18985        ts[i + 0] = c && (e.left - t[0]) / c;
18986        ts[i + 4] = s && (e.top - t[1]) / s;
18987        ts[i + 8] = c && (e.right - t[0]) / c;
18988        ts[i + 12] = s && (e.bottom - t[1]) / s;
18989        ts[i + 16] = s && (e.left - t[0]) / -s;
18990        ts[i + 20] = c && (e.top - t[1]) / c;
18991        ts[i + 24] = s && (e.right - t[0]) / -s;
18992        ts[i + 28] = c && (e.bottom - t[1]) / c;
18993        ts[i + 32] = c && (e.left - t[0]) / -c;
18994        ts[i + 36] = s && (e.top - t[1]) / -s;
18995        ts[i + 40] = c && (e.right - t[0]) / -c;
18996        ts[i + 44] = s && (e.bottom - t[1]) / -s;
18997        ts[i + 48] = s && (e.left - t[0]) / s;
18998        ts[i + 52] = c && (e.top - t[1]) / -c;
18999        ts[i + 56] = s && (e.right - t[0]) / s;
19000        ts[i + 60] = c && (e.bottom - t[1]) / -c;
19001      });
19002
19003      var findPositiveMin = function findPositiveMin(ts, offset, count) {
19004        var result = 0;
19005
19006        for (var i = 0; i < count; i++) {
19007          var t = ts[offset++];
19008
19009          if (t > 0) {
19010            result = result ? Math.min(t, result) : t;
19011          }
19012        }
19013
19014        return result;
19015      };
19016
19017      var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
19018      divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
19019      divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
19020      divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
19021      divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;
19022
19023      task._textDivProperties.set(div, divProperties);
19024    }
19025  }
19026
19027  function expandBounds(width, height, boxes) {
19028    var bounds = boxes.map(function (box, i) {
19029      return {
19030        x1: box.left,
19031        y1: box.top,
19032        x2: box.right,
19033        y2: box.bottom,
19034        index: i,
19035        x1New: undefined,
19036        x2New: undefined
19037      };
19038    });
19039    expandBoundsLTR(width, bounds);
19040    var expanded = new Array(boxes.length);
19041    bounds.forEach(function (b) {
19042      var i = b.index;
19043      expanded[i] = {
19044        left: b.x1New,
19045        top: 0,
19046        right: b.x2New,
19047        bottom: 0
19048      };
19049    });
19050    boxes.map(function (box, i) {
19051      var e = expanded[i],
19052          b = bounds[i];
19053      b.x1 = box.top;
19054      b.y1 = width - e.right;
19055      b.x2 = box.bottom;
19056      b.y2 = width - e.left;
19057      b.index = i;
19058      b.x1New = undefined;
19059      b.x2New = undefined;
19060    });
19061    expandBoundsLTR(height, bounds);
19062    bounds.forEach(function (b) {
19063      var i = b.index;
19064      expanded[i].top = b.x1New;
19065      expanded[i].bottom = b.x2New;
19066    });
19067    return expanded;
19068  }
19069
19070  function expandBoundsLTR(width, bounds) {
19071    bounds.sort(function (a, b) {
19072      return a.x1 - b.x1 || a.index - b.index;
19073    });
19074    var fakeBoundary = {
19075      x1: -Infinity,
19076      y1: -Infinity,
19077      x2: 0,
19078      y2: Infinity,
19079      index: -1,
19080      x1New: 0,
19081      x2New: 0
19082    };
19083    var horizon = [{
19084      start: -Infinity,
19085      end: Infinity,
19086      boundary: fakeBoundary
19087    }];
19088    bounds.forEach(function (boundary) {
19089      var i = 0;
19090
19091      while (i < horizon.length && horizon[i].end <= boundary.y1) {
19092        i++;
19093      }
19094
19095      var j = horizon.length - 1;
19096
19097      while (j >= 0 && horizon[j].start >= boundary.y2) {
19098        j--;
19099      }
19100
19101      var horizonPart, affectedBoundary;
19102      var q,
19103          k,
19104          maxXNew = -Infinity;
19105
19106      for (q = i; q <= j; q++) {
19107        horizonPart = horizon[q];
19108        affectedBoundary = horizonPart.boundary;
19109        var xNew;
19110
19111        if (affectedBoundary.x2 > boundary.x1) {
19112          xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
19113        } else if (affectedBoundary.x2New === undefined) {
19114          xNew = (affectedBoundary.x2 + boundary.x1) / 2;
19115        } else {
19116          xNew = affectedBoundary.x2New;
19117        }
19118
19119        if (xNew > maxXNew) {
19120          maxXNew = xNew;
19121        }
19122      }
19123
19124      boundary.x1New = maxXNew;
19125
19126      for (q = i; q <= j; q++) {
19127        horizonPart = horizon[q];
19128        affectedBoundary = horizonPart.boundary;
19129
19130        if (affectedBoundary.x2New === undefined) {
19131          if (affectedBoundary.x2 > boundary.x1) {
19132            if (affectedBoundary.index > boundary.index) {
19133              affectedBoundary.x2New = affectedBoundary.x2;
19134            }
19135          } else {
19136            affectedBoundary.x2New = maxXNew;
19137          }
19138        } else if (affectedBoundary.x2New > maxXNew) {
19139          affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);
19140        }
19141      }
19142
19143      var changedHorizon = [],
19144          lastBoundary = null;
19145
19146      for (q = i; q <= j; q++) {
19147        horizonPart = horizon[q];
19148        affectedBoundary = horizonPart.boundary;
19149        var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
19150
19151        if (lastBoundary === useBoundary) {
19152          changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
19153        } else {
19154          changedHorizon.push({
19155            start: horizonPart.start,
19156            end: horizonPart.end,
19157            boundary: useBoundary
19158          });
19159          lastBoundary = useBoundary;
19160        }
19161      }
19162
19163      if (horizon[i].start < boundary.y1) {
19164        changedHorizon[0].start = boundary.y1;
19165        changedHorizon.unshift({
19166          start: horizon[i].start,
19167          end: boundary.y1,
19168          boundary: horizon[i].boundary
19169        });
19170      }
19171
19172      if (boundary.y2 < horizon[j].end) {
19173        changedHorizon[changedHorizon.length - 1].end = boundary.y2;
19174        changedHorizon.push({
19175          start: boundary.y2,
19176          end: horizon[j].end,
19177          boundary: horizon[j].boundary
19178        });
19179      }
19180
19181      for (q = i; q <= j; q++) {
19182        horizonPart = horizon[q];
19183        affectedBoundary = horizonPart.boundary;
19184
19185        if (affectedBoundary.x2New !== undefined) {
19186          continue;
19187        }
19188
19189        var used = false;
19190
19191        for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
19192          used = horizon[k].boundary === affectedBoundary;
19193        }
19194
19195        for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {
19196          used = horizon[k].boundary === affectedBoundary;
19197        }
19198
19199        for (k = 0; !used && k < changedHorizon.length; k++) {
19200          used = changedHorizon[k].boundary === affectedBoundary;
19201        }
19202
19203        if (!used) {
19204          affectedBoundary.x2New = maxXNew;
19205        }
19206      }
19207
19208      Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));
19209    });
19210    horizon.forEach(function (horizonPart) {
19211      var affectedBoundary = horizonPart.boundary;
19212
19213      if (affectedBoundary.x2New === undefined) {
19214        affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
19215      }
19216    });
19217  }
19218
19219  function TextLayerRenderTask(_ref) {
19220    var _this = this;
19221
19222    var textContent = _ref.textContent,
19223        textContentStream = _ref.textContentStream,
19224        container = _ref.container,
19225        viewport = _ref.viewport,
19226        textDivs = _ref.textDivs,
19227        textContentItemsStr = _ref.textContentItemsStr,
19228        enhanceTextSelection = _ref.enhanceTextSelection;
19229    this._textContent = textContent;
19230    this._textContentStream = textContentStream;
19231    this._container = container;
19232    this._viewport = viewport;
19233    this._textDivs = textDivs || [];
19234    this._textContentItemsStr = textContentItemsStr || [];
19235    this._enhanceTextSelection = !!enhanceTextSelection;
19236    this._fontInspectorEnabled = !!(_global_scope["default"].FontInspector && _global_scope["default"].FontInspector.enabled);
19237    this._reader = null;
19238    this._layoutTextLastFontSize = null;
19239    this._layoutTextLastFontFamily = null;
19240    this._layoutTextCtx = null;
19241    this._textDivProperties = new WeakMap();
19242    this._renderingDone = false;
19243    this._canceled = false;
19244    this._capability = (0, _util.createPromiseCapability)();
19245    this._renderTimer = null;
19246    this._bounds = [];
19247
19248    this._capability.promise["finally"](function () {
19249      if (_this._layoutTextCtx) {
19250        _this._layoutTextCtx.canvas.width = 0;
19251        _this._layoutTextCtx.canvas.height = 0;
19252        _this._layoutTextCtx = null;
19253      }
19254    });
19255  }
19256
19257  TextLayerRenderTask.prototype = {
19258    get promise() {
19259      return this._capability.promise;
19260    },
19261
19262    cancel: function TextLayer_cancel() {
19263      this._canceled = true;
19264
19265      if (this._reader) {
19266        this._reader.cancel(new _util.AbortException('TextLayer task cancelled.'));
19267
19268        this._reader = null;
19269      }
19270
19271      if (this._renderTimer !== null) {
19272        clearTimeout(this._renderTimer);
19273        this._renderTimer = null;
19274      }
19275
19276      this._capability.reject(new Error('TextLayer task cancelled.'));
19277    },
19278    _processItems: function _processItems(items, styleCache) {
19279      for (var i = 0, len = items.length; i < len; i++) {
19280        this._textContentItemsStr.push(items[i].str);
19281
19282        appendText(this, items[i], styleCache);
19283      }
19284    },
19285    _layoutText: function _layoutText(textDiv) {
19286      var textLayerFrag = this._container;
19287
19288      var textDivProperties = this._textDivProperties.get(textDiv);
19289
19290      if (textDivProperties.isWhitespace) {
19291        return;
19292      }
19293
19294      var fontSize = textDiv.style.fontSize;
19295      var fontFamily = textDiv.style.fontFamily;
19296
19297      if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {
19298        this._layoutTextCtx.font = fontSize + ' ' + fontFamily;
19299        this._layoutTextLastFontSize = fontSize;
19300        this._layoutTextLastFontFamily = fontFamily;
19301      }
19302
19303      var width = this._layoutTextCtx.measureText(textDiv.textContent).width;
19304
19305      var transform = '';
19306
19307      if (textDivProperties.canvasWidth !== 0 && width > 0) {
19308        textDivProperties.scale = textDivProperties.canvasWidth / width;
19309        transform = "scaleX(".concat(textDivProperties.scale, ")");
19310      }
19311
19312      if (textDivProperties.angle !== 0) {
19313        transform = "rotate(".concat(textDivProperties.angle, "deg) ").concat(transform);
19314      }
19315
19316      if (transform.length > 0) {
19317        textDivProperties.originalTransform = transform;
19318        textDiv.style.transform = transform;
19319      }
19320
19321      this._textDivProperties.set(textDiv, textDivProperties);
19322
19323      textLayerFrag.appendChild(textDiv);
19324    },
19325    _render: function TextLayer_render(timeout) {
19326      var _this2 = this;
19327
19328      var capability = (0, _util.createPromiseCapability)();
19329      var styleCache = Object.create(null);
19330      var canvas = document.createElement('canvas');
19331      canvas.mozOpaque = true;
19332      this._layoutTextCtx = canvas.getContext('2d', {
19333        alpha: false
19334      });
19335
19336      if (this._textContent) {
19337        var textItems = this._textContent.items;
19338        var textStyles = this._textContent.styles;
19339
19340        this._processItems(textItems, textStyles);
19341
19342        capability.resolve();
19343      } else if (this._textContentStream) {
19344        var pump = function pump() {
19345          _this2._reader.read().then(function (_ref2) {
19346            var value = _ref2.value,
19347                done = _ref2.done;
19348
19349            if (done) {
19350              capability.resolve();
19351              return;
19352            }
19353
19354            Object.assign(styleCache, value.styles);
19355
19356            _this2._processItems(value.items, styleCache);
19357
19358            pump();
19359          }, capability.reject);
19360        };
19361
19362        this._reader = this._textContentStream.getReader();
19363        pump();
19364      } else {
19365        throw new Error('Neither "textContent" nor "textContentStream"' + ' parameters specified.');
19366      }
19367
19368      capability.promise.then(function () {
19369        styleCache = null;
19370
19371        if (!timeout) {
19372          render(_this2);
19373        } else {
19374          _this2._renderTimer = setTimeout(function () {
19375            render(_this2);
19376            _this2._renderTimer = null;
19377          }, timeout);
19378        }
19379      }, this._capability.reject);
19380    },
19381    expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {
19382      if (!this._enhanceTextSelection || !this._renderingDone) {
19383        return;
19384      }
19385
19386      if (this._bounds !== null) {
19387        expand(this);
19388        this._bounds = null;
19389      }
19390
19391      for (var i = 0, ii = this._textDivs.length; i < ii; i++) {
19392        var div = this._textDivs[i];
19393
19394        var divProperties = this._textDivProperties.get(div);
19395
19396        if (divProperties.isWhitespace) {
19397          continue;
19398        }
19399
19400        if (expandDivs) {
19401          var transform = '',
19402              padding = '';
19403
19404          if (divProperties.scale !== 1) {
19405            transform = 'scaleX(' + divProperties.scale + ')';
19406          }
19407
19408          if (divProperties.angle !== 0) {
19409            transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;
19410          }
19411
19412          if (divProperties.paddingLeft !== 0) {
19413            padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;';
19414            transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)';
19415          }
19416
19417          if (divProperties.paddingTop !== 0) {
19418            padding += ' padding-top: ' + divProperties.paddingTop + 'px;';
19419            transform += ' translateY(' + -divProperties.paddingTop + 'px)';
19420          }
19421
19422          if (divProperties.paddingRight !== 0) {
19423            padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;';
19424          }
19425
19426          if (divProperties.paddingBottom !== 0) {
19427            padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;';
19428          }
19429
19430          if (padding !== '') {
19431            div.setAttribute('style', divProperties.style + padding);
19432          }
19433
19434          if (transform !== '') {
19435            div.style.transform = transform;
19436          }
19437        } else {
19438          div.style.padding = 0;
19439          div.style.transform = divProperties.originalTransform || '';
19440        }
19441      }
19442    }
19443  };
19444
19445  function renderTextLayer(renderParameters) {
19446    var task = new TextLayerRenderTask({
19447      textContent: renderParameters.textContent,
19448      textContentStream: renderParameters.textContentStream,
19449      container: renderParameters.container,
19450      viewport: renderParameters.viewport,
19451      textDivs: renderParameters.textDivs,
19452      textContentItemsStr: renderParameters.textContentItemsStr,
19453      enhanceTextSelection: renderParameters.enhanceTextSelection
19454    });
19455
19456    task._render(renderParameters.timeout);
19457
19458    return task;
19459  }
19460
19461  return renderTextLayer;
19462}();
19463
19464exports.renderTextLayer = renderTextLayer;
19465
19466/***/ }),
19467/* 163 */
19468/***/ (function(module, exports, __w_pdfjs_require__) {
19469
19470"use strict";
19471
19472
19473Object.defineProperty(exports, "__esModule", {
19474  value: true
19475});
19476exports.AnnotationLayer = void 0;
19477
19478var _display_utils = __w_pdfjs_require__(151);
19479
19480var _util = __w_pdfjs_require__(1);
19481
19482function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
19483
19484function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
19485
19486function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
19487
19488function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
19489
19490function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
19491
19492function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
19493
19494function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
19495
19496function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
19497
19498function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
19499
19500function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
19501
19502function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
19503
19504var AnnotationElementFactory =
19505/*#__PURE__*/
19506function () {
19507  function AnnotationElementFactory() {
19508    _classCallCheck(this, AnnotationElementFactory);
19509  }
19510
19511  _createClass(AnnotationElementFactory, null, [{
19512    key: "create",
19513    value: function create(parameters) {
19514      var subtype = parameters.data.annotationType;
19515
19516      switch (subtype) {
19517        case _util.AnnotationType.LINK:
19518          return new LinkAnnotationElement(parameters);
19519
19520        case _util.AnnotationType.TEXT:
19521          return new TextAnnotationElement(parameters);
19522
19523        case _util.AnnotationType.WIDGET:
19524          var fieldType = parameters.data.fieldType;
19525
19526          switch (fieldType) {
19527            case 'Tx':
19528              return new TextWidgetAnnotationElement(parameters);
19529
19530            case 'Btn':
19531              if (parameters.data.radioButton) {
19532                return new RadioButtonWidgetAnnotationElement(parameters);
19533              } else if (parameters.data.checkBox) {
19534                return new CheckboxWidgetAnnotationElement(parameters);
19535              }
19536
19537              return new PushButtonWidgetAnnotationElement(parameters);
19538
19539            case 'Ch':
19540              return new ChoiceWidgetAnnotationElement(parameters);
19541          }
19542
19543          return new WidgetAnnotationElement(parameters);
19544
19545        case _util.AnnotationType.POPUP:
19546          return new PopupAnnotationElement(parameters);
19547
19548        case _util.AnnotationType.FREETEXT:
19549          return new FreeTextAnnotationElement(parameters);
19550
19551        case _util.AnnotationType.LINE:
19552          return new LineAnnotationElement(parameters);
19553
19554        case _util.AnnotationType.SQUARE:
19555          return new SquareAnnotationElement(parameters);
19556
19557        case _util.AnnotationType.CIRCLE:
19558          return new CircleAnnotationElement(parameters);
19559
19560        case _util.AnnotationType.POLYLINE:
19561          return new PolylineAnnotationElement(parameters);
19562
19563        case _util.AnnotationType.CARET:
19564          return new CaretAnnotationElement(parameters);
19565
19566        case _util.AnnotationType.INK:
19567          return new InkAnnotationElement(parameters);
19568
19569        case _util.AnnotationType.POLYGON:
19570          return new PolygonAnnotationElement(parameters);
19571
19572        case _util.AnnotationType.HIGHLIGHT:
19573          return new HighlightAnnotationElement(parameters);
19574
19575        case _util.AnnotationType.UNDERLINE:
19576          return new UnderlineAnnotationElement(parameters);
19577
19578        case _util.AnnotationType.SQUIGGLY:
19579          return new SquigglyAnnotationElement(parameters);
19580
19581        case _util.AnnotationType.STRIKEOUT:
19582          return new StrikeOutAnnotationElement(parameters);
19583
19584        case _util.AnnotationType.STAMP:
19585          return new StampAnnotationElement(parameters);
19586
19587        case _util.AnnotationType.FILEATTACHMENT:
19588          return new FileAttachmentAnnotationElement(parameters);
19589
19590        default:
19591          return new AnnotationElement(parameters);
19592      }
19593    }
19594  }]);
19595
19596  return AnnotationElementFactory;
19597}();
19598
19599var AnnotationElement =
19600/*#__PURE__*/
19601function () {
19602  function AnnotationElement(parameters) {
19603    var isRenderable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
19604    var ignoreBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
19605
19606    _classCallCheck(this, AnnotationElement);
19607
19608    this.isRenderable = isRenderable;
19609    this.data = parameters.data;
19610    this.layer = parameters.layer;
19611    this.page = parameters.page;
19612    this.viewport = parameters.viewport;
19613    this.linkService = parameters.linkService;
19614    this.downloadManager = parameters.downloadManager;
19615    this.imageResourcesPath = parameters.imageResourcesPath;
19616    this.renderInteractiveForms = parameters.renderInteractiveForms;
19617    this.svgFactory = parameters.svgFactory;
19618
19619    if (isRenderable) {
19620      this.container = this._createContainer(ignoreBorder);
19621    }
19622  }
19623
19624  _createClass(AnnotationElement, [{
19625    key: "_createContainer",
19626    value: function _createContainer() {
19627      var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
19628      var data = this.data,
19629          page = this.page,
19630          viewport = this.viewport;
19631      var container = document.createElement('section');
19632      var width = data.rect[2] - data.rect[0];
19633      var height = data.rect[3] - data.rect[1];
19634      container.setAttribute('data-annotation-id', data.id);
19635
19636      var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);
19637
19638      container.style.transform = 'matrix(' + viewport.transform.join(',') + ')';
19639      container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px';
19640
19641      if (!ignoreBorder && data.borderStyle.width > 0) {
19642        container.style.borderWidth = data.borderStyle.width + 'px';
19643
19644        if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {
19645          width = width - 2 * data.borderStyle.width;
19646          height = height - 2 * data.borderStyle.width;
19647        }
19648
19649        var horizontalRadius = data.borderStyle.horizontalCornerRadius;
19650        var verticalRadius = data.borderStyle.verticalCornerRadius;
19651
19652        if (horizontalRadius > 0 || verticalRadius > 0) {
19653          var radius = horizontalRadius + 'px / ' + verticalRadius + 'px';
19654          container.style.borderRadius = radius;
19655        }
19656
19657        switch (data.borderStyle.style) {
19658          case _util.AnnotationBorderStyleType.SOLID:
19659            container.style.borderStyle = 'solid';
19660            break;
19661
19662          case _util.AnnotationBorderStyleType.DASHED:
19663            container.style.borderStyle = 'dashed';
19664            break;
19665
19666          case _util.AnnotationBorderStyleType.BEVELED:
19667            (0, _util.warn)('Unimplemented border style: beveled');
19668            break;
19669
19670          case _util.AnnotationBorderStyleType.INSET:
19671            (0, _util.warn)('Unimplemented border style: inset');
19672            break;
19673
19674          case _util.AnnotationBorderStyleType.UNDERLINE:
19675            container.style.borderBottomStyle = 'solid';
19676            break;
19677
19678          default:
19679            break;
19680        }
19681
19682        if (data.color) {
19683          container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
19684        } else {
19685          container.style.borderWidth = 0;
19686        }
19687      }
19688
19689      container.style.left = rect[0] + 'px';
19690      container.style.top = rect[1] + 'px';
19691      container.style.width = width + 'px';
19692      container.style.height = height + 'px';
19693      return container;
19694    }
19695  }, {
19696    key: "_createPopup",
19697    value: function _createPopup(container, trigger, data) {
19698      if (!trigger) {
19699        trigger = document.createElement('div');
19700        trigger.style.height = container.style.height;
19701        trigger.style.width = container.style.width;
19702        container.appendChild(trigger);
19703      }
19704
19705      var popupElement = new PopupElement({
19706        container: container,
19707        trigger: trigger,
19708        color: data.color,
19709        title: data.title,
19710        modificationDate: data.modificationDate,
19711        contents: data.contents,
19712        hideWrapper: true
19713      });
19714      var popup = popupElement.render();
19715      popup.style.left = container.style.width;
19716      container.appendChild(popup);
19717    }
19718  }, {
19719    key: "render",
19720    value: function render() {
19721      (0, _util.unreachable)('Abstract method `AnnotationElement.render` called');
19722    }
19723  }]);
19724
19725  return AnnotationElement;
19726}();
19727
19728var LinkAnnotationElement =
19729/*#__PURE__*/
19730function (_AnnotationElement) {
19731  _inherits(LinkAnnotationElement, _AnnotationElement);
19732
19733  function LinkAnnotationElement(parameters) {
19734    _classCallCheck(this, LinkAnnotationElement);
19735
19736    var isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);
19737    return _possibleConstructorReturn(this, _getPrototypeOf(LinkAnnotationElement).call(this, parameters, isRenderable));
19738  }
19739
19740  _createClass(LinkAnnotationElement, [{
19741    key: "render",
19742    value: function render() {
19743      this.container.className = 'linkAnnotation';
19744      var data = this.data,
19745          linkService = this.linkService;
19746      var link = document.createElement('a');
19747      (0, _display_utils.addLinkAttributes)(link, {
19748        url: data.url,
19749        target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget,
19750        rel: linkService.externalLinkRel
19751      });
19752
19753      if (!data.url) {
19754        if (data.action) {
19755          this._bindNamedAction(link, data.action);
19756        } else {
19757          this._bindLink(link, data.dest);
19758        }
19759      }
19760
19761      this.container.appendChild(link);
19762      return this.container;
19763    }
19764  }, {
19765    key: "_bindLink",
19766    value: function _bindLink(link, destination) {
19767      var _this = this;
19768
19769      link.href = this.linkService.getDestinationHash(destination);
19770
19771      link.onclick = function () {
19772        if (destination) {
19773          _this.linkService.navigateTo(destination);
19774        }
19775
19776        return false;
19777      };
19778
19779      if (destination) {
19780        link.className = 'internalLink';
19781      }
19782    }
19783  }, {
19784    key: "_bindNamedAction",
19785    value: function _bindNamedAction(link, action) {
19786      var _this2 = this;
19787
19788      link.href = this.linkService.getAnchorUrl('');
19789
19790      link.onclick = function () {
19791        _this2.linkService.executeNamedAction(action);
19792
19793        return false;
19794      };
19795
19796      link.className = 'internalLink';
19797    }
19798  }]);
19799
19800  return LinkAnnotationElement;
19801}(AnnotationElement);
19802
19803var TextAnnotationElement =
19804/*#__PURE__*/
19805function (_AnnotationElement2) {
19806  _inherits(TextAnnotationElement, _AnnotationElement2);
19807
19808  function TextAnnotationElement(parameters) {
19809    _classCallCheck(this, TextAnnotationElement);
19810
19811    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
19812    return _possibleConstructorReturn(this, _getPrototypeOf(TextAnnotationElement).call(this, parameters, isRenderable));
19813  }
19814
19815  _createClass(TextAnnotationElement, [{
19816    key: "render",
19817    value: function render() {
19818      this.container.className = 'textAnnotation';
19819      var image = document.createElement('img');
19820      image.style.height = this.container.style.height;
19821      image.style.width = this.container.style.width;
19822      image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg';
19823      image.alt = '[{{type}} Annotation]';
19824      image.dataset.l10nId = 'text_annotation_type';
19825      image.dataset.l10nArgs = JSON.stringify({
19826        type: this.data.name
19827      });
19828
19829      if (!this.data.hasPopup) {
19830        this._createPopup(this.container, image, this.data);
19831      }
19832
19833      this.container.appendChild(image);
19834      return this.container;
19835    }
19836  }]);
19837
19838  return TextAnnotationElement;
19839}(AnnotationElement);
19840
19841var WidgetAnnotationElement =
19842/*#__PURE__*/
19843function (_AnnotationElement3) {
19844  _inherits(WidgetAnnotationElement, _AnnotationElement3);
19845
19846  function WidgetAnnotationElement() {
19847    _classCallCheck(this, WidgetAnnotationElement);
19848
19849    return _possibleConstructorReturn(this, _getPrototypeOf(WidgetAnnotationElement).apply(this, arguments));
19850  }
19851
19852  _createClass(WidgetAnnotationElement, [{
19853    key: "render",
19854    value: function render() {
19855      return this.container;
19856    }
19857  }]);
19858
19859  return WidgetAnnotationElement;
19860}(AnnotationElement);
19861
19862var TextWidgetAnnotationElement =
19863/*#__PURE__*/
19864function (_WidgetAnnotationElem) {
19865  _inherits(TextWidgetAnnotationElement, _WidgetAnnotationElem);
19866
19867  function TextWidgetAnnotationElement(parameters) {
19868    _classCallCheck(this, TextWidgetAnnotationElement);
19869
19870    var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
19871    return _possibleConstructorReturn(this, _getPrototypeOf(TextWidgetAnnotationElement).call(this, parameters, isRenderable));
19872  }
19873
19874  _createClass(TextWidgetAnnotationElement, [{
19875    key: "render",
19876    value: function render() {
19877      var TEXT_ALIGNMENT = ['left', 'center', 'right'];
19878      this.container.className = 'textWidgetAnnotation';
19879      var element = null;
19880
19881      if (this.renderInteractiveForms) {
19882        if (this.data.multiLine) {
19883          element = document.createElement('textarea');
19884          element.textContent = this.data.fieldValue;
19885        } else {
19886          element = document.createElement('input');
19887          element.type = 'text';
19888          element.setAttribute('value', this.data.fieldValue);
19889        }
19890
19891        element.disabled = this.data.readOnly;
19892
19893        if (this.data.maxLen !== null) {
19894          element.maxLength = this.data.maxLen;
19895        }
19896
19897        if (this.data.comb) {
19898          var fieldWidth = this.data.rect[2] - this.data.rect[0];
19899          var combWidth = fieldWidth / this.data.maxLen;
19900          element.classList.add('comb');
19901          element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';
19902        }
19903      } else {
19904        element = document.createElement('div');
19905        element.textContent = this.data.fieldValue;
19906        element.style.verticalAlign = 'middle';
19907        element.style.display = 'table-cell';
19908        var font = null;
19909
19910        if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) {
19911          font = this.page.commonObjs.get(this.data.fontRefName);
19912        }
19913
19914        this._setTextStyle(element, font);
19915      }
19916
19917      if (this.data.textAlignment !== null) {
19918        element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
19919      }
19920
19921      this.container.appendChild(element);
19922      return this.container;
19923    }
19924  }, {
19925    key: "_setTextStyle",
19926    value: function _setTextStyle(element, font) {
19927      var style = element.style;
19928      style.fontSize = this.data.fontSize + 'px';
19929      style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr';
19930
19931      if (!font) {
19932        return;
19933      }
19934
19935      style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal';
19936      style.fontStyle = font.italic ? 'italic' : 'normal';
19937      var fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : '';
19938      var fallbackName = font.fallbackName || 'Helvetica, sans-serif';
19939      style.fontFamily = fontFamily + fallbackName;
19940    }
19941  }]);
19942
19943  return TextWidgetAnnotationElement;
19944}(WidgetAnnotationElement);
19945
19946var CheckboxWidgetAnnotationElement =
19947/*#__PURE__*/
19948function (_WidgetAnnotationElem2) {
19949  _inherits(CheckboxWidgetAnnotationElement, _WidgetAnnotationElem2);
19950
19951  function CheckboxWidgetAnnotationElement(parameters) {
19952    _classCallCheck(this, CheckboxWidgetAnnotationElement);
19953
19954    return _possibleConstructorReturn(this, _getPrototypeOf(CheckboxWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms));
19955  }
19956
19957  _createClass(CheckboxWidgetAnnotationElement, [{
19958    key: "render",
19959    value: function render() {
19960      this.container.className = 'buttonWidgetAnnotation checkBox';
19961      var element = document.createElement('input');
19962      element.disabled = this.data.readOnly;
19963      element.type = 'checkbox';
19964
19965      if (this.data.fieldValue && this.data.fieldValue !== 'Off') {
19966        element.setAttribute('checked', true);
19967      }
19968
19969      this.container.appendChild(element);
19970      return this.container;
19971    }
19972  }]);
19973
19974  return CheckboxWidgetAnnotationElement;
19975}(WidgetAnnotationElement);
19976
19977var RadioButtonWidgetAnnotationElement =
19978/*#__PURE__*/
19979function (_WidgetAnnotationElem3) {
19980  _inherits(RadioButtonWidgetAnnotationElement, _WidgetAnnotationElem3);
19981
19982  function RadioButtonWidgetAnnotationElement(parameters) {
19983    _classCallCheck(this, RadioButtonWidgetAnnotationElement);
19984
19985    return _possibleConstructorReturn(this, _getPrototypeOf(RadioButtonWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms));
19986  }
19987
19988  _createClass(RadioButtonWidgetAnnotationElement, [{
19989    key: "render",
19990    value: function render() {
19991      this.container.className = 'buttonWidgetAnnotation radioButton';
19992      var element = document.createElement('input');
19993      element.disabled = this.data.readOnly;
19994      element.type = 'radio';
19995      element.name = this.data.fieldName;
19996
19997      if (this.data.fieldValue === this.data.buttonValue) {
19998        element.setAttribute('checked', true);
19999      }
20000
20001      this.container.appendChild(element);
20002      return this.container;
20003    }
20004  }]);
20005
20006  return RadioButtonWidgetAnnotationElement;
20007}(WidgetAnnotationElement);
20008
20009var PushButtonWidgetAnnotationElement =
20010/*#__PURE__*/
20011function (_LinkAnnotationElemen) {
20012  _inherits(PushButtonWidgetAnnotationElement, _LinkAnnotationElemen);
20013
20014  function PushButtonWidgetAnnotationElement() {
20015    _classCallCheck(this, PushButtonWidgetAnnotationElement);
20016
20017    return _possibleConstructorReturn(this, _getPrototypeOf(PushButtonWidgetAnnotationElement).apply(this, arguments));
20018  }
20019
20020  _createClass(PushButtonWidgetAnnotationElement, [{
20021    key: "render",
20022    value: function render() {
20023      var container = _get(_getPrototypeOf(PushButtonWidgetAnnotationElement.prototype), "render", this).call(this);
20024
20025      container.className = 'buttonWidgetAnnotation pushButton';
20026      return container;
20027    }
20028  }]);
20029
20030  return PushButtonWidgetAnnotationElement;
20031}(LinkAnnotationElement);
20032
20033var ChoiceWidgetAnnotationElement =
20034/*#__PURE__*/
20035function (_WidgetAnnotationElem4) {
20036  _inherits(ChoiceWidgetAnnotationElement, _WidgetAnnotationElem4);
20037
20038  function ChoiceWidgetAnnotationElement(parameters) {
20039    _classCallCheck(this, ChoiceWidgetAnnotationElement);
20040
20041    return _possibleConstructorReturn(this, _getPrototypeOf(ChoiceWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms));
20042  }
20043
20044  _createClass(ChoiceWidgetAnnotationElement, [{
20045    key: "render",
20046    value: function render() {
20047      this.container.className = 'choiceWidgetAnnotation';
20048      var selectElement = document.createElement('select');
20049      selectElement.disabled = this.data.readOnly;
20050
20051      if (!this.data.combo) {
20052        selectElement.size = this.data.options.length;
20053
20054        if (this.data.multiSelect) {
20055          selectElement.multiple = true;
20056        }
20057      }
20058
20059      for (var i = 0, ii = this.data.options.length; i < ii; i++) {
20060        var option = this.data.options[i];
20061        var optionElement = document.createElement('option');
20062        optionElement.textContent = option.displayValue;
20063        optionElement.value = option.exportValue;
20064
20065        if (this.data.fieldValue.includes(option.displayValue)) {
20066          optionElement.setAttribute('selected', true);
20067        }
20068
20069        selectElement.appendChild(optionElement);
20070      }
20071
20072      this.container.appendChild(selectElement);
20073      return this.container;
20074    }
20075  }]);
20076
20077  return ChoiceWidgetAnnotationElement;
20078}(WidgetAnnotationElement);
20079
20080var PopupAnnotationElement =
20081/*#__PURE__*/
20082function (_AnnotationElement4) {
20083  _inherits(PopupAnnotationElement, _AnnotationElement4);
20084
20085  function PopupAnnotationElement(parameters) {
20086    _classCallCheck(this, PopupAnnotationElement);
20087
20088    var isRenderable = !!(parameters.data.title || parameters.data.contents);
20089    return _possibleConstructorReturn(this, _getPrototypeOf(PopupAnnotationElement).call(this, parameters, isRenderable));
20090  }
20091
20092  _createClass(PopupAnnotationElement, [{
20093    key: "render",
20094    value: function render() {
20095      var IGNORE_TYPES = ['Line', 'Square', 'Circle', 'PolyLine', 'Polygon', 'Ink'];
20096      this.container.className = 'popupAnnotation';
20097
20098      if (IGNORE_TYPES.includes(this.data.parentType)) {
20099        return this.container;
20100      }
20101
20102      var selector = '[data-annotation-id="' + this.data.parentId + '"]';
20103      var parentElement = this.layer.querySelector(selector);
20104
20105      if (!parentElement) {
20106        return this.container;
20107      }
20108
20109      var popup = new PopupElement({
20110        container: this.container,
20111        trigger: parentElement,
20112        color: this.data.color,
20113        title: this.data.title,
20114        modificationDate: this.data.modificationDate,
20115        contents: this.data.contents
20116      });
20117      var parentLeft = parseFloat(parentElement.style.left);
20118      var parentWidth = parseFloat(parentElement.style.width);
20119      this.container.style.transformOrigin = -(parentLeft + parentWidth) + 'px -' + parentElement.style.top;
20120      this.container.style.left = parentLeft + parentWidth + 'px';
20121      this.container.appendChild(popup.render());
20122      return this.container;
20123    }
20124  }]);
20125
20126  return PopupAnnotationElement;
20127}(AnnotationElement);
20128
20129var PopupElement =
20130/*#__PURE__*/
20131function () {
20132  function PopupElement(parameters) {
20133    _classCallCheck(this, PopupElement);
20134
20135    this.container = parameters.container;
20136    this.trigger = parameters.trigger;
20137    this.color = parameters.color;
20138    this.title = parameters.title;
20139    this.modificationDate = parameters.modificationDate;
20140    this.contents = parameters.contents;
20141    this.hideWrapper = parameters.hideWrapper || false;
20142    this.pinned = false;
20143  }
20144
20145  _createClass(PopupElement, [{
20146    key: "render",
20147    value: function render() {
20148      var BACKGROUND_ENLIGHT = 0.7;
20149      var wrapper = document.createElement('div');
20150      wrapper.className = 'popupWrapper';
20151      this.hideElement = this.hideWrapper ? wrapper : this.container;
20152      this.hideElement.setAttribute('hidden', true);
20153      var popup = document.createElement('div');
20154      popup.className = 'popup';
20155      var color = this.color;
20156
20157      if (color) {
20158        var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
20159        var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
20160        var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
20161        popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);
20162      }
20163
20164      var title = document.createElement('h1');
20165      title.textContent = this.title;
20166      popup.appendChild(title);
20167
20168      var dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);
20169
20170      if (dateObject) {
20171        var modificationDate = document.createElement('span');
20172        modificationDate.textContent = '{{date}}, {{time}}';
20173        modificationDate.dataset.l10nId = 'annotation_date_string';
20174        modificationDate.dataset.l10nArgs = JSON.stringify({
20175          date: dateObject.toLocaleDateString(),
20176          time: dateObject.toLocaleTimeString()
20177        });
20178        popup.appendChild(modificationDate);
20179      }
20180
20181      var contents = this._formatContents(this.contents);
20182
20183      popup.appendChild(contents);
20184      this.trigger.addEventListener('click', this._toggle.bind(this));
20185      this.trigger.addEventListener('mouseover', this._show.bind(this, false));
20186      this.trigger.addEventListener('mouseout', this._hide.bind(this, false));
20187      popup.addEventListener('click', this._hide.bind(this, true));
20188      wrapper.appendChild(popup);
20189      return wrapper;
20190    }
20191  }, {
20192    key: "_formatContents",
20193    value: function _formatContents(contents) {
20194      var p = document.createElement('p');
20195      var lines = contents.split(/(?:\r\n?|\n)/);
20196
20197      for (var i = 0, ii = lines.length; i < ii; ++i) {
20198        var line = lines[i];
20199        p.appendChild(document.createTextNode(line));
20200
20201        if (i < ii - 1) {
20202          p.appendChild(document.createElement('br'));
20203        }
20204      }
20205
20206      return p;
20207    }
20208  }, {
20209    key: "_toggle",
20210    value: function _toggle() {
20211      if (this.pinned) {
20212        this._hide(true);
20213      } else {
20214        this._show(true);
20215      }
20216    }
20217  }, {
20218    key: "_show",
20219    value: function _show() {
20220      var pin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
20221
20222      if (pin) {
20223        this.pinned = true;
20224      }
20225
20226      if (this.hideElement.hasAttribute('hidden')) {
20227        this.hideElement.removeAttribute('hidden');
20228        this.container.style.zIndex += 1;
20229      }
20230    }
20231  }, {
20232    key: "_hide",
20233    value: function _hide() {
20234      var unpin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
20235
20236      if (unpin) {
20237        this.pinned = false;
20238      }
20239
20240      if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {
20241        this.hideElement.setAttribute('hidden', true);
20242        this.container.style.zIndex -= 1;
20243      }
20244    }
20245  }]);
20246
20247  return PopupElement;
20248}();
20249
20250var FreeTextAnnotationElement =
20251/*#__PURE__*/
20252function (_AnnotationElement5) {
20253  _inherits(FreeTextAnnotationElement, _AnnotationElement5);
20254
20255  function FreeTextAnnotationElement(parameters) {
20256    _classCallCheck(this, FreeTextAnnotationElement);
20257
20258    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20259    return _possibleConstructorReturn(this, _getPrototypeOf(FreeTextAnnotationElement).call(this, parameters, isRenderable, true));
20260  }
20261
20262  _createClass(FreeTextAnnotationElement, [{
20263    key: "render",
20264    value: function render() {
20265      this.container.className = 'freeTextAnnotation';
20266
20267      if (!this.data.hasPopup) {
20268        this._createPopup(this.container, null, this.data);
20269      }
20270
20271      return this.container;
20272    }
20273  }]);
20274
20275  return FreeTextAnnotationElement;
20276}(AnnotationElement);
20277
20278var LineAnnotationElement =
20279/*#__PURE__*/
20280function (_AnnotationElement6) {
20281  _inherits(LineAnnotationElement, _AnnotationElement6);
20282
20283  function LineAnnotationElement(parameters) {
20284    _classCallCheck(this, LineAnnotationElement);
20285
20286    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20287    return _possibleConstructorReturn(this, _getPrototypeOf(LineAnnotationElement).call(this, parameters, isRenderable, true));
20288  }
20289
20290  _createClass(LineAnnotationElement, [{
20291    key: "render",
20292    value: function render() {
20293      this.container.className = 'lineAnnotation';
20294      var data = this.data;
20295      var width = data.rect[2] - data.rect[0];
20296      var height = data.rect[3] - data.rect[1];
20297      var svg = this.svgFactory.create(width, height);
20298      var line = this.svgFactory.createElement('svg:line');
20299      line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]);
20300      line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]);
20301      line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]);
20302      line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]);
20303      line.setAttribute('stroke-width', data.borderStyle.width);
20304      line.setAttribute('stroke', 'transparent');
20305      svg.appendChild(line);
20306      this.container.append(svg);
20307
20308      this._createPopup(this.container, line, data);
20309
20310      return this.container;
20311    }
20312  }]);
20313
20314  return LineAnnotationElement;
20315}(AnnotationElement);
20316
20317var SquareAnnotationElement =
20318/*#__PURE__*/
20319function (_AnnotationElement7) {
20320  _inherits(SquareAnnotationElement, _AnnotationElement7);
20321
20322  function SquareAnnotationElement(parameters) {
20323    _classCallCheck(this, SquareAnnotationElement);
20324
20325    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20326    return _possibleConstructorReturn(this, _getPrototypeOf(SquareAnnotationElement).call(this, parameters, isRenderable, true));
20327  }
20328
20329  _createClass(SquareAnnotationElement, [{
20330    key: "render",
20331    value: function render() {
20332      this.container.className = 'squareAnnotation';
20333      var data = this.data;
20334      var width = data.rect[2] - data.rect[0];
20335      var height = data.rect[3] - data.rect[1];
20336      var svg = this.svgFactory.create(width, height);
20337      var borderWidth = data.borderStyle.width;
20338      var square = this.svgFactory.createElement('svg:rect');
20339      square.setAttribute('x', borderWidth / 2);
20340      square.setAttribute('y', borderWidth / 2);
20341      square.setAttribute('width', width - borderWidth);
20342      square.setAttribute('height', height - borderWidth);
20343      square.setAttribute('stroke-width', borderWidth);
20344      square.setAttribute('stroke', 'transparent');
20345      square.setAttribute('fill', 'none');
20346      svg.appendChild(square);
20347      this.container.append(svg);
20348
20349      this._createPopup(this.container, square, data);
20350
20351      return this.container;
20352    }
20353  }]);
20354
20355  return SquareAnnotationElement;
20356}(AnnotationElement);
20357
20358var CircleAnnotationElement =
20359/*#__PURE__*/
20360function (_AnnotationElement8) {
20361  _inherits(CircleAnnotationElement, _AnnotationElement8);
20362
20363  function CircleAnnotationElement(parameters) {
20364    _classCallCheck(this, CircleAnnotationElement);
20365
20366    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20367    return _possibleConstructorReturn(this, _getPrototypeOf(CircleAnnotationElement).call(this, parameters, isRenderable, true));
20368  }
20369
20370  _createClass(CircleAnnotationElement, [{
20371    key: "render",
20372    value: function render() {
20373      this.container.className = 'circleAnnotation';
20374      var data = this.data;
20375      var width = data.rect[2] - data.rect[0];
20376      var height = data.rect[3] - data.rect[1];
20377      var svg = this.svgFactory.create(width, height);
20378      var borderWidth = data.borderStyle.width;
20379      var circle = this.svgFactory.createElement('svg:ellipse');
20380      circle.setAttribute('cx', width / 2);
20381      circle.setAttribute('cy', height / 2);
20382      circle.setAttribute('rx', width / 2 - borderWidth / 2);
20383      circle.setAttribute('ry', height / 2 - borderWidth / 2);
20384      circle.setAttribute('stroke-width', borderWidth);
20385      circle.setAttribute('stroke', 'transparent');
20386      circle.setAttribute('fill', 'none');
20387      svg.appendChild(circle);
20388      this.container.append(svg);
20389
20390      this._createPopup(this.container, circle, data);
20391
20392      return this.container;
20393    }
20394  }]);
20395
20396  return CircleAnnotationElement;
20397}(AnnotationElement);
20398
20399var PolylineAnnotationElement =
20400/*#__PURE__*/
20401function (_AnnotationElement9) {
20402  _inherits(PolylineAnnotationElement, _AnnotationElement9);
20403
20404  function PolylineAnnotationElement(parameters) {
20405    var _this3;
20406
20407    _classCallCheck(this, PolylineAnnotationElement);
20408
20409    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20410    _this3 = _possibleConstructorReturn(this, _getPrototypeOf(PolylineAnnotationElement).call(this, parameters, isRenderable, true));
20411    _this3.containerClassName = 'polylineAnnotation';
20412    _this3.svgElementName = 'svg:polyline';
20413    return _this3;
20414  }
20415
20416  _createClass(PolylineAnnotationElement, [{
20417    key: "render",
20418    value: function render() {
20419      this.container.className = this.containerClassName;
20420      var data = this.data;
20421      var width = data.rect[2] - data.rect[0];
20422      var height = data.rect[3] - data.rect[1];
20423      var svg = this.svgFactory.create(width, height);
20424      var vertices = data.vertices;
20425      var points = [];
20426
20427      for (var i = 0, ii = vertices.length; i < ii; i++) {
20428        var x = vertices[i].x - data.rect[0];
20429        var y = data.rect[3] - vertices[i].y;
20430        points.push(x + ',' + y);
20431      }
20432
20433      points = points.join(' ');
20434      var borderWidth = data.borderStyle.width;
20435      var polyline = this.svgFactory.createElement(this.svgElementName);
20436      polyline.setAttribute('points', points);
20437      polyline.setAttribute('stroke-width', borderWidth);
20438      polyline.setAttribute('stroke', 'transparent');
20439      polyline.setAttribute('fill', 'none');
20440      svg.appendChild(polyline);
20441      this.container.append(svg);
20442
20443      this._createPopup(this.container, polyline, data);
20444
20445      return this.container;
20446    }
20447  }]);
20448
20449  return PolylineAnnotationElement;
20450}(AnnotationElement);
20451
20452var PolygonAnnotationElement =
20453/*#__PURE__*/
20454function (_PolylineAnnotationEl) {
20455  _inherits(PolygonAnnotationElement, _PolylineAnnotationEl);
20456
20457  function PolygonAnnotationElement(parameters) {
20458    var _this4;
20459
20460    _classCallCheck(this, PolygonAnnotationElement);
20461
20462    _this4 = _possibleConstructorReturn(this, _getPrototypeOf(PolygonAnnotationElement).call(this, parameters));
20463    _this4.containerClassName = 'polygonAnnotation';
20464    _this4.svgElementName = 'svg:polygon';
20465    return _this4;
20466  }
20467
20468  return PolygonAnnotationElement;
20469}(PolylineAnnotationElement);
20470
20471var CaretAnnotationElement =
20472/*#__PURE__*/
20473function (_AnnotationElement10) {
20474  _inherits(CaretAnnotationElement, _AnnotationElement10);
20475
20476  function CaretAnnotationElement(parameters) {
20477    _classCallCheck(this, CaretAnnotationElement);
20478
20479    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20480    return _possibleConstructorReturn(this, _getPrototypeOf(CaretAnnotationElement).call(this, parameters, isRenderable, true));
20481  }
20482
20483  _createClass(CaretAnnotationElement, [{
20484    key: "render",
20485    value: function render() {
20486      this.container.className = 'caretAnnotation';
20487
20488      if (!this.data.hasPopup) {
20489        this._createPopup(this.container, null, this.data);
20490      }
20491
20492      return this.container;
20493    }
20494  }]);
20495
20496  return CaretAnnotationElement;
20497}(AnnotationElement);
20498
20499var InkAnnotationElement =
20500/*#__PURE__*/
20501function (_AnnotationElement11) {
20502  _inherits(InkAnnotationElement, _AnnotationElement11);
20503
20504  function InkAnnotationElement(parameters) {
20505    var _this5;
20506
20507    _classCallCheck(this, InkAnnotationElement);
20508
20509    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20510    _this5 = _possibleConstructorReturn(this, _getPrototypeOf(InkAnnotationElement).call(this, parameters, isRenderable, true));
20511    _this5.containerClassName = 'inkAnnotation';
20512    _this5.svgElementName = 'svg:polyline';
20513    return _this5;
20514  }
20515
20516  _createClass(InkAnnotationElement, [{
20517    key: "render",
20518    value: function render() {
20519      this.container.className = this.containerClassName;
20520      var data = this.data;
20521      var width = data.rect[2] - data.rect[0];
20522      var height = data.rect[3] - data.rect[1];
20523      var svg = this.svgFactory.create(width, height);
20524      var inkLists = data.inkLists;
20525
20526      for (var i = 0, ii = inkLists.length; i < ii; i++) {
20527        var inkList = inkLists[i];
20528        var points = [];
20529
20530        for (var j = 0, jj = inkList.length; j < jj; j++) {
20531          var x = inkList[j].x - data.rect[0];
20532          var y = data.rect[3] - inkList[j].y;
20533          points.push(x + ',' + y);
20534        }
20535
20536        points = points.join(' ');
20537        var borderWidth = data.borderStyle.width;
20538        var polyline = this.svgFactory.createElement(this.svgElementName);
20539        polyline.setAttribute('points', points);
20540        polyline.setAttribute('stroke-width', borderWidth);
20541        polyline.setAttribute('stroke', 'transparent');
20542        polyline.setAttribute('fill', 'none');
20543
20544        this._createPopup(this.container, polyline, data);
20545
20546        svg.appendChild(polyline);
20547      }
20548
20549      this.container.append(svg);
20550      return this.container;
20551    }
20552  }]);
20553
20554  return InkAnnotationElement;
20555}(AnnotationElement);
20556
20557var HighlightAnnotationElement =
20558/*#__PURE__*/
20559function (_AnnotationElement12) {
20560  _inherits(HighlightAnnotationElement, _AnnotationElement12);
20561
20562  function HighlightAnnotationElement(parameters) {
20563    _classCallCheck(this, HighlightAnnotationElement);
20564
20565    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20566    return _possibleConstructorReturn(this, _getPrototypeOf(HighlightAnnotationElement).call(this, parameters, isRenderable, true));
20567  }
20568
20569  _createClass(HighlightAnnotationElement, [{
20570    key: "render",
20571    value: function render() {
20572      this.container.className = 'highlightAnnotation';
20573
20574      if (!this.data.hasPopup) {
20575        this._createPopup(this.container, null, this.data);
20576      }
20577
20578      return this.container;
20579    }
20580  }]);
20581
20582  return HighlightAnnotationElement;
20583}(AnnotationElement);
20584
20585var UnderlineAnnotationElement =
20586/*#__PURE__*/
20587function (_AnnotationElement13) {
20588  _inherits(UnderlineAnnotationElement, _AnnotationElement13);
20589
20590  function UnderlineAnnotationElement(parameters) {
20591    _classCallCheck(this, UnderlineAnnotationElement);
20592
20593    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20594    return _possibleConstructorReturn(this, _getPrototypeOf(UnderlineAnnotationElement).call(this, parameters, isRenderable, true));
20595  }
20596
20597  _createClass(UnderlineAnnotationElement, [{
20598    key: "render",
20599    value: function render() {
20600      this.container.className = 'underlineAnnotation';
20601
20602      if (!this.data.hasPopup) {
20603        this._createPopup(this.container, null, this.data);
20604      }
20605
20606      return this.container;
20607    }
20608  }]);
20609
20610  return UnderlineAnnotationElement;
20611}(AnnotationElement);
20612
20613var SquigglyAnnotationElement =
20614/*#__PURE__*/
20615function (_AnnotationElement14) {
20616  _inherits(SquigglyAnnotationElement, _AnnotationElement14);
20617
20618  function SquigglyAnnotationElement(parameters) {
20619    _classCallCheck(this, SquigglyAnnotationElement);
20620
20621    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20622    return _possibleConstructorReturn(this, _getPrototypeOf(SquigglyAnnotationElement).call(this, parameters, isRenderable, true));
20623  }
20624
20625  _createClass(SquigglyAnnotationElement, [{
20626    key: "render",
20627    value: function render() {
20628      this.container.className = 'squigglyAnnotation';
20629
20630      if (!this.data.hasPopup) {
20631        this._createPopup(this.container, null, this.data);
20632      }
20633
20634      return this.container;
20635    }
20636  }]);
20637
20638  return SquigglyAnnotationElement;
20639}(AnnotationElement);
20640
20641var StrikeOutAnnotationElement =
20642/*#__PURE__*/
20643function (_AnnotationElement15) {
20644  _inherits(StrikeOutAnnotationElement, _AnnotationElement15);
20645
20646  function StrikeOutAnnotationElement(parameters) {
20647    _classCallCheck(this, StrikeOutAnnotationElement);
20648
20649    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20650    return _possibleConstructorReturn(this, _getPrototypeOf(StrikeOutAnnotationElement).call(this, parameters, isRenderable, true));
20651  }
20652
20653  _createClass(StrikeOutAnnotationElement, [{
20654    key: "render",
20655    value: function render() {
20656      this.container.className = 'strikeoutAnnotation';
20657
20658      if (!this.data.hasPopup) {
20659        this._createPopup(this.container, null, this.data);
20660      }
20661
20662      return this.container;
20663    }
20664  }]);
20665
20666  return StrikeOutAnnotationElement;
20667}(AnnotationElement);
20668
20669var StampAnnotationElement =
20670/*#__PURE__*/
20671function (_AnnotationElement16) {
20672  _inherits(StampAnnotationElement, _AnnotationElement16);
20673
20674  function StampAnnotationElement(parameters) {
20675    _classCallCheck(this, StampAnnotationElement);
20676
20677    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20678    return _possibleConstructorReturn(this, _getPrototypeOf(StampAnnotationElement).call(this, parameters, isRenderable, true));
20679  }
20680
20681  _createClass(StampAnnotationElement, [{
20682    key: "render",
20683    value: function render() {
20684      this.container.className = 'stampAnnotation';
20685
20686      if (!this.data.hasPopup) {
20687        this._createPopup(this.container, null, this.data);
20688      }
20689
20690      return this.container;
20691    }
20692  }]);
20693
20694  return StampAnnotationElement;
20695}(AnnotationElement);
20696
20697var FileAttachmentAnnotationElement =
20698/*#__PURE__*/
20699function (_AnnotationElement17) {
20700  _inherits(FileAttachmentAnnotationElement, _AnnotationElement17);
20701
20702  function FileAttachmentAnnotationElement(parameters) {
20703    var _this6;
20704
20705    _classCallCheck(this, FileAttachmentAnnotationElement);
20706
20707    _this6 = _possibleConstructorReturn(this, _getPrototypeOf(FileAttachmentAnnotationElement).call(this, parameters, true));
20708    var _this6$data$file = _this6.data.file,
20709        filename = _this6$data$file.filename,
20710        content = _this6$data$file.content;
20711    _this6.filename = (0, _display_utils.getFilenameFromUrl)(filename);
20712    _this6.content = content;
20713
20714    if (_this6.linkService.eventBus) {
20715      _this6.linkService.eventBus.dispatch('fileattachmentannotation', {
20716        source: _assertThisInitialized(_this6),
20717        id: (0, _util.stringToPDFString)(filename),
20718        filename: filename,
20719        content: content
20720      });
20721    }
20722
20723    return _this6;
20724  }
20725
20726  _createClass(FileAttachmentAnnotationElement, [{
20727    key: "render",
20728    value: function render() {
20729      this.container.className = 'fileAttachmentAnnotation';
20730      var trigger = document.createElement('div');
20731      trigger.style.height = this.container.style.height;
20732      trigger.style.width = this.container.style.width;
20733      trigger.addEventListener('dblclick', this._download.bind(this));
20734
20735      if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
20736        this._createPopup(this.container, trigger, this.data);
20737      }
20738
20739      this.container.appendChild(trigger);
20740      return this.container;
20741    }
20742  }, {
20743    key: "_download",
20744    value: function _download() {
20745      if (!this.downloadManager) {
20746        (0, _util.warn)('Download cannot be started due to unavailable download manager');
20747        return;
20748      }
20749
20750      this.downloadManager.downloadData(this.content, this.filename, '');
20751    }
20752  }]);
20753
20754  return FileAttachmentAnnotationElement;
20755}(AnnotationElement);
20756
20757var AnnotationLayer =
20758/*#__PURE__*/
20759function () {
20760  function AnnotationLayer() {
20761    _classCallCheck(this, AnnotationLayer);
20762  }
20763
20764  _createClass(AnnotationLayer, null, [{
20765    key: "render",
20766    value: function render(parameters) {
20767      for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {
20768        var data = parameters.annotations[i];
20769
20770        if (!data) {
20771          continue;
20772        }
20773
20774        var element = AnnotationElementFactory.create({
20775          data: data,
20776          layer: parameters.div,
20777          page: parameters.page,
20778          viewport: parameters.viewport,
20779          linkService: parameters.linkService,
20780          downloadManager: parameters.downloadManager,
20781          imageResourcesPath: parameters.imageResourcesPath || '',
20782          renderInteractiveForms: parameters.renderInteractiveForms || false,
20783          svgFactory: new _display_utils.DOMSVGFactory()
20784        });
20785
20786        if (element.isRenderable) {
20787          parameters.div.appendChild(element.render());
20788        }
20789      }
20790    }
20791  }, {
20792    key: "update",
20793    value: function update(parameters) {
20794      for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {
20795        var data = parameters.annotations[i];
20796        var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]');
20797
20798        if (element) {
20799          element.style.transform = 'matrix(' + parameters.viewport.transform.join(',') + ')';
20800        }
20801      }
20802
20803      parameters.div.removeAttribute('hidden');
20804    }
20805  }]);
20806
20807  return AnnotationLayer;
20808}();
20809
20810exports.AnnotationLayer = AnnotationLayer;
20811
20812/***/ }),
20813/* 164 */
20814/***/ (function(module, exports, __w_pdfjs_require__) {
20815
20816"use strict";
20817
20818
20819Object.defineProperty(exports, "__esModule", {
20820  value: true
20821});
20822exports.SVGGraphics = void 0;
20823
20824var _util = __w_pdfjs_require__(1);
20825
20826var _display_utils = __w_pdfjs_require__(151);
20827
20828var _is_node = _interopRequireDefault(__w_pdfjs_require__(4));
20829
20830function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
20831
20832function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
20833
20834function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
20835
20836function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
20837
20838function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
20839
20840function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
20841
20842function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
20843
20844function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
20845
20846function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20847
20848function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
20849
20850function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
20851
20852function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
20853
20854var SVGGraphics = function SVGGraphics() {
20855  throw new Error('Not implemented: SVGGraphics');
20856};
20857
20858exports.SVGGraphics = SVGGraphics;
20859{
20860  var opListToTree = function opListToTree(opList) {
20861    var opTree = [];
20862    var tmp = [];
20863    var _iteratorNormalCompletion = true;
20864    var _didIteratorError = false;
20865    var _iteratorError = undefined;
20866
20867    try {
20868      for (var _iterator = opList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
20869        var opListElement = _step.value;
20870
20871        if (opListElement.fn === 'save') {
20872          opTree.push({
20873            'fnId': 92,
20874            'fn': 'group',
20875            'items': []
20876          });
20877          tmp.push(opTree);
20878          opTree = opTree[opTree.length - 1].items;
20879          continue;
20880        }
20881
20882        if (opListElement.fn === 'restore') {
20883          opTree = tmp.pop();
20884        } else {
20885          opTree.push(opListElement);
20886        }
20887      }
20888    } catch (err) {
20889      _didIteratorError = true;
20890      _iteratorError = err;
20891    } finally {
20892      try {
20893        if (!_iteratorNormalCompletion && _iterator["return"] != null) {
20894          _iterator["return"]();
20895        }
20896      } finally {
20897        if (_didIteratorError) {
20898          throw _iteratorError;
20899        }
20900      }
20901    }
20902
20903    return opTree;
20904  };
20905
20906  var pf = function pf(value) {
20907    if (Number.isInteger(value)) {
20908      return value.toString();
20909    }
20910
20911    var s = value.toFixed(10);
20912    var i = s.length - 1;
20913
20914    if (s[i] !== '0') {
20915      return s;
20916    }
20917
20918    do {
20919      i--;
20920    } while (s[i] === '0');
20921
20922    return s.substring(0, s[i] === '.' ? i : i + 1);
20923  };
20924
20925  var pm = function pm(m) {
20926    if (m[4] === 0 && m[5] === 0) {
20927      if (m[1] === 0 && m[2] === 0) {
20928        if (m[0] === 1 && m[3] === 1) {
20929          return '';
20930        }
20931
20932        return "scale(".concat(pf(m[0]), " ").concat(pf(m[3]), ")");
20933      }
20934
20935      if (m[0] === m[3] && m[1] === -m[2]) {
20936        var a = Math.acos(m[0]) * 180 / Math.PI;
20937        return "rotate(".concat(pf(a), ")");
20938      }
20939    } else {
20940      if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {
20941        return "translate(".concat(pf(m[4]), " ").concat(pf(m[5]), ")");
20942      }
20943    }
20944
20945    return "matrix(".concat(pf(m[0]), " ").concat(pf(m[1]), " ").concat(pf(m[2]), " ").concat(pf(m[3]), " ").concat(pf(m[4]), " ") + "".concat(pf(m[5]), ")");
20946  };
20947
20948  var SVG_DEFAULTS = {
20949    fontStyle: 'normal',
20950    fontWeight: 'normal',
20951    fillColor: '#000000'
20952  };
20953  var XML_NS = 'http://www.w3.org/XML/1998/namespace';
20954  var XLINK_NS = 'http://www.w3.org/1999/xlink';
20955  var LINE_CAP_STYLES = ['butt', 'round', 'square'];
20956  var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
20957
20958  var convertImgDataToPng = function () {
20959    var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
20960    var CHUNK_WRAPPER_SIZE = 12;
20961    var crcTable = new Int32Array(256);
20962
20963    for (var i = 0; i < 256; i++) {
20964      var c = i;
20965
20966      for (var h = 0; h < 8; h++) {
20967        if (c & 1) {
20968          c = 0xedB88320 ^ c >> 1 & 0x7fffffff;
20969        } else {
20970          c = c >> 1 & 0x7fffffff;
20971        }
20972      }
20973
20974      crcTable[i] = c;
20975    }
20976
20977    function crc32(data, start, end) {
20978      var crc = -1;
20979
20980      for (var _i = start; _i < end; _i++) {
20981        var a = (crc ^ data[_i]) & 0xff;
20982        var b = crcTable[a];
20983        crc = crc >>> 8 ^ b;
20984      }
20985
20986      return crc ^ -1;
20987    }
20988
20989    function writePngChunk(type, body, data, offset) {
20990      var p = offset;
20991      var len = body.length;
20992      data[p] = len >> 24 & 0xff;
20993      data[p + 1] = len >> 16 & 0xff;
20994      data[p + 2] = len >> 8 & 0xff;
20995      data[p + 3] = len & 0xff;
20996      p += 4;
20997      data[p] = type.charCodeAt(0) & 0xff;
20998      data[p + 1] = type.charCodeAt(1) & 0xff;
20999      data[p + 2] = type.charCodeAt(2) & 0xff;
21000      data[p + 3] = type.charCodeAt(3) & 0xff;
21001      p += 4;
21002      data.set(body, p);
21003      p += body.length;
21004      var crc = crc32(data, offset + 4, p);
21005      data[p] = crc >> 24 & 0xff;
21006      data[p + 1] = crc >> 16 & 0xff;
21007      data[p + 2] = crc >> 8 & 0xff;
21008      data[p + 3] = crc & 0xff;
21009    }
21010
21011    function adler32(data, start, end) {
21012      var a = 1;
21013      var b = 0;
21014
21015      for (var _i2 = start; _i2 < end; ++_i2) {
21016        a = (a + (data[_i2] & 0xff)) % 65521;
21017        b = (b + a) % 65521;
21018      }
21019
21020      return b << 16 | a;
21021    }
21022
21023    function deflateSync(literals) {
21024      if (!(0, _is_node["default"])()) {
21025        return deflateSyncUncompressed(literals);
21026      }
21027
21028      try {
21029        var input;
21030
21031        if (parseInt(process.versions.node) >= 8) {
21032          input = literals;
21033        } else {
21034          input = new Buffer(literals);
21035        }
21036
21037        var output = require('zlib').deflateSync(input, {
21038          level: 9
21039        });
21040
21041        return output instanceof Uint8Array ? output : new Uint8Array(output);
21042      } catch (e) {
21043        (0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);
21044      }
21045
21046      return deflateSyncUncompressed(literals);
21047    }
21048
21049    function deflateSyncUncompressed(literals) {
21050      var len = literals.length;
21051      var maxBlockLength = 0xFFFF;
21052      var deflateBlocks = Math.ceil(len / maxBlockLength);
21053      var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);
21054      var pi = 0;
21055      idat[pi++] = 0x78;
21056      idat[pi++] = 0x9c;
21057      var pos = 0;
21058
21059      while (len > maxBlockLength) {
21060        idat[pi++] = 0x00;
21061        idat[pi++] = 0xff;
21062        idat[pi++] = 0xff;
21063        idat[pi++] = 0x00;
21064        idat[pi++] = 0x00;
21065        idat.set(literals.subarray(pos, pos + maxBlockLength), pi);
21066        pi += maxBlockLength;
21067        pos += maxBlockLength;
21068        len -= maxBlockLength;
21069      }
21070
21071      idat[pi++] = 0x01;
21072      idat[pi++] = len & 0xff;
21073      idat[pi++] = len >> 8 & 0xff;
21074      idat[pi++] = ~len & 0xffff & 0xff;
21075      idat[pi++] = (~len & 0xffff) >> 8 & 0xff;
21076      idat.set(literals.subarray(pos), pi);
21077      pi += literals.length - pos;
21078      var adler = adler32(literals, 0, literals.length);
21079      idat[pi++] = adler >> 24 & 0xff;
21080      idat[pi++] = adler >> 16 & 0xff;
21081      idat[pi++] = adler >> 8 & 0xff;
21082      idat[pi++] = adler & 0xff;
21083      return idat;
21084    }
21085
21086    function encode(imgData, kind, forceDataSchema, isMask) {
21087      var width = imgData.width;
21088      var height = imgData.height;
21089      var bitDepth, colorType, lineSize;
21090      var bytes = imgData.data;
21091
21092      switch (kind) {
21093        case _util.ImageKind.GRAYSCALE_1BPP:
21094          colorType = 0;
21095          bitDepth = 1;
21096          lineSize = width + 7 >> 3;
21097          break;
21098
21099        case _util.ImageKind.RGB_24BPP:
21100          colorType = 2;
21101          bitDepth = 8;
21102          lineSize = width * 3;
21103          break;
21104
21105        case _util.ImageKind.RGBA_32BPP:
21106          colorType = 6;
21107          bitDepth = 8;
21108          lineSize = width * 4;
21109          break;
21110
21111        default:
21112          throw new Error('invalid format');
21113      }
21114
21115      var literals = new Uint8Array((1 + lineSize) * height);
21116      var offsetLiterals = 0,
21117          offsetBytes = 0;
21118
21119      for (var y = 0; y < height; ++y) {
21120        literals[offsetLiterals++] = 0;
21121        literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);
21122        offsetBytes += lineSize;
21123        offsetLiterals += lineSize;
21124      }
21125
21126      if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {
21127        offsetLiterals = 0;
21128
21129        for (var _y = 0; _y < height; _y++) {
21130          offsetLiterals++;
21131
21132          for (var _i3 = 0; _i3 < lineSize; _i3++) {
21133            literals[offsetLiterals++] ^= 0xFF;
21134          }
21135        }
21136      }
21137
21138      var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);
21139      var idat = deflateSync(literals);
21140      var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;
21141      var data = new Uint8Array(pngLength);
21142      var offset = 0;
21143      data.set(PNG_HEADER, offset);
21144      offset += PNG_HEADER.length;
21145      writePngChunk('IHDR', ihdr, data, offset);
21146      offset += CHUNK_WRAPPER_SIZE + ihdr.length;
21147      writePngChunk('IDATA', idat, data, offset);
21148      offset += CHUNK_WRAPPER_SIZE + idat.length;
21149      writePngChunk('IEND', new Uint8Array(0), data, offset);
21150      return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema);
21151    }
21152
21153    return function convertImgDataToPng(imgData, forceDataSchema, isMask) {
21154      var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;
21155      return encode(imgData, kind, forceDataSchema, isMask);
21156    };
21157  }();
21158
21159  var SVGExtraState =
21160  /*#__PURE__*/
21161  function () {
21162    function SVGExtraState() {
21163      _classCallCheck(this, SVGExtraState);
21164
21165      this.fontSizeScale = 1;
21166      this.fontWeight = SVG_DEFAULTS.fontWeight;
21167      this.fontSize = 0;
21168      this.textMatrix = _util.IDENTITY_MATRIX;
21169      this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
21170      this.leading = 0;
21171      this.textRenderingMode = _util.TextRenderingMode.FILL;
21172      this.textMatrixScale = 1;
21173      this.x = 0;
21174      this.y = 0;
21175      this.lineX = 0;
21176      this.lineY = 0;
21177      this.charSpacing = 0;
21178      this.wordSpacing = 0;
21179      this.textHScale = 1;
21180      this.textRise = 0;
21181      this.fillColor = SVG_DEFAULTS.fillColor;
21182      this.strokeColor = '#000000';
21183      this.fillAlpha = 1;
21184      this.strokeAlpha = 1;
21185      this.lineWidth = 1;
21186      this.lineJoin = '';
21187      this.lineCap = '';
21188      this.miterLimit = 0;
21189      this.dashArray = [];
21190      this.dashPhase = 0;
21191      this.dependencies = [];
21192      this.activeClipUrl = null;
21193      this.clipGroup = null;
21194      this.maskId = '';
21195    }
21196
21197    _createClass(SVGExtraState, [{
21198      key: "clone",
21199      value: function clone() {
21200        return Object.create(this);
21201      }
21202    }, {
21203      key: "setCurrentPoint",
21204      value: function setCurrentPoint(x, y) {
21205        this.x = x;
21206        this.y = y;
21207      }
21208    }]);
21209
21210    return SVGExtraState;
21211  }();
21212
21213  var clipCount = 0;
21214  var maskCount = 0;
21215  var shadingCount = 0;
21216
21217  exports.SVGGraphics = SVGGraphics =
21218  /*#__PURE__*/
21219  function () {
21220    function SVGGraphics(commonObjs, objs, forceDataSchema) {
21221      _classCallCheck(this, SVGGraphics);
21222
21223      this.svgFactory = new _display_utils.DOMSVGFactory();
21224      this.current = new SVGExtraState();
21225      this.transformMatrix = _util.IDENTITY_MATRIX;
21226      this.transformStack = [];
21227      this.extraStack = [];
21228      this.commonObjs = commonObjs;
21229      this.objs = objs;
21230      this.pendingClip = null;
21231      this.pendingEOFill = false;
21232      this.embedFonts = false;
21233      this.embeddedFonts = Object.create(null);
21234      this.cssStyle = null;
21235      this.forceDataSchema = !!forceDataSchema;
21236      this._operatorIdMapping = [];
21237
21238      for (var op in _util.OPS) {
21239        this._operatorIdMapping[_util.OPS[op]] = op;
21240      }
21241    }
21242
21243    _createClass(SVGGraphics, [{
21244      key: "save",
21245      value: function save() {
21246        this.transformStack.push(this.transformMatrix);
21247        var old = this.current;
21248        this.extraStack.push(old);
21249        this.current = old.clone();
21250      }
21251    }, {
21252      key: "restore",
21253      value: function restore() {
21254        this.transformMatrix = this.transformStack.pop();
21255        this.current = this.extraStack.pop();
21256        this.pendingClip = null;
21257        this.tgrp = null;
21258      }
21259    }, {
21260      key: "group",
21261      value: function group(items) {
21262        this.save();
21263        this.executeOpTree(items);
21264        this.restore();
21265      }
21266    }, {
21267      key: "loadDependencies",
21268      value: function loadDependencies(operatorList) {
21269        var _this = this;
21270
21271        var fnArray = operatorList.fnArray;
21272        var argsArray = operatorList.argsArray;
21273
21274        for (var i = 0, ii = fnArray.length; i < ii; i++) {
21275          if (fnArray[i] !== _util.OPS.dependency) {
21276            continue;
21277          }
21278
21279          var _iteratorNormalCompletion2 = true;
21280          var _didIteratorError2 = false;
21281          var _iteratorError2 = undefined;
21282
21283          try {
21284            var _loop = function _loop() {
21285              var obj = _step2.value;
21286              var objsPool = obj.startsWith('g_') ? _this.commonObjs : _this.objs;
21287              var promise = new Promise(function (resolve) {
21288                objsPool.get(obj, resolve);
21289              });
21290
21291              _this.current.dependencies.push(promise);
21292            };
21293
21294            for (var _iterator2 = argsArray[i][Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
21295              _loop();
21296            }
21297          } catch (err) {
21298            _didIteratorError2 = true;
21299            _iteratorError2 = err;
21300          } finally {
21301            try {
21302              if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
21303                _iterator2["return"]();
21304              }
21305            } finally {
21306              if (_didIteratorError2) {
21307                throw _iteratorError2;
21308              }
21309            }
21310          }
21311        }
21312
21313        return Promise.all(this.current.dependencies);
21314      }
21315    }, {
21316      key: "transform",
21317      value: function transform(a, b, c, d, e, f) {
21318        var transformMatrix = [a, b, c, d, e, f];
21319        this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);
21320        this.tgrp = null;
21321      }
21322    }, {
21323      key: "getSVG",
21324      value: function getSVG(operatorList, viewport) {
21325        var _this2 = this;
21326
21327        this.viewport = viewport;
21328
21329        var svgElement = this._initialize(viewport);
21330
21331        return this.loadDependencies(operatorList).then(function () {
21332          _this2.transformMatrix = _util.IDENTITY_MATRIX;
21333
21334          _this2.executeOpTree(_this2.convertOpList(operatorList));
21335
21336          return svgElement;
21337        });
21338      }
21339    }, {
21340      key: "convertOpList",
21341      value: function convertOpList(operatorList) {
21342        var operatorIdMapping = this._operatorIdMapping;
21343        var argsArray = operatorList.argsArray;
21344        var fnArray = operatorList.fnArray;
21345        var opList = [];
21346
21347        for (var i = 0, ii = fnArray.length; i < ii; i++) {
21348          var fnId = fnArray[i];
21349          opList.push({
21350            'fnId': fnId,
21351            'fn': operatorIdMapping[fnId],
21352            'args': argsArray[i]
21353          });
21354        }
21355
21356        return opListToTree(opList);
21357      }
21358    }, {
21359      key: "executeOpTree",
21360      value: function executeOpTree(opTree) {
21361        var _iteratorNormalCompletion3 = true;
21362        var _didIteratorError3 = false;
21363        var _iteratorError3 = undefined;
21364
21365        try {
21366          for (var _iterator3 = opTree[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
21367            var opTreeElement = _step3.value;
21368            var fn = opTreeElement.fn;
21369            var fnId = opTreeElement.fnId;
21370            var args = opTreeElement.args;
21371
21372            switch (fnId | 0) {
21373              case _util.OPS.beginText:
21374                this.beginText();
21375                break;
21376
21377              case _util.OPS.dependency:
21378                break;
21379
21380              case _util.OPS.setLeading:
21381                this.setLeading(args);
21382                break;
21383
21384              case _util.OPS.setLeadingMoveText:
21385                this.setLeadingMoveText(args[0], args[1]);
21386                break;
21387
21388              case _util.OPS.setFont:
21389                this.setFont(args);
21390                break;
21391
21392              case _util.OPS.showText:
21393                this.showText(args[0]);
21394                break;
21395
21396              case _util.OPS.showSpacedText:
21397                this.showText(args[0]);
21398                break;
21399
21400              case _util.OPS.endText:
21401                this.endText();
21402                break;
21403
21404              case _util.OPS.moveText:
21405                this.moveText(args[0], args[1]);
21406                break;
21407
21408              case _util.OPS.setCharSpacing:
21409                this.setCharSpacing(args[0]);
21410                break;
21411
21412              case _util.OPS.setWordSpacing:
21413                this.setWordSpacing(args[0]);
21414                break;
21415
21416              case _util.OPS.setHScale:
21417                this.setHScale(args[0]);
21418                break;
21419
21420              case _util.OPS.setTextMatrix:
21421                this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
21422                break;
21423
21424              case _util.OPS.setTextRise:
21425                this.setTextRise(args[0]);
21426                break;
21427
21428              case _util.OPS.setTextRenderingMode:
21429                this.setTextRenderingMode(args[0]);
21430                break;
21431
21432              case _util.OPS.setLineWidth:
21433                this.setLineWidth(args[0]);
21434                break;
21435
21436              case _util.OPS.setLineJoin:
21437                this.setLineJoin(args[0]);
21438                break;
21439
21440              case _util.OPS.setLineCap:
21441                this.setLineCap(args[0]);
21442                break;
21443
21444              case _util.OPS.setMiterLimit:
21445                this.setMiterLimit(args[0]);
21446                break;
21447
21448              case _util.OPS.setFillRGBColor:
21449                this.setFillRGBColor(args[0], args[1], args[2]);
21450                break;
21451
21452              case _util.OPS.setStrokeRGBColor:
21453                this.setStrokeRGBColor(args[0], args[1], args[2]);
21454                break;
21455
21456              case _util.OPS.setStrokeColorN:
21457                this.setStrokeColorN(args);
21458                break;
21459
21460              case _util.OPS.setFillColorN:
21461                this.setFillColorN(args);
21462                break;
21463
21464              case _util.OPS.shadingFill:
21465                this.shadingFill(args[0]);
21466                break;
21467
21468              case _util.OPS.setDash:
21469                this.setDash(args[0], args[1]);
21470                break;
21471
21472              case _util.OPS.setRenderingIntent:
21473                this.setRenderingIntent(args[0]);
21474                break;
21475
21476              case _util.OPS.setFlatness:
21477                this.setFlatness(args[0]);
21478                break;
21479
21480              case _util.OPS.setGState:
21481                this.setGState(args[0]);
21482                break;
21483
21484              case _util.OPS.fill:
21485                this.fill();
21486                break;
21487
21488              case _util.OPS.eoFill:
21489                this.eoFill();
21490                break;
21491
21492              case _util.OPS.stroke:
21493                this.stroke();
21494                break;
21495
21496              case _util.OPS.fillStroke:
21497                this.fillStroke();
21498                break;
21499
21500              case _util.OPS.eoFillStroke:
21501                this.eoFillStroke();
21502                break;
21503
21504              case _util.OPS.clip:
21505                this.clip('nonzero');
21506                break;
21507
21508              case _util.OPS.eoClip:
21509                this.clip('evenodd');
21510                break;
21511
21512              case _util.OPS.paintSolidColorImageMask:
21513                this.paintSolidColorImageMask();
21514                break;
21515
21516              case _util.OPS.paintJpegXObject:
21517                this.paintJpegXObject(args[0], args[1], args[2]);
21518                break;
21519
21520              case _util.OPS.paintImageXObject:
21521                this.paintImageXObject(args[0]);
21522                break;
21523
21524              case _util.OPS.paintInlineImageXObject:
21525                this.paintInlineImageXObject(args[0]);
21526                break;
21527
21528              case _util.OPS.paintImageMaskXObject:
21529                this.paintImageMaskXObject(args[0]);
21530                break;
21531
21532              case _util.OPS.paintFormXObjectBegin:
21533                this.paintFormXObjectBegin(args[0], args[1]);
21534                break;
21535
21536              case _util.OPS.paintFormXObjectEnd:
21537                this.paintFormXObjectEnd();
21538                break;
21539
21540              case _util.OPS.closePath:
21541                this.closePath();
21542                break;
21543
21544              case _util.OPS.closeStroke:
21545                this.closeStroke();
21546                break;
21547
21548              case _util.OPS.closeFillStroke:
21549                this.closeFillStroke();
21550                break;
21551
21552              case _util.OPS.closeEOFillStroke:
21553                this.closeEOFillStroke();
21554                break;
21555
21556              case _util.OPS.nextLine:
21557                this.nextLine();
21558                break;
21559
21560              case _util.OPS.transform:
21561                this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);
21562                break;
21563
21564              case _util.OPS.constructPath:
21565                this.constructPath(args[0], args[1]);
21566                break;
21567
21568              case _util.OPS.endPath:
21569                this.endPath();
21570                break;
21571
21572              case 92:
21573                this.group(opTreeElement.items);
21574                break;
21575
21576              default:
21577                (0, _util.warn)("Unimplemented operator ".concat(fn));
21578                break;
21579            }
21580          }
21581        } catch (err) {
21582          _didIteratorError3 = true;
21583          _iteratorError3 = err;
21584        } finally {
21585          try {
21586            if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
21587              _iterator3["return"]();
21588            }
21589          } finally {
21590            if (_didIteratorError3) {
21591              throw _iteratorError3;
21592            }
21593          }
21594        }
21595      }
21596    }, {
21597      key: "setWordSpacing",
21598      value: function setWordSpacing(wordSpacing) {
21599        this.current.wordSpacing = wordSpacing;
21600      }
21601    }, {
21602      key: "setCharSpacing",
21603      value: function setCharSpacing(charSpacing) {
21604        this.current.charSpacing = charSpacing;
21605      }
21606    }, {
21607      key: "nextLine",
21608      value: function nextLine() {
21609        this.moveText(0, this.current.leading);
21610      }
21611    }, {
21612      key: "setTextMatrix",
21613      value: function setTextMatrix(a, b, c, d, e, f) {
21614        var current = this.current;
21615        current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];
21616        current.textMatrixScale = Math.sqrt(a * a + b * b);
21617        current.x = current.lineX = 0;
21618        current.y = current.lineY = 0;
21619        current.xcoords = [];
21620        current.tspan = this.svgFactory.createElement('svg:tspan');
21621        current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
21622        current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px"));
21623        current.tspan.setAttributeNS(null, 'y', pf(-current.y));
21624        current.txtElement = this.svgFactory.createElement('svg:text');
21625        current.txtElement.appendChild(current.tspan);
21626      }
21627    }, {
21628      key: "beginText",
21629      value: function beginText() {
21630        var current = this.current;
21631        current.x = current.lineX = 0;
21632        current.y = current.lineY = 0;
21633        current.textMatrix = _util.IDENTITY_MATRIX;
21634        current.lineMatrix = _util.IDENTITY_MATRIX;
21635        current.textMatrixScale = 1;
21636        current.tspan = this.svgFactory.createElement('svg:tspan');
21637        current.txtElement = this.svgFactory.createElement('svg:text');
21638        current.txtgrp = this.svgFactory.createElement('svg:g');
21639        current.xcoords = [];
21640      }
21641    }, {
21642      key: "moveText",
21643      value: function moveText(x, y) {
21644        var current = this.current;
21645        current.x = current.lineX += x;
21646        current.y = current.lineY += y;
21647        current.xcoords = [];
21648        current.tspan = this.svgFactory.createElement('svg:tspan');
21649        current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
21650        current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px"));
21651        current.tspan.setAttributeNS(null, 'y', pf(-current.y));
21652      }
21653    }, {
21654      key: "showText",
21655      value: function showText(glyphs) {
21656        var current = this.current;
21657        var font = current.font;
21658        var fontSize = current.fontSize;
21659
21660        if (fontSize === 0) {
21661          return;
21662        }
21663
21664        var charSpacing = current.charSpacing;
21665        var wordSpacing = current.wordSpacing;
21666        var fontDirection = current.fontDirection;
21667        var textHScale = current.textHScale * fontDirection;
21668        var vertical = font.vertical;
21669        var widthAdvanceScale = fontSize * current.fontMatrix[0];
21670        var x = 0;
21671        var _iteratorNormalCompletion4 = true;
21672        var _didIteratorError4 = false;
21673        var _iteratorError4 = undefined;
21674
21675        try {
21676          for (var _iterator4 = glyphs[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
21677            var glyph = _step4.value;
21678
21679            if (glyph === null) {
21680              x += fontDirection * wordSpacing;
21681              continue;
21682            } else if ((0, _util.isNum)(glyph)) {
21683              x += -glyph * fontSize * 0.001;
21684              continue;
21685            }
21686
21687            var width = glyph.width;
21688            var character = glyph.fontChar;
21689            var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
21690            var charWidth = width * widthAdvanceScale + spacing * fontDirection;
21691
21692            if (!glyph.isInFont && !font.missingFile) {
21693              x += charWidth;
21694              continue;
21695            }
21696
21697            current.xcoords.push(current.x + x * textHScale);
21698            current.tspan.textContent += character;
21699            x += charWidth;
21700          }
21701        } catch (err) {
21702          _didIteratorError4 = true;
21703          _iteratorError4 = err;
21704        } finally {
21705          try {
21706            if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
21707              _iterator4["return"]();
21708            }
21709          } finally {
21710            if (_didIteratorError4) {
21711              throw _iteratorError4;
21712            }
21713          }
21714        }
21715
21716        if (vertical) {
21717          current.y -= x * textHScale;
21718        } else {
21719          current.x += x * textHScale;
21720        }
21721
21722        current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' '));
21723        current.tspan.setAttributeNS(null, 'y', pf(-current.y));
21724        current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
21725        current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px"));
21726
21727        if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
21728          current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);
21729        }
21730
21731        if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
21732          current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);
21733        }
21734
21735        var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
21736
21737        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
21738          if (current.fillColor !== SVG_DEFAULTS.fillColor) {
21739            current.tspan.setAttributeNS(null, 'fill', current.fillColor);
21740          }
21741
21742          if (current.fillAlpha < 1) {
21743            current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
21744          }
21745        } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {
21746          current.tspan.setAttributeNS(null, 'fill', 'transparent');
21747        } else {
21748          current.tspan.setAttributeNS(null, 'fill', 'none');
21749        }
21750
21751        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
21752          var lineWidthScale = 1 / (current.textMatrixScale || 1);
21753
21754          this._setStrokeAttributes(current.tspan, lineWidthScale);
21755        }
21756
21757        var textMatrix = current.textMatrix;
21758
21759        if (current.textRise !== 0) {
21760          textMatrix = textMatrix.slice();
21761          textMatrix[5] += current.textRise;
21762        }
21763
21764        current.txtElement.setAttributeNS(null, 'transform', "".concat(pm(textMatrix), " scale(1, -1)"));
21765        current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');
21766        current.txtElement.appendChild(current.tspan);
21767        current.txtgrp.appendChild(current.txtElement);
21768
21769        this._ensureTransformGroup().appendChild(current.txtElement);
21770      }
21771    }, {
21772      key: "setLeadingMoveText",
21773      value: function setLeadingMoveText(x, y) {
21774        this.setLeading(-y);
21775        this.moveText(x, y);
21776      }
21777    }, {
21778      key: "addFontStyle",
21779      value: function addFontStyle(fontObj) {
21780        if (!this.cssStyle) {
21781          this.cssStyle = this.svgFactory.createElement('svg:style');
21782          this.cssStyle.setAttributeNS(null, 'type', 'text/css');
21783          this.defs.appendChild(this.cssStyle);
21784        }
21785
21786        var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);
21787        this.cssStyle.textContent += "@font-face { font-family: \"".concat(fontObj.loadedName, "\";") + " src: url(".concat(url, "); }\n");
21788      }
21789    }, {
21790      key: "setFont",
21791      value: function setFont(details) {
21792        var current = this.current;
21793        var fontObj = this.commonObjs.get(details[0]);
21794        var size = details[1];
21795        current.font = fontObj;
21796
21797        if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) {
21798          this.addFontStyle(fontObj);
21799          this.embeddedFonts[fontObj.loadedName] = fontObj;
21800        }
21801
21802        current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
21803        var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal';
21804        var italic = fontObj.italic ? 'italic' : 'normal';
21805
21806        if (size < 0) {
21807          size = -size;
21808          current.fontDirection = -1;
21809        } else {
21810          current.fontDirection = 1;
21811        }
21812
21813        current.fontSize = size;
21814        current.fontFamily = fontObj.loadedName;
21815        current.fontWeight = bold;
21816        current.fontStyle = italic;
21817        current.tspan = this.svgFactory.createElement('svg:tspan');
21818        current.tspan.setAttributeNS(null, 'y', pf(-current.y));
21819        current.xcoords = [];
21820      }
21821    }, {
21822      key: "endText",
21823      value: function endText() {
21824        var current = this.current;
21825
21826        if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {
21827          current.element = current.txtElement;
21828          this.clip('nonzero');
21829          this.endPath();
21830        }
21831      }
21832    }, {
21833      key: "setLineWidth",
21834      value: function setLineWidth(width) {
21835        if (width > 0) {
21836          this.current.lineWidth = width;
21837        }
21838      }
21839    }, {
21840      key: "setLineCap",
21841      value: function setLineCap(style) {
21842        this.current.lineCap = LINE_CAP_STYLES[style];
21843      }
21844    }, {
21845      key: "setLineJoin",
21846      value: function setLineJoin(style) {
21847        this.current.lineJoin = LINE_JOIN_STYLES[style];
21848      }
21849    }, {
21850      key: "setMiterLimit",
21851      value: function setMiterLimit(limit) {
21852        this.current.miterLimit = limit;
21853      }
21854    }, {
21855      key: "setStrokeAlpha",
21856      value: function setStrokeAlpha(strokeAlpha) {
21857        this.current.strokeAlpha = strokeAlpha;
21858      }
21859    }, {
21860      key: "setStrokeRGBColor",
21861      value: function setStrokeRGBColor(r, g, b) {
21862        this.current.strokeColor = _util.Util.makeCssRgb(r, g, b);
21863      }
21864    }, {
21865      key: "setFillAlpha",
21866      value: function setFillAlpha(fillAlpha) {
21867        this.current.fillAlpha = fillAlpha;
21868      }
21869    }, {
21870      key: "setFillRGBColor",
21871      value: function setFillRGBColor(r, g, b) {
21872        this.current.fillColor = _util.Util.makeCssRgb(r, g, b);
21873        this.current.tspan = this.svgFactory.createElement('svg:tspan');
21874        this.current.xcoords = [];
21875      }
21876    }, {
21877      key: "setStrokeColorN",
21878      value: function setStrokeColorN(args) {
21879        this.current.strokeColor = this._makeColorN_Pattern(args);
21880      }
21881    }, {
21882      key: "setFillColorN",
21883      value: function setFillColorN(args) {
21884        this.current.fillColor = this._makeColorN_Pattern(args);
21885      }
21886    }, {
21887      key: "shadingFill",
21888      value: function shadingFill(args) {
21889        var width = this.viewport.width;
21890        var height = this.viewport.height;
21891
21892        var inv = _util.Util.inverseTransform(this.transformMatrix);
21893
21894        var bl = _util.Util.applyTransform([0, 0], inv);
21895
21896        var br = _util.Util.applyTransform([0, height], inv);
21897
21898        var ul = _util.Util.applyTransform([width, 0], inv);
21899
21900        var ur = _util.Util.applyTransform([width, height], inv);
21901
21902        var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
21903        var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
21904        var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
21905        var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
21906        var rect = this.svgFactory.createElement('svg:rect');
21907        rect.setAttributeNS(null, 'x', x0);
21908        rect.setAttributeNS(null, 'y', y0);
21909        rect.setAttributeNS(null, 'width', x1 - x0);
21910        rect.setAttributeNS(null, 'height', y1 - y0);
21911        rect.setAttributeNS(null, 'fill', this._makeShadingPattern(args));
21912
21913        this._ensureTransformGroup().appendChild(rect);
21914      }
21915    }, {
21916      key: "_makeColorN_Pattern",
21917      value: function _makeColorN_Pattern(args) {
21918        if (args[0] === 'TilingPattern') {
21919          return this._makeTilingPattern(args);
21920        }
21921
21922        return this._makeShadingPattern(args);
21923      }
21924    }, {
21925      key: "_makeTilingPattern",
21926      value: function _makeTilingPattern(args) {
21927        var color = args[1];
21928        var operatorList = args[2];
21929        var matrix = args[3] || _util.IDENTITY_MATRIX;
21930
21931        var _args$ = _slicedToArray(args[4], 4),
21932            x0 = _args$[0],
21933            y0 = _args$[1],
21934            x1 = _args$[2],
21935            y1 = _args$[3];
21936
21937        var xstep = args[5];
21938        var ystep = args[6];
21939        var paintType = args[7];
21940        var tilingId = "shading".concat(shadingCount++);
21941
21942        var _Util$applyTransform = _util.Util.applyTransform([x0, y0], matrix),
21943            _Util$applyTransform2 = _slicedToArray(_Util$applyTransform, 2),
21944            tx0 = _Util$applyTransform2[0],
21945            ty0 = _Util$applyTransform2[1];
21946
21947        var _Util$applyTransform3 = _util.Util.applyTransform([x1, y1], matrix),
21948            _Util$applyTransform4 = _slicedToArray(_Util$applyTransform3, 2),
21949            tx1 = _Util$applyTransform4[0],
21950            ty1 = _Util$applyTransform4[1];
21951
21952        var _Util$singularValueDe = _util.Util.singularValueDecompose2dScale(matrix),
21953            _Util$singularValueDe2 = _slicedToArray(_Util$singularValueDe, 2),
21954            xscale = _Util$singularValueDe2[0],
21955            yscale = _Util$singularValueDe2[1];
21956
21957        var txstep = xstep * xscale;
21958        var tystep = ystep * yscale;
21959        var tiling = this.svgFactory.createElement('svg:pattern');
21960        tiling.setAttributeNS(null, 'id', tilingId);
21961        tiling.setAttributeNS(null, 'patternUnits', 'userSpaceOnUse');
21962        tiling.setAttributeNS(null, 'width', txstep);
21963        tiling.setAttributeNS(null, 'height', tystep);
21964        tiling.setAttributeNS(null, 'x', "".concat(tx0));
21965        tiling.setAttributeNS(null, 'y', "".concat(ty0));
21966        var svg = this.svg;
21967        var transformMatrix = this.transformMatrix;
21968        var fillColor = this.current.fillColor;
21969        var strokeColor = this.current.strokeColor;
21970        var bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);
21971        this.svg = bbox;
21972        this.transformMatrix = matrix;
21973
21974        if (paintType === 2) {
21975          var cssColor = _util.Util.makeCssRgb.apply(_util.Util, _toConsumableArray(color));
21976
21977          this.current.fillColor = cssColor;
21978          this.current.strokeColor = cssColor;
21979        }
21980
21981        this.executeOpTree(this.convertOpList(operatorList));
21982        this.svg = svg;
21983        this.transformMatrix = transformMatrix;
21984        this.current.fillColor = fillColor;
21985        this.current.strokeColor = strokeColor;
21986        tiling.appendChild(bbox.childNodes[0]);
21987        this.defs.appendChild(tiling);
21988        return "url(#".concat(tilingId, ")");
21989      }
21990    }, {
21991      key: "_makeShadingPattern",
21992      value: function _makeShadingPattern(args) {
21993        switch (args[0]) {
21994          case 'RadialAxial':
21995            var shadingId = "shading".concat(shadingCount++);
21996            var colorStops = args[2];
21997            var gradient;
21998
21999            switch (args[1]) {
22000              case 'axial':
22001                var point0 = args[3];
22002                var point1 = args[4];
22003                gradient = this.svgFactory.createElement('svg:linearGradient');
22004                gradient.setAttributeNS(null, 'id', shadingId);
22005                gradient.setAttributeNS(null, 'gradientUnits', 'userSpaceOnUse');
22006                gradient.setAttributeNS(null, 'x1', point0[0]);
22007                gradient.setAttributeNS(null, 'y1', point0[1]);
22008                gradient.setAttributeNS(null, 'x2', point1[0]);
22009                gradient.setAttributeNS(null, 'y2', point1[1]);
22010                break;
22011
22012              case 'radial':
22013                var focalPoint = args[3];
22014                var circlePoint = args[4];
22015                var focalRadius = args[5];
22016                var circleRadius = args[6];
22017                gradient = this.svgFactory.createElement('svg:radialGradient');
22018                gradient.setAttributeNS(null, 'id', shadingId);
22019                gradient.setAttributeNS(null, 'gradientUnits', 'userSpaceOnUse');
22020                gradient.setAttributeNS(null, 'cx', circlePoint[0]);
22021                gradient.setAttributeNS(null, 'cy', circlePoint[1]);
22022                gradient.setAttributeNS(null, 'r', circleRadius);
22023                gradient.setAttributeNS(null, 'fx', focalPoint[0]);
22024                gradient.setAttributeNS(null, 'fy', focalPoint[1]);
22025                gradient.setAttributeNS(null, 'fr', focalRadius);
22026                break;
22027
22028              default:
22029                throw new Error("Unknown RadialAxial type: ".concat(args[1]));
22030            }
22031
22032            var _iteratorNormalCompletion5 = true;
22033            var _didIteratorError5 = false;
22034            var _iteratorError5 = undefined;
22035
22036            try {
22037              for (var _iterator5 = colorStops[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
22038                var colorStop = _step5.value;
22039                var stop = this.svgFactory.createElement('svg:stop');
22040                stop.setAttributeNS(null, 'offset', colorStop[0]);
22041                stop.setAttributeNS(null, 'stop-color', colorStop[1]);
22042                gradient.appendChild(stop);
22043              }
22044            } catch (err) {
22045              _didIteratorError5 = true;
22046              _iteratorError5 = err;
22047            } finally {
22048              try {
22049                if (!_iteratorNormalCompletion5 && _iterator5["return"] != null) {
22050                  _iterator5["return"]();
22051                }
22052              } finally {
22053                if (_didIteratorError5) {
22054                  throw _iteratorError5;
22055                }
22056              }
22057            }
22058
22059            this.defs.appendChild(gradient);
22060            return "url(#".concat(shadingId, ")");
22061
22062          case 'Mesh':
22063            (0, _util.warn)('Unimplemented pattern Mesh');
22064            return null;
22065
22066          case 'Dummy':
22067            return 'hotpink';
22068
22069          default:
22070            throw new Error("Unknown IR type: ".concat(args[0]));
22071        }
22072      }
22073    }, {
22074      key: "setDash",
22075      value: function setDash(dashArray, dashPhase) {
22076        this.current.dashArray = dashArray;
22077        this.current.dashPhase = dashPhase;
22078      }
22079    }, {
22080      key: "constructPath",
22081      value: function constructPath(ops, args) {
22082        var current = this.current;
22083        var x = current.x,
22084            y = current.y;
22085        var d = [];
22086        var j = 0;
22087        var _iteratorNormalCompletion6 = true;
22088        var _didIteratorError6 = false;
22089        var _iteratorError6 = undefined;
22090
22091        try {
22092          for (var _iterator6 = ops[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
22093            var op = _step6.value;
22094
22095            switch (op | 0) {
22096              case _util.OPS.rectangle:
22097                x = args[j++];
22098                y = args[j++];
22099                var width = args[j++];
22100                var height = args[j++];
22101                var xw = x + width;
22102                var yh = y + height;
22103                d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z');
22104                break;
22105
22106              case _util.OPS.moveTo:
22107                x = args[j++];
22108                y = args[j++];
22109                d.push('M', pf(x), pf(y));
22110                break;
22111
22112              case _util.OPS.lineTo:
22113                x = args[j++];
22114                y = args[j++];
22115                d.push('L', pf(x), pf(y));
22116                break;
22117
22118              case _util.OPS.curveTo:
22119                x = args[j + 4];
22120                y = args[j + 5];
22121                d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));
22122                j += 6;
22123                break;
22124
22125              case _util.OPS.curveTo2:
22126                x = args[j + 2];
22127                y = args[j + 3];
22128                d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));
22129                j += 4;
22130                break;
22131
22132              case _util.OPS.curveTo3:
22133                x = args[j + 2];
22134                y = args[j + 3];
22135                d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));
22136                j += 4;
22137                break;
22138
22139              case _util.OPS.closePath:
22140                d.push('Z');
22141                break;
22142            }
22143          }
22144        } catch (err) {
22145          _didIteratorError6 = true;
22146          _iteratorError6 = err;
22147        } finally {
22148          try {
22149            if (!_iteratorNormalCompletion6 && _iterator6["return"] != null) {
22150              _iterator6["return"]();
22151            }
22152          } finally {
22153            if (_didIteratorError6) {
22154              throw _iteratorError6;
22155            }
22156          }
22157        }
22158
22159        d = d.join(' ');
22160
22161        if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {
22162          d = current.path.getAttributeNS(null, 'd') + d;
22163        } else {
22164          current.path = this.svgFactory.createElement('svg:path');
22165
22166          this._ensureTransformGroup().appendChild(current.path);
22167        }
22168
22169        current.path.setAttributeNS(null, 'd', d);
22170        current.path.setAttributeNS(null, 'fill', 'none');
22171        current.element = current.path;
22172        current.setCurrentPoint(x, y);
22173      }
22174    }, {
22175      key: "endPath",
22176      value: function endPath() {
22177        var current = this.current;
22178        current.path = null;
22179
22180        if (!this.pendingClip) {
22181          return;
22182        }
22183
22184        if (!current.element) {
22185          this.pendingClip = null;
22186          return;
22187        }
22188
22189        var clipId = "clippath".concat(clipCount++);
22190        var clipPath = this.svgFactory.createElement('svg:clipPath');
22191        clipPath.setAttributeNS(null, 'id', clipId);
22192        clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));
22193        var clipElement = current.element.cloneNode(true);
22194
22195        if (this.pendingClip === 'evenodd') {
22196          clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');
22197        } else {
22198          clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');
22199        }
22200
22201        this.pendingClip = null;
22202        clipPath.appendChild(clipElement);
22203        this.defs.appendChild(clipPath);
22204
22205        if (current.activeClipUrl) {
22206          current.clipGroup = null;
22207          this.extraStack.forEach(function (prev) {
22208            prev.clipGroup = null;
22209          });
22210          clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl);
22211        }
22212
22213        current.activeClipUrl = "url(#".concat(clipId, ")");
22214        this.tgrp = null;
22215      }
22216    }, {
22217      key: "clip",
22218      value: function clip(type) {
22219        this.pendingClip = type;
22220      }
22221    }, {
22222      key: "closePath",
22223      value: function closePath() {
22224        var current = this.current;
22225
22226        if (current.path) {
22227          var d = "".concat(current.path.getAttributeNS(null, 'd'), "Z");
22228          current.path.setAttributeNS(null, 'd', d);
22229        }
22230      }
22231    }, {
22232      key: "setLeading",
22233      value: function setLeading(leading) {
22234        this.current.leading = -leading;
22235      }
22236    }, {
22237      key: "setTextRise",
22238      value: function setTextRise(textRise) {
22239        this.current.textRise = textRise;
22240      }
22241    }, {
22242      key: "setTextRenderingMode",
22243      value: function setTextRenderingMode(textRenderingMode) {
22244        this.current.textRenderingMode = textRenderingMode;
22245      }
22246    }, {
22247      key: "setHScale",
22248      value: function setHScale(scale) {
22249        this.current.textHScale = scale / 100;
22250      }
22251    }, {
22252      key: "setRenderingIntent",
22253      value: function setRenderingIntent(intent) {}
22254    }, {
22255      key: "setFlatness",
22256      value: function setFlatness(flatness) {}
22257    }, {
22258      key: "setGState",
22259      value: function setGState(states) {
22260        var _iteratorNormalCompletion7 = true;
22261        var _didIteratorError7 = false;
22262        var _iteratorError7 = undefined;
22263
22264        try {
22265          for (var _iterator7 = states[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
22266            var _step7$value = _slicedToArray(_step7.value, 2),
22267                key = _step7$value[0],
22268                value = _step7$value[1];
22269
22270            switch (key) {
22271              case 'LW':
22272                this.setLineWidth(value);
22273                break;
22274
22275              case 'LC':
22276                this.setLineCap(value);
22277                break;
22278
22279              case 'LJ':
22280                this.setLineJoin(value);
22281                break;
22282
22283              case 'ML':
22284                this.setMiterLimit(value);
22285                break;
22286
22287              case 'D':
22288                this.setDash(value[0], value[1]);
22289                break;
22290
22291              case 'RI':
22292                this.setRenderingIntent(value);
22293                break;
22294
22295              case 'FL':
22296                this.setFlatness(value);
22297                break;
22298
22299              case 'Font':
22300                this.setFont(value);
22301                break;
22302
22303              case 'CA':
22304                this.setStrokeAlpha(value);
22305                break;
22306
22307              case 'ca':
22308                this.setFillAlpha(value);
22309                break;
22310
22311              default:
22312                (0, _util.warn)("Unimplemented graphic state operator ".concat(key));
22313                break;
22314            }
22315          }
22316        } catch (err) {
22317          _didIteratorError7 = true;
22318          _iteratorError7 = err;
22319        } finally {
22320          try {
22321            if (!_iteratorNormalCompletion7 && _iterator7["return"] != null) {
22322              _iterator7["return"]();
22323            }
22324          } finally {
22325            if (_didIteratorError7) {
22326              throw _iteratorError7;
22327            }
22328          }
22329        }
22330      }
22331    }, {
22332      key: "fill",
22333      value: function fill() {
22334        var current = this.current;
22335
22336        if (current.element) {
22337          current.element.setAttributeNS(null, 'fill', current.fillColor);
22338          current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
22339          this.endPath();
22340        }
22341      }
22342    }, {
22343      key: "stroke",
22344      value: function stroke() {
22345        var current = this.current;
22346
22347        if (current.element) {
22348          this._setStrokeAttributes(current.element);
22349
22350          current.element.setAttributeNS(null, 'fill', 'none');
22351          this.endPath();
22352        }
22353      }
22354    }, {
22355      key: "_setStrokeAttributes",
22356      value: function _setStrokeAttributes(element) {
22357        var lineWidthScale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
22358        var current = this.current;
22359        var dashArray = current.dashArray;
22360
22361        if (lineWidthScale !== 1 && dashArray.length > 0) {
22362          dashArray = dashArray.map(function (value) {
22363            return lineWidthScale * value;
22364          });
22365        }
22366
22367        element.setAttributeNS(null, 'stroke', current.strokeColor);
22368        element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha);
22369        element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit));
22370        element.setAttributeNS(null, 'stroke-linecap', current.lineCap);
22371        element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);
22372        element.setAttributeNS(null, 'stroke-width', pf(lineWidthScale * current.lineWidth) + 'px');
22373        element.setAttributeNS(null, 'stroke-dasharray', dashArray.map(pf).join(' '));
22374        element.setAttributeNS(null, 'stroke-dashoffset', pf(lineWidthScale * current.dashPhase) + 'px');
22375      }
22376    }, {
22377      key: "eoFill",
22378      value: function eoFill() {
22379        if (this.current.element) {
22380          this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
22381        }
22382
22383        this.fill();
22384      }
22385    }, {
22386      key: "fillStroke",
22387      value: function fillStroke() {
22388        this.stroke();
22389        this.fill();
22390      }
22391    }, {
22392      key: "eoFillStroke",
22393      value: function eoFillStroke() {
22394        if (this.current.element) {
22395          this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
22396        }
22397
22398        this.fillStroke();
22399      }
22400    }, {
22401      key: "closeStroke",
22402      value: function closeStroke() {
22403        this.closePath();
22404        this.stroke();
22405      }
22406    }, {
22407      key: "closeFillStroke",
22408      value: function closeFillStroke() {
22409        this.closePath();
22410        this.fillStroke();
22411      }
22412    }, {
22413      key: "closeEOFillStroke",
22414      value: function closeEOFillStroke() {
22415        this.closePath();
22416        this.eoFillStroke();
22417      }
22418    }, {
22419      key: "paintSolidColorImageMask",
22420      value: function paintSolidColorImageMask() {
22421        var rect = this.svgFactory.createElement('svg:rect');
22422        rect.setAttributeNS(null, 'x', '0');
22423        rect.setAttributeNS(null, 'y', '0');
22424        rect.setAttributeNS(null, 'width', '1px');
22425        rect.setAttributeNS(null, 'height', '1px');
22426        rect.setAttributeNS(null, 'fill', this.current.fillColor);
22427
22428        this._ensureTransformGroup().appendChild(rect);
22429      }
22430    }, {
22431      key: "paintJpegXObject",
22432      value: function paintJpegXObject(objId, w, h) {
22433        var imgObj = this.objs.get(objId);
22434        var imgEl = this.svgFactory.createElement('svg:image');
22435        imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);
22436        imgEl.setAttributeNS(null, 'width', pf(w));
22437        imgEl.setAttributeNS(null, 'height', pf(h));
22438        imgEl.setAttributeNS(null, 'x', '0');
22439        imgEl.setAttributeNS(null, 'y', pf(-h));
22440        imgEl.setAttributeNS(null, 'transform', "scale(".concat(pf(1 / w), " ").concat(pf(-1 / h), ")"));
22441
22442        this._ensureTransformGroup().appendChild(imgEl);
22443      }
22444    }, {
22445      key: "paintImageXObject",
22446      value: function paintImageXObject(objId) {
22447        var imgData = this.objs.get(objId);
22448
22449        if (!imgData) {
22450          (0, _util.warn)("Dependent image with object ID ".concat(objId, " is not ready yet"));
22451          return;
22452        }
22453
22454        this.paintInlineImageXObject(imgData);
22455      }
22456    }, {
22457      key: "paintInlineImageXObject",
22458      value: function paintInlineImageXObject(imgData, mask) {
22459        var width = imgData.width;
22460        var height = imgData.height;
22461        var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);
22462        var cliprect = this.svgFactory.createElement('svg:rect');
22463        cliprect.setAttributeNS(null, 'x', '0');
22464        cliprect.setAttributeNS(null, 'y', '0');
22465        cliprect.setAttributeNS(null, 'width', pf(width));
22466        cliprect.setAttributeNS(null, 'height', pf(height));
22467        this.current.element = cliprect;
22468        this.clip('nonzero');
22469        var imgEl = this.svgFactory.createElement('svg:image');
22470        imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);
22471        imgEl.setAttributeNS(null, 'x', '0');
22472        imgEl.setAttributeNS(null, 'y', pf(-height));
22473        imgEl.setAttributeNS(null, 'width', pf(width) + 'px');
22474        imgEl.setAttributeNS(null, 'height', pf(height) + 'px');
22475        imgEl.setAttributeNS(null, 'transform', "scale(".concat(pf(1 / width), " ").concat(pf(-1 / height), ")"));
22476
22477        if (mask) {
22478          mask.appendChild(imgEl);
22479        } else {
22480          this._ensureTransformGroup().appendChild(imgEl);
22481        }
22482      }
22483    }, {
22484      key: "paintImageMaskXObject",
22485      value: function paintImageMaskXObject(imgData) {
22486        var current = this.current;
22487        var width = imgData.width;
22488        var height = imgData.height;
22489        var fillColor = current.fillColor;
22490        current.maskId = "mask".concat(maskCount++);
22491        var mask = this.svgFactory.createElement('svg:mask');
22492        mask.setAttributeNS(null, 'id', current.maskId);
22493        var rect = this.svgFactory.createElement('svg:rect');
22494        rect.setAttributeNS(null, 'x', '0');
22495        rect.setAttributeNS(null, 'y', '0');
22496        rect.setAttributeNS(null, 'width', pf(width));
22497        rect.setAttributeNS(null, 'height', pf(height));
22498        rect.setAttributeNS(null, 'fill', fillColor);
22499        rect.setAttributeNS(null, 'mask', "url(#".concat(current.maskId, ")"));
22500        this.defs.appendChild(mask);
22501
22502        this._ensureTransformGroup().appendChild(rect);
22503
22504        this.paintInlineImageXObject(imgData, mask);
22505      }
22506    }, {
22507      key: "paintFormXObjectBegin",
22508      value: function paintFormXObjectBegin(matrix, bbox) {
22509        if (Array.isArray(matrix) && matrix.length === 6) {
22510          this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
22511        }
22512
22513        if (bbox) {
22514          var width = bbox[2] - bbox[0];
22515          var height = bbox[3] - bbox[1];
22516          var cliprect = this.svgFactory.createElement('svg:rect');
22517          cliprect.setAttributeNS(null, 'x', bbox[0]);
22518          cliprect.setAttributeNS(null, 'y', bbox[1]);
22519          cliprect.setAttributeNS(null, 'width', pf(width));
22520          cliprect.setAttributeNS(null, 'height', pf(height));
22521          this.current.element = cliprect;
22522          this.clip('nonzero');
22523          this.endPath();
22524        }
22525      }
22526    }, {
22527      key: "paintFormXObjectEnd",
22528      value: function paintFormXObjectEnd() {}
22529    }, {
22530      key: "_initialize",
22531      value: function _initialize(viewport) {
22532        var svg = this.svgFactory.create(viewport.width, viewport.height);
22533        var definitions = this.svgFactory.createElement('svg:defs');
22534        svg.appendChild(definitions);
22535        this.defs = definitions;
22536        var rootGroup = this.svgFactory.createElement('svg:g');
22537        rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform));
22538        svg.appendChild(rootGroup);
22539        this.svg = rootGroup;
22540        return svg;
22541      }
22542    }, {
22543      key: "_ensureClipGroup",
22544      value: function _ensureClipGroup() {
22545        if (!this.current.clipGroup) {
22546          var clipGroup = this.svgFactory.createElement('svg:g');
22547          clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl);
22548          this.svg.appendChild(clipGroup);
22549          this.current.clipGroup = clipGroup;
22550        }
22551
22552        return this.current.clipGroup;
22553      }
22554    }, {
22555      key: "_ensureTransformGroup",
22556      value: function _ensureTransformGroup() {
22557        if (!this.tgrp) {
22558          this.tgrp = this.svgFactory.createElement('svg:g');
22559          this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
22560
22561          if (this.current.activeClipUrl) {
22562            this._ensureClipGroup().appendChild(this.tgrp);
22563          } else {
22564            this.svg.appendChild(this.tgrp);
22565          }
22566        }
22567
22568        return this.tgrp;
22569      }
22570    }]);
22571
22572    return SVGGraphics;
22573  }();
22574}
22575
22576/***/ }),
22577/* 165 */
22578/***/ (function(module, exports, __w_pdfjs_require__) {
22579
22580"use strict";
22581
22582
22583Object.defineProperty(exports, "__esModule", {
22584  value: true
22585});
22586exports.PDFNodeStream = void 0;
22587
22588var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
22589
22590var _util = __w_pdfjs_require__(1);
22591
22592var _network_utils = __w_pdfjs_require__(166);
22593
22594function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
22595
22596function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
22597
22598function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
22599
22600function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
22601
22602function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
22603
22604function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
22605
22606function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
22607
22608function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
22609
22610function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
22611
22612function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
22613
22614function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
22615
22616function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
22617
22618var fs = require('fs');
22619
22620var http = require('http');
22621
22622var https = require('https');
22623
22624var url = require('url');
22625
22626var fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//;
22627
22628function parseUrl(sourceUrl) {
22629  var parsedUrl = url.parse(sourceUrl);
22630
22631  if (parsedUrl.protocol === 'file:' || parsedUrl.host) {
22632    return parsedUrl;
22633  }
22634
22635  if (/^[a-z]:[/\\]/i.test(sourceUrl)) {
22636    return url.parse("file:///".concat(sourceUrl));
22637  }
22638
22639  if (!parsedUrl.host) {
22640    parsedUrl.protocol = 'file:';
22641  }
22642
22643  return parsedUrl;
22644}
22645
22646var PDFNodeStream =
22647/*#__PURE__*/
22648function () {
22649  function PDFNodeStream(source) {
22650    _classCallCheck(this, PDFNodeStream);
22651
22652    this.source = source;
22653    this.url = parseUrl(source.url);
22654    this.isHttp = this.url.protocol === 'http:' || this.url.protocol === 'https:';
22655    this.isFsUrl = this.url.protocol === 'file:';
22656    this.httpHeaders = this.isHttp && source.httpHeaders || {};
22657    this._fullRequestReader = null;
22658    this._rangeRequestReaders = [];
22659  }
22660
22661  _createClass(PDFNodeStream, [{
22662    key: "getFullReader",
22663    value: function getFullReader() {
22664      (0, _util.assert)(!this._fullRequestReader);
22665      this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);
22666      return this._fullRequestReader;
22667    }
22668  }, {
22669    key: "getRangeReader",
22670    value: function getRangeReader(start, end) {
22671      if (end <= this._progressiveDataLength) {
22672        return null;
22673      }
22674
22675      var rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);
22676
22677      this._rangeRequestReaders.push(rangeReader);
22678
22679      return rangeReader;
22680    }
22681  }, {
22682    key: "cancelAllRequests",
22683    value: function cancelAllRequests(reason) {
22684      if (this._fullRequestReader) {
22685        this._fullRequestReader.cancel(reason);
22686      }
22687
22688      var readers = this._rangeRequestReaders.slice(0);
22689
22690      readers.forEach(function (reader) {
22691        reader.cancel(reason);
22692      });
22693    }
22694  }, {
22695    key: "_progressiveDataLength",
22696    get: function get() {
22697      return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
22698    }
22699  }]);
22700
22701  return PDFNodeStream;
22702}();
22703
22704exports.PDFNodeStream = PDFNodeStream;
22705
22706var BaseFullReader =
22707/*#__PURE__*/
22708function () {
22709  function BaseFullReader(stream) {
22710    _classCallCheck(this, BaseFullReader);
22711
22712    this._url = stream.url;
22713    this._done = false;
22714    this._storedError = null;
22715    this.onProgress = null;
22716    var source = stream.source;
22717    this._contentLength = source.length;
22718    this._loaded = 0;
22719    this._filename = null;
22720    this._disableRange = source.disableRange || false;
22721    this._rangeChunkSize = source.rangeChunkSize;
22722
22723    if (!this._rangeChunkSize && !this._disableRange) {
22724      this._disableRange = true;
22725    }
22726
22727    this._isStreamingSupported = !source.disableStream;
22728    this._isRangeSupported = !source.disableRange;
22729    this._readableStream = null;
22730    this._readCapability = (0, _util.createPromiseCapability)();
22731    this._headersCapability = (0, _util.createPromiseCapability)();
22732  }
22733
22734  _createClass(BaseFullReader, [{
22735    key: "read",
22736    value: function () {
22737      var _read = _asyncToGenerator(
22738      /*#__PURE__*/
22739      _regenerator["default"].mark(function _callee() {
22740        var chunk, buffer;
22741        return _regenerator["default"].wrap(function _callee$(_context) {
22742          while (1) {
22743            switch (_context.prev = _context.next) {
22744              case 0:
22745                _context.next = 2;
22746                return this._readCapability.promise;
22747
22748              case 2:
22749                if (!this._done) {
22750                  _context.next = 4;
22751                  break;
22752                }
22753
22754                return _context.abrupt("return", {
22755                  value: undefined,
22756                  done: true
22757                });
22758
22759              case 4:
22760                if (!this._storedError) {
22761                  _context.next = 6;
22762                  break;
22763                }
22764
22765                throw this._storedError;
22766
22767              case 6:
22768                chunk = this._readableStream.read();
22769
22770                if (!(chunk === null)) {
22771                  _context.next = 10;
22772                  break;
22773                }
22774
22775                this._readCapability = (0, _util.createPromiseCapability)();
22776                return _context.abrupt("return", this.read());
22777
22778              case 10:
22779                this._loaded += chunk.length;
22780
22781                if (this.onProgress) {
22782                  this.onProgress({
22783                    loaded: this._loaded,
22784                    total: this._contentLength
22785                  });
22786                }
22787
22788                buffer = new Uint8Array(chunk).buffer;
22789                return _context.abrupt("return", {
22790                  value: buffer,
22791                  done: false
22792                });
22793
22794              case 14:
22795              case "end":
22796                return _context.stop();
22797            }
22798          }
22799        }, _callee, this);
22800      }));
22801
22802      function read() {
22803        return _read.apply(this, arguments);
22804      }
22805
22806      return read;
22807    }()
22808  }, {
22809    key: "cancel",
22810    value: function cancel(reason) {
22811      if (!this._readableStream) {
22812        this._error(reason);
22813
22814        return;
22815      }
22816
22817      this._readableStream.destroy(reason);
22818    }
22819  }, {
22820    key: "_error",
22821    value: function _error(reason) {
22822      this._storedError = reason;
22823
22824      this._readCapability.resolve();
22825    }
22826  }, {
22827    key: "_setReadableStream",
22828    value: function _setReadableStream(readableStream) {
22829      var _this = this;
22830
22831      this._readableStream = readableStream;
22832      readableStream.on('readable', function () {
22833        _this._readCapability.resolve();
22834      });
22835      readableStream.on('end', function () {
22836        readableStream.destroy();
22837        _this._done = true;
22838
22839        _this._readCapability.resolve();
22840      });
22841      readableStream.on('error', function (reason) {
22842        _this._error(reason);
22843      });
22844
22845      if (!this._isStreamingSupported && this._isRangeSupported) {
22846        this._error(new _util.AbortException('streaming is disabled'));
22847      }
22848
22849      if (this._storedError) {
22850        this._readableStream.destroy(this._storedError);
22851      }
22852    }
22853  }, {
22854    key: "headersReady",
22855    get: function get() {
22856      return this._headersCapability.promise;
22857    }
22858  }, {
22859    key: "filename",
22860    get: function get() {
22861      return this._filename;
22862    }
22863  }, {
22864    key: "contentLength",
22865    get: function get() {
22866      return this._contentLength;
22867    }
22868  }, {
22869    key: "isRangeSupported",
22870    get: function get() {
22871      return this._isRangeSupported;
22872    }
22873  }, {
22874    key: "isStreamingSupported",
22875    get: function get() {
22876      return this._isStreamingSupported;
22877    }
22878  }]);
22879
22880  return BaseFullReader;
22881}();
22882
22883var BaseRangeReader =
22884/*#__PURE__*/
22885function () {
22886  function BaseRangeReader(stream) {
22887    _classCallCheck(this, BaseRangeReader);
22888
22889    this._url = stream.url;
22890    this._done = false;
22891    this._storedError = null;
22892    this.onProgress = null;
22893    this._loaded = 0;
22894    this._readableStream = null;
22895    this._readCapability = (0, _util.createPromiseCapability)();
22896    var source = stream.source;
22897    this._isStreamingSupported = !source.disableStream;
22898  }
22899
22900  _createClass(BaseRangeReader, [{
22901    key: "read",
22902    value: function () {
22903      var _read2 = _asyncToGenerator(
22904      /*#__PURE__*/
22905      _regenerator["default"].mark(function _callee2() {
22906        var chunk, buffer;
22907        return _regenerator["default"].wrap(function _callee2$(_context2) {
22908          while (1) {
22909            switch (_context2.prev = _context2.next) {
22910              case 0:
22911                _context2.next = 2;
22912                return this._readCapability.promise;
22913
22914              case 2:
22915                if (!this._done) {
22916                  _context2.next = 4;
22917                  break;
22918                }
22919
22920                return _context2.abrupt("return", {
22921                  value: undefined,
22922                  done: true
22923                });
22924
22925              case 4:
22926                if (!this._storedError) {
22927                  _context2.next = 6;
22928                  break;
22929                }
22930
22931                throw this._storedError;
22932
22933              case 6:
22934                chunk = this._readableStream.read();
22935
22936                if (!(chunk === null)) {
22937                  _context2.next = 10;
22938                  break;
22939                }
22940
22941                this._readCapability = (0, _util.createPromiseCapability)();
22942                return _context2.abrupt("return", this.read());
22943
22944              case 10:
22945                this._loaded += chunk.length;
22946
22947                if (this.onProgress) {
22948                  this.onProgress({
22949                    loaded: this._loaded
22950                  });
22951                }
22952
22953                buffer = new Uint8Array(chunk).buffer;
22954                return _context2.abrupt("return", {
22955                  value: buffer,
22956                  done: false
22957                });
22958
22959              case 14:
22960              case "end":
22961                return _context2.stop();
22962            }
22963          }
22964        }, _callee2, this);
22965      }));
22966
22967      function read() {
22968        return _read2.apply(this, arguments);
22969      }
22970
22971      return read;
22972    }()
22973  }, {
22974    key: "cancel",
22975    value: function cancel(reason) {
22976      if (!this._readableStream) {
22977        this._error(reason);
22978
22979        return;
22980      }
22981
22982      this._readableStream.destroy(reason);
22983    }
22984  }, {
22985    key: "_error",
22986    value: function _error(reason) {
22987      this._storedError = reason;
22988
22989      this._readCapability.resolve();
22990    }
22991  }, {
22992    key: "_setReadableStream",
22993    value: function _setReadableStream(readableStream) {
22994      var _this2 = this;
22995
22996      this._readableStream = readableStream;
22997      readableStream.on('readable', function () {
22998        _this2._readCapability.resolve();
22999      });
23000      readableStream.on('end', function () {
23001        readableStream.destroy();
23002        _this2._done = true;
23003
23004        _this2._readCapability.resolve();
23005      });
23006      readableStream.on('error', function (reason) {
23007        _this2._error(reason);
23008      });
23009
23010      if (this._storedError) {
23011        this._readableStream.destroy(this._storedError);
23012      }
23013    }
23014  }, {
23015    key: "isStreamingSupported",
23016    get: function get() {
23017      return this._isStreamingSupported;
23018    }
23019  }]);
23020
23021  return BaseRangeReader;
23022}();
23023
23024function createRequestOptions(url, headers) {
23025  return {
23026    protocol: url.protocol,
23027    auth: url.auth,
23028    host: url.hostname,
23029    port: url.port,
23030    path: url.path,
23031    method: 'GET',
23032    headers: headers
23033  };
23034}
23035
23036var PDFNodeStreamFullReader =
23037/*#__PURE__*/
23038function (_BaseFullReader) {
23039  _inherits(PDFNodeStreamFullReader, _BaseFullReader);
23040
23041  function PDFNodeStreamFullReader(stream) {
23042    var _this3;
23043
23044    _classCallCheck(this, PDFNodeStreamFullReader);
23045
23046    _this3 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFullReader).call(this, stream));
23047
23048    var handleResponse = function handleResponse(response) {
23049      if (response.statusCode === 404) {
23050        var error = new _util.MissingPDFException("Missing PDF \"".concat(_this3._url, "\"."));
23051        _this3._storedError = error;
23052
23053        _this3._headersCapability.reject(error);
23054
23055        return;
23056      }
23057
23058      _this3._headersCapability.resolve();
23059
23060      _this3._setReadableStream(response);
23061
23062      var getResponseHeader = function getResponseHeader(name) {
23063        return _this3._readableStream.headers[name.toLowerCase()];
23064      };
23065
23066      var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
23067        getResponseHeader: getResponseHeader,
23068        isHttp: stream.isHttp,
23069        rangeChunkSize: _this3._rangeChunkSize,
23070        disableRange: _this3._disableRange
23071      }),
23072          allowRangeRequests = _validateRangeRequest.allowRangeRequests,
23073          suggestedLength = _validateRangeRequest.suggestedLength;
23074
23075      _this3._isRangeSupported = allowRangeRequests;
23076      _this3._contentLength = suggestedLength || _this3._contentLength;
23077      _this3._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
23078    };
23079
23080    _this3._request = null;
23081
23082    if (_this3._url.protocol === 'http:') {
23083      _this3._request = http.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);
23084    } else {
23085      _this3._request = https.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);
23086    }
23087
23088    _this3._request.on('error', function (reason) {
23089      _this3._storedError = reason;
23090
23091      _this3._headersCapability.reject(reason);
23092    });
23093
23094    _this3._request.end();
23095
23096    return _this3;
23097  }
23098
23099  return PDFNodeStreamFullReader;
23100}(BaseFullReader);
23101
23102var PDFNodeStreamRangeReader =
23103/*#__PURE__*/
23104function (_BaseRangeReader) {
23105  _inherits(PDFNodeStreamRangeReader, _BaseRangeReader);
23106
23107  function PDFNodeStreamRangeReader(stream, start, end) {
23108    var _this4;
23109
23110    _classCallCheck(this, PDFNodeStreamRangeReader);
23111
23112    _this4 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamRangeReader).call(this, stream));
23113    _this4._httpHeaders = {};
23114
23115    for (var property in stream.httpHeaders) {
23116      var value = stream.httpHeaders[property];
23117
23118      if (typeof value === 'undefined') {
23119        continue;
23120      }
23121
23122      _this4._httpHeaders[property] = value;
23123    }
23124
23125    _this4._httpHeaders['Range'] = "bytes=".concat(start, "-").concat(end - 1);
23126
23127    var handleResponse = function handleResponse(response) {
23128      if (response.statusCode === 404) {
23129        var error = new _util.MissingPDFException("Missing PDF \"".concat(_this4._url, "\"."));
23130        _this4._storedError = error;
23131        return;
23132      }
23133
23134      _this4._setReadableStream(response);
23135    };
23136
23137    _this4._request = null;
23138
23139    if (_this4._url.protocol === 'http:') {
23140      _this4._request = http.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);
23141    } else {
23142      _this4._request = https.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);
23143    }
23144
23145    _this4._request.on('error', function (reason) {
23146      _this4._storedError = reason;
23147    });
23148
23149    _this4._request.end();
23150
23151    return _this4;
23152  }
23153
23154  return PDFNodeStreamRangeReader;
23155}(BaseRangeReader);
23156
23157var PDFNodeStreamFsFullReader =
23158/*#__PURE__*/
23159function (_BaseFullReader2) {
23160  _inherits(PDFNodeStreamFsFullReader, _BaseFullReader2);
23161
23162  function PDFNodeStreamFsFullReader(stream) {
23163    var _this5;
23164
23165    _classCallCheck(this, PDFNodeStreamFsFullReader);
23166
23167    _this5 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFsFullReader).call(this, stream));
23168    var path = decodeURIComponent(_this5._url.path);
23169
23170    if (fileUriRegex.test(_this5._url.href)) {
23171      path = path.replace(/^\//, '');
23172    }
23173
23174    fs.lstat(path, function (error, stat) {
23175      if (error) {
23176        if (error.code === 'ENOENT') {
23177          error = new _util.MissingPDFException("Missing PDF \"".concat(path, "\"."));
23178        }
23179
23180        _this5._storedError = error;
23181
23182        _this5._headersCapability.reject(error);
23183
23184        return;
23185      }
23186
23187      _this5._contentLength = stat.size;
23188
23189      _this5._setReadableStream(fs.createReadStream(path));
23190
23191      _this5._headersCapability.resolve();
23192    });
23193    return _this5;
23194  }
23195
23196  return PDFNodeStreamFsFullReader;
23197}(BaseFullReader);
23198
23199var PDFNodeStreamFsRangeReader =
23200/*#__PURE__*/
23201function (_BaseRangeReader2) {
23202  _inherits(PDFNodeStreamFsRangeReader, _BaseRangeReader2);
23203
23204  function PDFNodeStreamFsRangeReader(stream, start, end) {
23205    var _this6;
23206
23207    _classCallCheck(this, PDFNodeStreamFsRangeReader);
23208
23209    _this6 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFsRangeReader).call(this, stream));
23210    var path = decodeURIComponent(_this6._url.path);
23211
23212    if (fileUriRegex.test(_this6._url.href)) {
23213      path = path.replace(/^\//, '');
23214    }
23215
23216    _this6._setReadableStream(fs.createReadStream(path, {
23217      start: start,
23218      end: end - 1
23219    }));
23220
23221    return _this6;
23222  }
23223
23224  return PDFNodeStreamFsRangeReader;
23225}(BaseRangeReader);
23226
23227/***/ }),
23228/* 166 */
23229/***/ (function(module, exports, __w_pdfjs_require__) {
23230
23231"use strict";
23232
23233
23234Object.defineProperty(exports, "__esModule", {
23235  value: true
23236});
23237exports.createResponseStatusError = createResponseStatusError;
23238exports.extractFilenameFromHeader = extractFilenameFromHeader;
23239exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;
23240exports.validateResponseStatus = validateResponseStatus;
23241
23242var _util = __w_pdfjs_require__(1);
23243
23244var _content_disposition = __w_pdfjs_require__(167);
23245
23246function validateRangeRequestCapabilities(_ref) {
23247  var getResponseHeader = _ref.getResponseHeader,
23248      isHttp = _ref.isHttp,
23249      rangeChunkSize = _ref.rangeChunkSize,
23250      disableRange = _ref.disableRange;
23251  (0, _util.assert)(rangeChunkSize > 0, 'Range chunk size must be larger than zero');
23252  var returnValues = {
23253    allowRangeRequests: false,
23254    suggestedLength: undefined
23255  };
23256  var length = parseInt(getResponseHeader('Content-Length'), 10);
23257
23258  if (!Number.isInteger(length)) {
23259    return returnValues;
23260  }
23261
23262  returnValues.suggestedLength = length;
23263
23264  if (length <= 2 * rangeChunkSize) {
23265    return returnValues;
23266  }
23267
23268  if (disableRange || !isHttp) {
23269    return returnValues;
23270  }
23271
23272  if (getResponseHeader('Accept-Ranges') !== 'bytes') {
23273    return returnValues;
23274  }
23275
23276  var contentEncoding = getResponseHeader('Content-Encoding') || 'identity';
23277
23278  if (contentEncoding !== 'identity') {
23279    return returnValues;
23280  }
23281
23282  returnValues.allowRangeRequests = true;
23283  return returnValues;
23284}
23285
23286function extractFilenameFromHeader(getResponseHeader) {
23287  var contentDisposition = getResponseHeader('Content-Disposition');
23288
23289  if (contentDisposition) {
23290    var filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);
23291
23292    if (/\.pdf$/i.test(filename)) {
23293      return filename;
23294    }
23295  }
23296
23297  return null;
23298}
23299
23300function createResponseStatusError(status, url) {
23301  if (status === 404 || status === 0 && /^file:/.test(url)) {
23302    return new _util.MissingPDFException('Missing PDF "' + url + '".');
23303  }
23304
23305  return new _util.UnexpectedResponseException('Unexpected server response (' + status + ') while retrieving PDF "' + url + '".', status);
23306}
23307
23308function validateResponseStatus(status) {
23309  return status === 200 || status === 206;
23310}
23311
23312/***/ }),
23313/* 167 */
23314/***/ (function(module, exports, __w_pdfjs_require__) {
23315
23316"use strict";
23317
23318
23319Object.defineProperty(exports, "__esModule", {
23320  value: true
23321});
23322exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
23323
23324function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
23325
23326function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
23327
23328function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
23329
23330function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
23331
23332function getFilenameFromContentDispositionHeader(contentDisposition) {
23333  var needsEncodingFixup = true;
23334  var tmp = toParamRegExp('filename\\*', 'i').exec(contentDisposition);
23335
23336  if (tmp) {
23337    tmp = tmp[1];
23338    var filename = rfc2616unquote(tmp);
23339    filename = unescape(filename);
23340    filename = rfc5987decode(filename);
23341    filename = rfc2047decode(filename);
23342    return fixupEncoding(filename);
23343  }
23344
23345  tmp = rfc2231getparam(contentDisposition);
23346
23347  if (tmp) {
23348    var _filename = rfc2047decode(tmp);
23349
23350    return fixupEncoding(_filename);
23351  }
23352
23353  tmp = toParamRegExp('filename', 'i').exec(contentDisposition);
23354
23355  if (tmp) {
23356    tmp = tmp[1];
23357
23358    var _filename2 = rfc2616unquote(tmp);
23359
23360    _filename2 = rfc2047decode(_filename2);
23361    return fixupEncoding(_filename2);
23362  }
23363
23364  function toParamRegExp(attributePattern, flags) {
23365    return new RegExp('(?:^|;)\\s*' + attributePattern + '\\s*=\\s*' + '(' + '[^";\\s][^;\\s]*' + '|' + '"(?:[^"\\\\]|\\\\"?)+"?' + ')', flags);
23366  }
23367
23368  function textdecode(encoding, value) {
23369    if (encoding) {
23370      if (!/^[\x00-\xFF]+$/.test(value)) {
23371        return value;
23372      }
23373
23374      try {
23375        var decoder = new TextDecoder(encoding, {
23376          fatal: true
23377        });
23378        var bytes = Array.from(value, function (ch) {
23379          return ch.charCodeAt(0) & 0xFF;
23380        });
23381        value = decoder.decode(new Uint8Array(bytes));
23382        needsEncodingFixup = false;
23383      } catch (e) {
23384        if (/^utf-?8$/i.test(encoding)) {
23385          try {
23386            value = decodeURIComponent(escape(value));
23387            needsEncodingFixup = false;
23388          } catch (err) {}
23389        }
23390      }
23391    }
23392
23393    return value;
23394  }
23395
23396  function fixupEncoding(value) {
23397    if (needsEncodingFixup && /[\x80-\xff]/.test(value)) {
23398      value = textdecode('utf-8', value);
23399
23400      if (needsEncodingFixup) {
23401        value = textdecode('iso-8859-1', value);
23402      }
23403    }
23404
23405    return value;
23406  }
23407
23408  function rfc2231getparam(contentDisposition) {
23409    var matches = [],
23410        match;
23411    var iter = toParamRegExp('filename\\*((?!0\\d)\\d+)(\\*?)', 'ig');
23412
23413    while ((match = iter.exec(contentDisposition)) !== null) {
23414      var _match = match,
23415          _match2 = _slicedToArray(_match, 4),
23416          n = _match2[1],
23417          quot = _match2[2],
23418          part = _match2[3];
23419
23420      n = parseInt(n, 10);
23421
23422      if (n in matches) {
23423        if (n === 0) {
23424          break;
23425        }
23426
23427        continue;
23428      }
23429
23430      matches[n] = [quot, part];
23431    }
23432
23433    var parts = [];
23434
23435    for (var n = 0; n < matches.length; ++n) {
23436      if (!(n in matches)) {
23437        break;
23438      }
23439
23440      var _matches$n = _slicedToArray(matches[n], 2),
23441          quot = _matches$n[0],
23442          part = _matches$n[1];
23443
23444      part = rfc2616unquote(part);
23445
23446      if (quot) {
23447        part = unescape(part);
23448
23449        if (n === 0) {
23450          part = rfc5987decode(part);
23451        }
23452      }
23453
23454      parts.push(part);
23455    }
23456
23457    return parts.join('');
23458  }
23459
23460  function rfc2616unquote(value) {
23461    if (value.startsWith('"')) {
23462      var parts = value.slice(1).split('\\"');
23463
23464      for (var i = 0; i < parts.length; ++i) {
23465        var quotindex = parts[i].indexOf('"');
23466
23467        if (quotindex !== -1) {
23468          parts[i] = parts[i].slice(0, quotindex);
23469          parts.length = i + 1;
23470        }
23471
23472        parts[i] = parts[i].replace(/\\(.)/g, '$1');
23473      }
23474
23475      value = parts.join('"');
23476    }
23477
23478    return value;
23479  }
23480
23481  function rfc5987decode(extvalue) {
23482    var encodingend = extvalue.indexOf('\'');
23483
23484    if (encodingend === -1) {
23485      return extvalue;
23486    }
23487
23488    var encoding = extvalue.slice(0, encodingend);
23489    var langvalue = extvalue.slice(encodingend + 1);
23490    var value = langvalue.replace(/^[^']*'/, '');
23491    return textdecode(encoding, value);
23492  }
23493
23494  function rfc2047decode(value) {
23495    if (!value.startsWith('=?') || /[\x00-\x19\x80-\xff]/.test(value)) {
23496      return value;
23497    }
23498
23499    return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (_, charset, encoding, text) {
23500      if (encoding === 'q' || encoding === 'Q') {
23501        text = text.replace(/_/g, ' ');
23502        text = text.replace(/=([0-9a-fA-F]{2})/g, function (_, hex) {
23503          return String.fromCharCode(parseInt(hex, 16));
23504        });
23505        return textdecode(charset, text);
23506      }
23507
23508      try {
23509        text = atob(text);
23510      } catch (e) {}
23511
23512      return textdecode(charset, text);
23513    });
23514  }
23515
23516  return '';
23517}
23518
23519/***/ }),
23520/* 168 */
23521/***/ (function(module, exports, __w_pdfjs_require__) {
23522
23523"use strict";
23524
23525
23526Object.defineProperty(exports, "__esModule", {
23527  value: true
23528});
23529exports.PDFNetworkStream = void 0;
23530
23531var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
23532
23533var _util = __w_pdfjs_require__(1);
23534
23535var _network_utils = __w_pdfjs_require__(166);
23536
23537function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23538
23539function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
23540
23541function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
23542
23543function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
23544
23545function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
23546
23547function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
23548
23549;
23550var OK_RESPONSE = 200;
23551var PARTIAL_CONTENT_RESPONSE = 206;
23552
23553function getArrayBuffer(xhr) {
23554  var data = xhr.response;
23555
23556  if (typeof data !== 'string') {
23557    return data;
23558  }
23559
23560  var array = (0, _util.stringToBytes)(data);
23561  return array.buffer;
23562}
23563
23564var NetworkManager =
23565/*#__PURE__*/
23566function () {
23567  function NetworkManager(url, args) {
23568    _classCallCheck(this, NetworkManager);
23569
23570    this.url = url;
23571    args = args || {};
23572    this.isHttp = /^https?:/i.test(url);
23573    this.httpHeaders = this.isHttp && args.httpHeaders || {};
23574    this.withCredentials = args.withCredentials || false;
23575
23576    this.getXhr = args.getXhr || function NetworkManager_getXhr() {
23577      return new XMLHttpRequest();
23578    };
23579
23580    this.currXhrId = 0;
23581    this.pendingRequests = Object.create(null);
23582  }
23583
23584  _createClass(NetworkManager, [{
23585    key: "requestRange",
23586    value: function requestRange(begin, end, listeners) {
23587      var args = {
23588        begin: begin,
23589        end: end
23590      };
23591
23592      for (var prop in listeners) {
23593        args[prop] = listeners[prop];
23594      }
23595
23596      return this.request(args);
23597    }
23598  }, {
23599    key: "requestFull",
23600    value: function requestFull(listeners) {
23601      return this.request(listeners);
23602    }
23603  }, {
23604    key: "request",
23605    value: function request(args) {
23606      var xhr = this.getXhr();
23607      var xhrId = this.currXhrId++;
23608      var pendingRequest = this.pendingRequests[xhrId] = {
23609        xhr: xhr
23610      };
23611      xhr.open('GET', this.url);
23612      xhr.withCredentials = this.withCredentials;
23613
23614      for (var property in this.httpHeaders) {
23615        var value = this.httpHeaders[property];
23616
23617        if (typeof value === 'undefined') {
23618          continue;
23619        }
23620
23621        xhr.setRequestHeader(property, value);
23622      }
23623
23624      if (this.isHttp && 'begin' in args && 'end' in args) {
23625        xhr.setRequestHeader('Range', "bytes=".concat(args.begin, "-").concat(args.end - 1));
23626        pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;
23627      } else {
23628        pendingRequest.expectedStatus = OK_RESPONSE;
23629      }
23630
23631      xhr.responseType = 'arraybuffer';
23632
23633      if (args.onError) {
23634        xhr.onerror = function (evt) {
23635          args.onError(xhr.status);
23636        };
23637      }
23638
23639      xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);
23640      xhr.onprogress = this.onProgress.bind(this, xhrId);
23641      pendingRequest.onHeadersReceived = args.onHeadersReceived;
23642      pendingRequest.onDone = args.onDone;
23643      pendingRequest.onError = args.onError;
23644      pendingRequest.onProgress = args.onProgress;
23645      xhr.send(null);
23646      return xhrId;
23647    }
23648  }, {
23649    key: "onProgress",
23650    value: function onProgress(xhrId, evt) {
23651      var pendingRequest = this.pendingRequests[xhrId];
23652
23653      if (!pendingRequest) {
23654        return;
23655      }
23656
23657      if (pendingRequest.onProgress) {
23658        pendingRequest.onProgress(evt);
23659      }
23660    }
23661  }, {
23662    key: "onStateChange",
23663    value: function onStateChange(xhrId, evt) {
23664      var pendingRequest = this.pendingRequests[xhrId];
23665
23666      if (!pendingRequest) {
23667        return;
23668      }
23669
23670      var xhr = pendingRequest.xhr;
23671
23672      if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {
23673        pendingRequest.onHeadersReceived();
23674        delete pendingRequest.onHeadersReceived;
23675      }
23676
23677      if (xhr.readyState !== 4) {
23678        return;
23679      }
23680
23681      if (!(xhrId in this.pendingRequests)) {
23682        return;
23683      }
23684
23685      delete this.pendingRequests[xhrId];
23686
23687      if (xhr.status === 0 && this.isHttp) {
23688        if (pendingRequest.onError) {
23689          pendingRequest.onError(xhr.status);
23690        }
23691
23692        return;
23693      }
23694
23695      var xhrStatus = xhr.status || OK_RESPONSE;
23696      var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;
23697
23698      if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {
23699        if (pendingRequest.onError) {
23700          pendingRequest.onError(xhr.status);
23701        }
23702
23703        return;
23704      }
23705
23706      var chunk = getArrayBuffer(xhr);
23707
23708      if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {
23709        var rangeHeader = xhr.getResponseHeader('Content-Range');
23710        var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader);
23711        pendingRequest.onDone({
23712          begin: parseInt(matches[1], 10),
23713          chunk: chunk
23714        });
23715      } else if (chunk) {
23716        pendingRequest.onDone({
23717          begin: 0,
23718          chunk: chunk
23719        });
23720      } else if (pendingRequest.onError) {
23721        pendingRequest.onError(xhr.status);
23722      }
23723    }
23724  }, {
23725    key: "hasPendingRequests",
23726    value: function hasPendingRequests() {
23727      for (var xhrId in this.pendingRequests) {
23728        return true;
23729      }
23730
23731      return false;
23732    }
23733  }, {
23734    key: "getRequestXhr",
23735    value: function getRequestXhr(xhrId) {
23736      return this.pendingRequests[xhrId].xhr;
23737    }
23738  }, {
23739    key: "isPendingRequest",
23740    value: function isPendingRequest(xhrId) {
23741      return xhrId in this.pendingRequests;
23742    }
23743  }, {
23744    key: "abortAllRequests",
23745    value: function abortAllRequests() {
23746      for (var xhrId in this.pendingRequests) {
23747        this.abortRequest(xhrId | 0);
23748      }
23749    }
23750  }, {
23751    key: "abortRequest",
23752    value: function abortRequest(xhrId) {
23753      var xhr = this.pendingRequests[xhrId].xhr;
23754      delete this.pendingRequests[xhrId];
23755      xhr.abort();
23756    }
23757  }]);
23758
23759  return NetworkManager;
23760}();
23761
23762var PDFNetworkStream =
23763/*#__PURE__*/
23764function () {
23765  function PDFNetworkStream(source) {
23766    _classCallCheck(this, PDFNetworkStream);
23767
23768    this._source = source;
23769    this._manager = new NetworkManager(source.url, {
23770      httpHeaders: source.httpHeaders,
23771      withCredentials: source.withCredentials
23772    });
23773    this._rangeChunkSize = source.rangeChunkSize;
23774    this._fullRequestReader = null;
23775    this._rangeRequestReaders = [];
23776  }
23777
23778  _createClass(PDFNetworkStream, [{
23779    key: "_onRangeRequestReaderClosed",
23780    value: function _onRangeRequestReaderClosed(reader) {
23781      var i = this._rangeRequestReaders.indexOf(reader);
23782
23783      if (i >= 0) {
23784        this._rangeRequestReaders.splice(i, 1);
23785      }
23786    }
23787  }, {
23788    key: "getFullReader",
23789    value: function getFullReader() {
23790      (0, _util.assert)(!this._fullRequestReader);
23791      this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);
23792      return this._fullRequestReader;
23793    }
23794  }, {
23795    key: "getRangeReader",
23796    value: function getRangeReader(begin, end) {
23797      var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);
23798      reader.onClosed = this._onRangeRequestReaderClosed.bind(this);
23799
23800      this._rangeRequestReaders.push(reader);
23801
23802      return reader;
23803    }
23804  }, {
23805    key: "cancelAllRequests",
23806    value: function cancelAllRequests(reason) {
23807      if (this._fullRequestReader) {
23808        this._fullRequestReader.cancel(reason);
23809      }
23810
23811      var readers = this._rangeRequestReaders.slice(0);
23812
23813      readers.forEach(function (reader) {
23814        reader.cancel(reason);
23815      });
23816    }
23817  }]);
23818
23819  return PDFNetworkStream;
23820}();
23821
23822exports.PDFNetworkStream = PDFNetworkStream;
23823
23824var PDFNetworkStreamFullRequestReader =
23825/*#__PURE__*/
23826function () {
23827  function PDFNetworkStreamFullRequestReader(manager, source) {
23828    _classCallCheck(this, PDFNetworkStreamFullRequestReader);
23829
23830    this._manager = manager;
23831    var args = {
23832      onHeadersReceived: this._onHeadersReceived.bind(this),
23833      onDone: this._onDone.bind(this),
23834      onError: this._onError.bind(this),
23835      onProgress: this._onProgress.bind(this)
23836    };
23837    this._url = source.url;
23838    this._fullRequestId = manager.requestFull(args);
23839    this._headersReceivedCapability = (0, _util.createPromiseCapability)();
23840    this._disableRange = source.disableRange || false;
23841    this._contentLength = source.length;
23842    this._rangeChunkSize = source.rangeChunkSize;
23843
23844    if (!this._rangeChunkSize && !this._disableRange) {
23845      this._disableRange = true;
23846    }
23847
23848    this._isStreamingSupported = false;
23849    this._isRangeSupported = false;
23850    this._cachedChunks = [];
23851    this._requests = [];
23852    this._done = false;
23853    this._storedError = undefined;
23854    this._filename = null;
23855    this.onProgress = null;
23856  }
23857
23858  _createClass(PDFNetworkStreamFullRequestReader, [{
23859    key: "_onHeadersReceived",
23860    value: function _onHeadersReceived() {
23861      var fullRequestXhrId = this._fullRequestId;
23862
23863      var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);
23864
23865      var getResponseHeader = function getResponseHeader(name) {
23866        return fullRequestXhr.getResponseHeader(name);
23867      };
23868
23869      var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
23870        getResponseHeader: getResponseHeader,
23871        isHttp: this._manager.isHttp,
23872        rangeChunkSize: this._rangeChunkSize,
23873        disableRange: this._disableRange
23874      }),
23875          allowRangeRequests = _validateRangeRequest.allowRangeRequests,
23876          suggestedLength = _validateRangeRequest.suggestedLength;
23877
23878      if (allowRangeRequests) {
23879        this._isRangeSupported = true;
23880      }
23881
23882      this._contentLength = suggestedLength || this._contentLength;
23883      this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
23884
23885      if (this._isRangeSupported) {
23886        this._manager.abortRequest(fullRequestXhrId);
23887      }
23888
23889      this._headersReceivedCapability.resolve();
23890    }
23891  }, {
23892    key: "_onDone",
23893    value: function _onDone(args) {
23894      if (args) {
23895        if (this._requests.length > 0) {
23896          var requestCapability = this._requests.shift();
23897
23898          requestCapability.resolve({
23899            value: args.chunk,
23900            done: false
23901          });
23902        } else {
23903          this._cachedChunks.push(args.chunk);
23904        }
23905      }
23906
23907      this._done = true;
23908
23909      if (this._cachedChunks.length > 0) {
23910        return;
23911      }
23912
23913      this._requests.forEach(function (requestCapability) {
23914        requestCapability.resolve({
23915          value: undefined,
23916          done: true
23917        });
23918      });
23919
23920      this._requests = [];
23921    }
23922  }, {
23923    key: "_onError",
23924    value: function _onError(status) {
23925      var url = this._url;
23926      var exception = (0, _network_utils.createResponseStatusError)(status, url);
23927      this._storedError = exception;
23928
23929      this._headersReceivedCapability.reject(exception);
23930
23931      this._requests.forEach(function (requestCapability) {
23932        requestCapability.reject(exception);
23933      });
23934
23935      this._requests = [];
23936      this._cachedChunks = [];
23937    }
23938  }, {
23939    key: "_onProgress",
23940    value: function _onProgress(data) {
23941      if (this.onProgress) {
23942        this.onProgress({
23943          loaded: data.loaded,
23944          total: data.lengthComputable ? data.total : this._contentLength
23945        });
23946      }
23947    }
23948  }, {
23949    key: "read",
23950    value: function () {
23951      var _read = _asyncToGenerator(
23952      /*#__PURE__*/
23953      _regenerator["default"].mark(function _callee() {
23954        var chunk, requestCapability;
23955        return _regenerator["default"].wrap(function _callee$(_context) {
23956          while (1) {
23957            switch (_context.prev = _context.next) {
23958              case 0:
23959                if (!this._storedError) {
23960                  _context.next = 2;
23961                  break;
23962                }
23963
23964                throw this._storedError;
23965
23966              case 2:
23967                if (!(this._cachedChunks.length > 0)) {
23968                  _context.next = 5;
23969                  break;
23970                }
23971
23972                chunk = this._cachedChunks.shift();
23973                return _context.abrupt("return", {
23974                  value: chunk,
23975                  done: false
23976                });
23977
23978              case 5:
23979                if (!this._done) {
23980                  _context.next = 7;
23981                  break;
23982                }
23983
23984                return _context.abrupt("return", {
23985                  value: undefined,
23986                  done: true
23987                });
23988
23989              case 7:
23990                requestCapability = (0, _util.createPromiseCapability)();
23991
23992                this._requests.push(requestCapability);
23993
23994                return _context.abrupt("return", requestCapability.promise);
23995
23996              case 10:
23997              case "end":
23998                return _context.stop();
23999            }
24000          }
24001        }, _callee, this);
24002      }));
24003
24004      function read() {
24005        return _read.apply(this, arguments);
24006      }
24007
24008      return read;
24009    }()
24010  }, {
24011    key: "cancel",
24012    value: function cancel(reason) {
24013      this._done = true;
24014
24015      this._headersReceivedCapability.reject(reason);
24016
24017      this._requests.forEach(function (requestCapability) {
24018        requestCapability.resolve({
24019          value: undefined,
24020          done: true
24021        });
24022      });
24023
24024      this._requests = [];
24025
24026      if (this._manager.isPendingRequest(this._fullRequestId)) {
24027        this._manager.abortRequest(this._fullRequestId);
24028      }
24029
24030      this._fullRequestReader = null;
24031    }
24032  }, {
24033    key: "filename",
24034    get: function get() {
24035      return this._filename;
24036    }
24037  }, {
24038    key: "isRangeSupported",
24039    get: function get() {
24040      return this._isRangeSupported;
24041    }
24042  }, {
24043    key: "isStreamingSupported",
24044    get: function get() {
24045      return this._isStreamingSupported;
24046    }
24047  }, {
24048    key: "contentLength",
24049    get: function get() {
24050      return this._contentLength;
24051    }
24052  }, {
24053    key: "headersReady",
24054    get: function get() {
24055      return this._headersReceivedCapability.promise;
24056    }
24057  }]);
24058
24059  return PDFNetworkStreamFullRequestReader;
24060}();
24061
24062var PDFNetworkStreamRangeRequestReader =
24063/*#__PURE__*/
24064function () {
24065  function PDFNetworkStreamRangeRequestReader(manager, begin, end) {
24066    _classCallCheck(this, PDFNetworkStreamRangeRequestReader);
24067
24068    this._manager = manager;
24069    var args = {
24070      onDone: this._onDone.bind(this),
24071      onProgress: this._onProgress.bind(this)
24072    };
24073    this._requestId = manager.requestRange(begin, end, args);
24074    this._requests = [];
24075    this._queuedChunk = null;
24076    this._done = false;
24077    this.onProgress = null;
24078    this.onClosed = null;
24079  }
24080
24081  _createClass(PDFNetworkStreamRangeRequestReader, [{
24082    key: "_close",
24083    value: function _close() {
24084      if (this.onClosed) {
24085        this.onClosed(this);
24086      }
24087    }
24088  }, {
24089    key: "_onDone",
24090    value: function _onDone(data) {
24091      var chunk = data.chunk;
24092
24093      if (this._requests.length > 0) {
24094        var requestCapability = this._requests.shift();
24095
24096        requestCapability.resolve({
24097          value: chunk,
24098          done: false
24099        });
24100      } else {
24101        this._queuedChunk = chunk;
24102      }
24103
24104      this._done = true;
24105
24106      this._requests.forEach(function (requestCapability) {
24107        requestCapability.resolve({
24108          value: undefined,
24109          done: true
24110        });
24111      });
24112
24113      this._requests = [];
24114
24115      this._close();
24116    }
24117  }, {
24118    key: "_onProgress",
24119    value: function _onProgress(evt) {
24120      if (!this.isStreamingSupported && this.onProgress) {
24121        this.onProgress({
24122          loaded: evt.loaded
24123        });
24124      }
24125    }
24126  }, {
24127    key: "read",
24128    value: function () {
24129      var _read2 = _asyncToGenerator(
24130      /*#__PURE__*/
24131      _regenerator["default"].mark(function _callee2() {
24132        var chunk, requestCapability;
24133        return _regenerator["default"].wrap(function _callee2$(_context2) {
24134          while (1) {
24135            switch (_context2.prev = _context2.next) {
24136              case 0:
24137                if (!(this._queuedChunk !== null)) {
24138                  _context2.next = 4;
24139                  break;
24140                }
24141
24142                chunk = this._queuedChunk;
24143                this._queuedChunk = null;
24144                return _context2.abrupt("return", {
24145                  value: chunk,
24146                  done: false
24147                });
24148
24149              case 4:
24150                if (!this._done) {
24151                  _context2.next = 6;
24152                  break;
24153                }
24154
24155                return _context2.abrupt("return", {
24156                  value: undefined,
24157                  done: true
24158                });
24159
24160              case 6:
24161                requestCapability = (0, _util.createPromiseCapability)();
24162
24163                this._requests.push(requestCapability);
24164
24165                return _context2.abrupt("return", requestCapability.promise);
24166
24167              case 9:
24168              case "end":
24169                return _context2.stop();
24170            }
24171          }
24172        }, _callee2, this);
24173      }));
24174
24175      function read() {
24176        return _read2.apply(this, arguments);
24177      }
24178
24179      return read;
24180    }()
24181  }, {
24182    key: "cancel",
24183    value: function cancel(reason) {
24184      this._done = true;
24185
24186      this._requests.forEach(function (requestCapability) {
24187        requestCapability.resolve({
24188          value: undefined,
24189          done: true
24190        });
24191      });
24192
24193      this._requests = [];
24194
24195      if (this._manager.isPendingRequest(this._requestId)) {
24196        this._manager.abortRequest(this._requestId);
24197      }
24198
24199      this._close();
24200    }
24201  }, {
24202    key: "isStreamingSupported",
24203    get: function get() {
24204      return false;
24205    }
24206  }]);
24207
24208  return PDFNetworkStreamRangeRequestReader;
24209}();
24210
24211/***/ }),
24212/* 169 */
24213/***/ (function(module, exports, __w_pdfjs_require__) {
24214
24215"use strict";
24216
24217
24218Object.defineProperty(exports, "__esModule", {
24219  value: true
24220});
24221exports.PDFFetchStream = void 0;
24222
24223var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
24224
24225var _util = __w_pdfjs_require__(1);
24226
24227var _network_utils = __w_pdfjs_require__(166);
24228
24229function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24230
24231function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
24232
24233function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
24234
24235function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
24236
24237function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
24238
24239function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
24240
24241function createFetchOptions(headers, withCredentials, abortController) {
24242  return {
24243    method: 'GET',
24244    headers: headers,
24245    signal: abortController && abortController.signal,
24246    mode: 'cors',
24247    credentials: withCredentials ? 'include' : 'same-origin',
24248    redirect: 'follow'
24249  };
24250}
24251
24252var PDFFetchStream =
24253/*#__PURE__*/
24254function () {
24255  function PDFFetchStream(source) {
24256    _classCallCheck(this, PDFFetchStream);
24257
24258    this.source = source;
24259    this.isHttp = /^https?:/i.test(source.url);
24260    this.httpHeaders = this.isHttp && source.httpHeaders || {};
24261    this._fullRequestReader = null;
24262    this._rangeRequestReaders = [];
24263  }
24264
24265  _createClass(PDFFetchStream, [{
24266    key: "getFullReader",
24267    value: function getFullReader() {
24268      (0, _util.assert)(!this._fullRequestReader);
24269      this._fullRequestReader = new PDFFetchStreamReader(this);
24270      return this._fullRequestReader;
24271    }
24272  }, {
24273    key: "getRangeReader",
24274    value: function getRangeReader(begin, end) {
24275      if (end <= this._progressiveDataLength) {
24276        return null;
24277      }
24278
24279      var reader = new PDFFetchStreamRangeReader(this, begin, end);
24280
24281      this._rangeRequestReaders.push(reader);
24282
24283      return reader;
24284    }
24285  }, {
24286    key: "cancelAllRequests",
24287    value: function cancelAllRequests(reason) {
24288      if (this._fullRequestReader) {
24289        this._fullRequestReader.cancel(reason);
24290      }
24291
24292      var readers = this._rangeRequestReaders.slice(0);
24293
24294      readers.forEach(function (reader) {
24295        reader.cancel(reason);
24296      });
24297    }
24298  }, {
24299    key: "_progressiveDataLength",
24300    get: function get() {
24301      return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
24302    }
24303  }]);
24304
24305  return PDFFetchStream;
24306}();
24307
24308exports.PDFFetchStream = PDFFetchStream;
24309
24310var PDFFetchStreamReader =
24311/*#__PURE__*/
24312function () {
24313  function PDFFetchStreamReader(stream) {
24314    var _this = this;
24315
24316    _classCallCheck(this, PDFFetchStreamReader);
24317
24318    this._stream = stream;
24319    this._reader = null;
24320    this._loaded = 0;
24321    this._filename = null;
24322    var source = stream.source;
24323    this._withCredentials = source.withCredentials || false;
24324    this._contentLength = source.length;
24325    this._headersCapability = (0, _util.createPromiseCapability)();
24326    this._disableRange = source.disableRange || false;
24327    this._rangeChunkSize = source.rangeChunkSize;
24328
24329    if (!this._rangeChunkSize && !this._disableRange) {
24330      this._disableRange = true;
24331    }
24332
24333    if (typeof AbortController !== 'undefined') {
24334      this._abortController = new AbortController();
24335    }
24336
24337    this._isStreamingSupported = !source.disableStream;
24338    this._isRangeSupported = !source.disableRange;
24339    this._headers = new Headers();
24340
24341    for (var property in this._stream.httpHeaders) {
24342      var value = this._stream.httpHeaders[property];
24343
24344      if (typeof value === 'undefined') {
24345        continue;
24346      }
24347
24348      this._headers.append(property, value);
24349    }
24350
24351    var url = source.url;
24352    fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {
24353      if (!(0, _network_utils.validateResponseStatus)(response.status)) {
24354        throw (0, _network_utils.createResponseStatusError)(response.status, url);
24355      }
24356
24357      _this._reader = response.body.getReader();
24358
24359      _this._headersCapability.resolve();
24360
24361      var getResponseHeader = function getResponseHeader(name) {
24362        return response.headers.get(name);
24363      };
24364
24365      var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
24366        getResponseHeader: getResponseHeader,
24367        isHttp: _this._stream.isHttp,
24368        rangeChunkSize: _this._rangeChunkSize,
24369        disableRange: _this._disableRange
24370      }),
24371          allowRangeRequests = _validateRangeRequest.allowRangeRequests,
24372          suggestedLength = _validateRangeRequest.suggestedLength;
24373
24374      _this._isRangeSupported = allowRangeRequests;
24375      _this._contentLength = suggestedLength || _this._contentLength;
24376      _this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
24377
24378      if (!_this._isStreamingSupported && _this._isRangeSupported) {
24379        _this.cancel(new _util.AbortException('Streaming is disabled.'));
24380      }
24381    })["catch"](this._headersCapability.reject);
24382    this.onProgress = null;
24383  }
24384
24385  _createClass(PDFFetchStreamReader, [{
24386    key: "read",
24387    value: function () {
24388      var _read = _asyncToGenerator(
24389      /*#__PURE__*/
24390      _regenerator["default"].mark(function _callee() {
24391        var _ref, value, done, buffer;
24392
24393        return _regenerator["default"].wrap(function _callee$(_context) {
24394          while (1) {
24395            switch (_context.prev = _context.next) {
24396              case 0:
24397                _context.next = 2;
24398                return this._headersCapability.promise;
24399
24400              case 2:
24401                _context.next = 4;
24402                return this._reader.read();
24403
24404              case 4:
24405                _ref = _context.sent;
24406                value = _ref.value;
24407                done = _ref.done;
24408
24409                if (!done) {
24410                  _context.next = 9;
24411                  break;
24412                }
24413
24414                return _context.abrupt("return", {
24415                  value: value,
24416                  done: done
24417                });
24418
24419              case 9:
24420                this._loaded += value.byteLength;
24421
24422                if (this.onProgress) {
24423                  this.onProgress({
24424                    loaded: this._loaded,
24425                    total: this._contentLength
24426                  });
24427                }
24428
24429                buffer = new Uint8Array(value).buffer;
24430                return _context.abrupt("return", {
24431                  value: buffer,
24432                  done: false
24433                });
24434
24435              case 13:
24436              case "end":
24437                return _context.stop();
24438            }
24439          }
24440        }, _callee, this);
24441      }));
24442
24443      function read() {
24444        return _read.apply(this, arguments);
24445      }
24446
24447      return read;
24448    }()
24449  }, {
24450    key: "cancel",
24451    value: function cancel(reason) {
24452      if (this._reader) {
24453        this._reader.cancel(reason);
24454      }
24455
24456      if (this._abortController) {
24457        this._abortController.abort();
24458      }
24459    }
24460  }, {
24461    key: "headersReady",
24462    get: function get() {
24463      return this._headersCapability.promise;
24464    }
24465  }, {
24466    key: "filename",
24467    get: function get() {
24468      return this._filename;
24469    }
24470  }, {
24471    key: "contentLength",
24472    get: function get() {
24473      return this._contentLength;
24474    }
24475  }, {
24476    key: "isRangeSupported",
24477    get: function get() {
24478      return this._isRangeSupported;
24479    }
24480  }, {
24481    key: "isStreamingSupported",
24482    get: function get() {
24483      return this._isStreamingSupported;
24484    }
24485  }]);
24486
24487  return PDFFetchStreamReader;
24488}();
24489
24490var PDFFetchStreamRangeReader =
24491/*#__PURE__*/
24492function () {
24493  function PDFFetchStreamRangeReader(stream, begin, end) {
24494    var _this2 = this;
24495
24496    _classCallCheck(this, PDFFetchStreamRangeReader);
24497
24498    this._stream = stream;
24499    this._reader = null;
24500    this._loaded = 0;
24501    var source = stream.source;
24502    this._withCredentials = source.withCredentials || false;
24503    this._readCapability = (0, _util.createPromiseCapability)();
24504    this._isStreamingSupported = !source.disableStream;
24505
24506    if (typeof AbortController !== 'undefined') {
24507      this._abortController = new AbortController();
24508    }
24509
24510    this._headers = new Headers();
24511
24512    for (var property in this._stream.httpHeaders) {
24513      var value = this._stream.httpHeaders[property];
24514
24515      if (typeof value === 'undefined') {
24516        continue;
24517      }
24518
24519      this._headers.append(property, value);
24520    }
24521
24522    this._headers.append('Range', "bytes=".concat(begin, "-").concat(end - 1));
24523
24524    var url = source.url;
24525    fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {
24526      if (!(0, _network_utils.validateResponseStatus)(response.status)) {
24527        throw (0, _network_utils.createResponseStatusError)(response.status, url);
24528      }
24529
24530      _this2._readCapability.resolve();
24531
24532      _this2._reader = response.body.getReader();
24533    });
24534    this.onProgress = null;
24535  }
24536
24537  _createClass(PDFFetchStreamRangeReader, [{
24538    key: "read",
24539    value: function () {
24540      var _read2 = _asyncToGenerator(
24541      /*#__PURE__*/
24542      _regenerator["default"].mark(function _callee2() {
24543        var _ref2, value, done, buffer;
24544
24545        return _regenerator["default"].wrap(function _callee2$(_context2) {
24546          while (1) {
24547            switch (_context2.prev = _context2.next) {
24548              case 0:
24549                _context2.next = 2;
24550                return this._readCapability.promise;
24551
24552              case 2:
24553                _context2.next = 4;
24554                return this._reader.read();
24555
24556              case 4:
24557                _ref2 = _context2.sent;
24558                value = _ref2.value;
24559                done = _ref2.done;
24560
24561                if (!done) {
24562                  _context2.next = 9;
24563                  break;
24564                }
24565
24566                return _context2.abrupt("return", {
24567                  value: value,
24568                  done: done
24569                });
24570
24571              case 9:
24572                this._loaded += value.byteLength;
24573
24574                if (this.onProgress) {
24575                  this.onProgress({
24576                    loaded: this._loaded
24577                  });
24578                }
24579
24580                buffer = new Uint8Array(value).buffer;
24581                return _context2.abrupt("return", {
24582                  value: buffer,
24583                  done: false
24584                });
24585
24586              case 13:
24587              case "end":
24588                return _context2.stop();
24589            }
24590          }
24591        }, _callee2, this);
24592      }));
24593
24594      function read() {
24595        return _read2.apply(this, arguments);
24596      }
24597
24598      return read;
24599    }()
24600  }, {
24601    key: "cancel",
24602    value: function cancel(reason) {
24603      if (this._reader) {
24604        this._reader.cancel(reason);
24605      }
24606
24607      if (this._abortController) {
24608        this._abortController.abort();
24609      }
24610    }
24611  }, {
24612    key: "isStreamingSupported",
24613    get: function get() {
24614      return this._isStreamingSupported;
24615    }
24616  }]);
24617
24618  return PDFFetchStreamRangeReader;
24619}();
24620
24621/***/ })
24622/******/ ]);
24623});
24624//# sourceMappingURL=pdf.js.map