PageSourceSearch

https://fusiontastestoneham.com/menu/build/pdf.js

js fusiontastestoneham.com collected 2026-10-07 06:43:39 UTC 671,124 bytes, 19,365 lines download raw bytes

1/**
2 * @licstart The following is the entire license notice for the
3 * Javascript code in this page
4 *
5 * Copyright 2018 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.0.943';
127var pdfjsBuild = 'dc98bf76';
128var pdfjsSharedUtil = __w_pdfjs_require__(1);
129var pdfjsDisplayAPI = __w_pdfjs_require__(129);
130var pdfjsDisplayTextLayer = __w_pdfjs_require__(145);
131var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(146);
132var pdfjsDisplayDOMUtils = __w_pdfjs_require__(130);
133var pdfjsDisplaySVG = __w_pdfjs_require__(147);
134var pdfjsDisplayWorkerOptions = __w_pdfjs_require__(135);
135var pdfjsDisplayAPICompatibility = __w_pdfjs_require__(132);
136{
137  var isNodeJS = __w_pdfjs_require__(4);
138  if (isNodeJS()) {
139    var PDFNodeStream = __w_pdfjs_require__(148).PDFNodeStream;
140    pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {
141      return new PDFNodeStream(params);
142    });
143  } else if (typeof Response !== 'undefined' && 'body' in Response.prototype && typeof ReadableStream !== 'undefined') {
144    var PDFFetchStream = __w_pdfjs_require__(151).PDFFetchStream;
145    pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {
146      return new PDFFetchStream(params);
147    });
148  } else {
149    var PDFNetworkStream = __w_pdfjs_require__(152).PDFNetworkStream;
150    pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {
151      return new PDFNetworkStream(params);
152    });
153  }
154}
155exports.build = pdfjsDisplayAPI.build;
156exports.version = pdfjsDisplayAPI.version;
157exports.getDocument = pdfjsDisplayAPI.getDocument;
158exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;
159exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;
160exports.PDFWorker = pdfjsDisplayAPI.PDFWorker;
161exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;
162exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;
163exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;
164exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;
165exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;
166exports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;
167exports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;
168exports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;
169exports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType;
170exports.PermissionFlag = pdfjsSharedUtil.PermissionFlag;
171exports.UnexpectedResponseException = pdfjsSharedUtil.UnexpectedResponseException;
172exports.OPS = pdfjsSharedUtil.OPS;
173exports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel;
174exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;
175exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;
176exports.createObjectURL = pdfjsSharedUtil.createObjectURL;
177exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;
178exports.shadow = pdfjsSharedUtil.shadow;
179exports.Util = pdfjsSharedUtil.Util;
180exports.ReadableStream = pdfjsSharedUtil.ReadableStream;
181exports.URL = pdfjsSharedUtil.URL;
182exports.RenderingCancelledException = pdfjsDisplayDOMUtils.RenderingCancelledException;
183exports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl;
184exports.LinkTarget = pdfjsDisplayDOMUtils.LinkTarget;
185exports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes;
186exports.loadScript = pdfjsDisplayDOMUtils.loadScript;
187exports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions;
188exports.apiCompatibilityParams = pdfjsDisplayAPICompatibility.apiCompatibilityParams;
189
190/***/ }),
191/* 1 */
192/***/ (function(module, exports, __w_pdfjs_require__) {
193
194"use strict";
195
196
197Object.defineProperty(exports, "__esModule", {
198  value: true
199});
200exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.URL = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isSpace = exports.isString = exports.isNum = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.info = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.getInheritableProperty = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.toRomanNumerals = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = 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 = undefined;
201
202var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
203
204__w_pdfjs_require__(2);
205
206var _streams_polyfill = __w_pdfjs_require__(125);
207
208var _url_polyfill = __w_pdfjs_require__(127);
209
210var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
211var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
212var NativeImageDecoding = {
213  NONE: 'none',
214  DECODE: 'decode',
215  DISPLAY: 'display'
216};
217var PermissionFlag = {
218  PRINT: 0x04,
219  MODIFY_CONTENTS: 0x08,
220  COPY: 0x10,
221  MODIFY_ANNOTATIONS: 0x20,
222  FILL_INTERACTIVE_FORMS: 0x100,
223  COPY_FOR_ACCESSIBILITY: 0x200,
224  ASSEMBLE: 0x400,
225  PRINT_HIGH_QUALITY: 0x800
226};
227var TextRenderingMode = {
228  FILL: 0,
229  STROKE: 1,
230  FILL_STROKE: 2,
231  INVISIBLE: 3,
232  FILL_ADD_TO_PATH: 4,
233  STROKE_ADD_TO_PATH: 5,
234  FILL_STROKE_ADD_TO_PATH: 6,
235  ADD_TO_PATH: 7,
236  FILL_STROKE_MASK: 3,
237  ADD_TO_PATH_FLAG: 4
238};
239var ImageKind = {
240  GRAYSCALE_1BPP: 1,
241  RGB_24BPP: 2,
242  RGBA_32BPP: 3
243};
244var AnnotationType = {
245  TEXT: 1,
246  LINK: 2,
247  FREETEXT: 3,
248  LINE: 4,
249  SQUARE: 5,
250  CIRCLE: 6,
251  POLYGON: 7,
252  POLYLINE: 8,
253  HIGHLIGHT: 9,
254  UNDERLINE: 10,
255  SQUIGGLY: 11,
256  STRIKEOUT: 12,
257  STAMP: 13,
258  CARET: 14,
259  INK: 15,
260  POPUP: 16,
261  FILEATTACHMENT: 17,
262  SOUND: 18,
263  MOVIE: 19,
264  WIDGET: 20,
265  SCREEN: 21,
266  PRINTERMARK: 22,
267  TRAPNET: 23,
268  WATERMARK: 24,
269  THREED: 25,
270  REDACT: 26
271};
272var AnnotationFlag = {
273  INVISIBLE: 0x01,
274  HIDDEN: 0x02,
275  PRINT: 0x04,
276  NOZOOM: 0x08,
277  NOROTATE: 0x10,
278  NOVIEW: 0x20,
279  READONLY: 0x40,
280  LOCKED: 0x80,
281  TOGGLENOVIEW: 0x100,
282  LOCKEDCONTENTS: 0x200
283};
284var AnnotationFieldFlag = {
285  READONLY: 0x0000001,
286  REQUIRED: 0x0000002,
287  NOEXPORT: 0x0000004,
288  MULTILINE: 0x0001000,
289  PASSWORD: 0x0002000,
290  NOTOGGLETOOFF: 0x0004000,
291  RADIO: 0x0008000,
292  PUSHBUTTON: 0x0010000,
293  COMBO: 0x0020000,
294  EDIT: 0x0040000,
295  SORT: 0x0080000,
296  FILESELECT: 0x0100000,
297  MULTISELECT: 0x0200000,
298  DONOTSPELLCHECK: 0x0400000,
299  DONOTSCROLL: 0x0800000,
300  COMB: 0x1000000,
301  RICHTEXT: 0x2000000,
302  RADIOSINUNISON: 0x2000000,
303  COMMITONSELCHANGE: 0x4000000
304};
305var AnnotationBorderStyleType = {
306  SOLID: 1,
307  DASHED: 2,
308  BEVELED: 3,
309  INSET: 4,
310  UNDERLINE: 5
311};
312var StreamType = {
313  UNKNOWN: 0,
314  FLATE: 1,
315  LZW: 2,
316  DCT: 3,
317  JPX: 4,
318  JBIG: 5,
319  A85: 6,
320  AHX: 7,
321  CCF: 8,
322  RL: 9
323};
324var FontType = {
325  UNKNOWN: 0,
326  TYPE1: 1,
327  TYPE1C: 2,
328  CIDFONTTYPE0: 3,
329  CIDFONTTYPE0C: 4,
330  TRUETYPE: 5,
331  CIDFONTTYPE2: 6,
332  TYPE3: 7,
333  OPENTYPE: 8,
334  TYPE0: 9,
335  MMTYPE1: 10
336};
337var VerbosityLevel = {
338  ERRORS: 0,
339  WARNINGS: 1,
340  INFOS: 5
341};
342var CMapCompressionType = {
343  NONE: 0,
344  BINARY: 1,
345  STREAM: 2
346};
347var OPS = {
348  dependency: 1,
349  setLineWidth: 2,
350  setLineCap: 3,
351  setLineJoin: 4,
352  setMiterLimit: 5,
353  setDash: 6,
354  setRenderingIntent: 7,
355  setFlatness: 8,
356  setGState: 9,
357  save: 10,
358  restore: 11,
359  transform: 12,
360  moveTo: 13,
361  lineTo: 14,
362  curveTo: 15,
363  curveTo2: 16,
364  curveTo3: 17,
365  closePath: 18,
366  rectangle: 19,
367  stroke: 20,
368  closeStroke: 21,
369  fill: 22,
370  eoFill: 23,
371  fillStroke: 24,
372  eoFillStroke: 25,
373  closeFillStroke: 26,
374  closeEOFillStroke: 27,
375  endPath: 28,
376  clip: 29,
377  eoClip: 30,
378  beginText: 31,
379  endText: 32,
380  setCharSpacing: 33,
381  setWordSpacing: 34,
382  setHScale: 35,
383  setLeading: 36,
384  setFont: 37,
385  setTextRenderingMode: 38,
386  setTextRise: 39,
387  moveText: 40,
388  setLeadingMoveText: 41,
389  setTextMatrix: 42,
390  nextLine: 43,
391  showText: 44,
392  showSpacedText: 45,
393  nextLineShowText: 46,
394  nextLineSetSpacingShowText: 47,
395  setCharWidth: 48,
396  setCharWidthAndBounds: 49,
397  setStrokeColorSpace: 50,
398  setFillColorSpace: 51,
399  setStrokeColor: 52,
400  setStrokeColorN: 53,
401  setFillColor: 54,
402  setFillColorN: 55,
403  setStrokeGray: 56,
404  setFillGray: 57,
405  setStrokeRGBColor: 58,
406  setFillRGBColor: 59,
407  setStrokeCMYKColor: 60,
408  setFillCMYKColor: 61,
409  shadingFill: 62,
410  beginInlineImage: 63,
411  beginImageData: 64,
412  endInlineImage: 65,
413  paintXObject: 66,
414  markPoint: 67,
415  markPointProps: 68,
416  beginMarkedContent: 69,
417  beginMarkedContentProps: 70,
418  endMarkedContent: 71,
419  beginCompat: 72,
420  endCompat: 73,
421  paintFormXObjectBegin: 74,
422  paintFormXObjectEnd: 75,
423  beginGroup: 76,
424  endGroup: 77,
425  beginAnnotations: 78,
426  endAnnotations: 79,
427  beginAnnotation: 80,
428  endAnnotation: 81,
429  paintJpegXObject: 82,
430  paintImageMaskXObject: 83,
431  paintImageMaskXObjectGroup: 84,
432  paintImageXObject: 85,
433  paintInlineImageXObject: 86,
434  paintInlineImageXObjectGroup: 87,
435  paintImageXObjectRepeat: 88,
436  paintImageMaskXObjectRepeat: 89,
437  paintSolidColorImageMask: 90,
438  constructPath: 91
439};
440var UNSUPPORTED_FEATURES = {
441  unknown: 'unknown',
442  forms: 'forms',
443  javaScript: 'javaScript',
444  smask: 'smask',
445  shadingPattern: 'shadingPattern',
446  font: 'font'
447};
448var PasswordResponses = {
449  NEED_PASSWORD: 1,
450  INCORRECT_PASSWORD: 2
451};
452var verbosity = VerbosityLevel.WARNINGS;
453function setVerbosityLevel(level) {
454  if (Number.isInteger(level)) {
455    verbosity = level;
456  }
457}
458function getVerbosityLevel() {
459  return verbosity;
460}
461function info(msg) {
462  if (verbosity >= VerbosityLevel.INFOS) {
463    console.log('Info: ' + msg);
464  }
465}
466function warn(msg) {
467  if (verbosity >= VerbosityLevel.WARNINGS) {
468    console.log('Warning: ' + msg);
469  }
470}
471function deprecated(details) {
472  console.log('Deprecated API usage: ' + details);
473}
474function unreachable(msg) {
475  throw new Error(msg);
476}
477function assert(cond, msg) {
478  if (!cond) {
479    unreachable(msg);
480  }
481}
482function isSameOrigin(baseUrl, otherUrl) {
483  try {
484    var base = new _url_polyfill.URL(baseUrl);
485    if (!base.origin || base.origin === 'null') {
486      return false;
487    }
488  } catch (e) {
489    return false;
490  }
491  var other = new _url_polyfill.URL(otherUrl, base);
492  return base.origin === other.origin;
493}
494function _isValidProtocol(url) {
495  if (!url) {
496    return false;
497  }
498  switch (url.protocol) {
499    case 'http:':
500    case 'https:':
501    case 'ftp:':
502    case 'mailto:':
503    case 'tel:':
504      return true;
505    default:
506      return false;
507  }
508}
509function createValidAbsoluteUrl(url, baseUrl) {
510  if (!url) {
511    return null;
512  }
513  try {
514    var absoluteUrl = baseUrl ? new _url_polyfill.URL(url, baseUrl) : new _url_polyfill.URL(url);
515    if (_isValidProtocol(absoluteUrl)) {
516      return absoluteUrl;
517    }
518  } catch (ex) {}
519  return null;
520}
521function shadow(obj, prop, value) {
522  Object.defineProperty(obj, prop, {
523    value: value,
524    enumerable: true,
525    configurable: true,
526    writable: false
527  });
528  return value;
529}
530function getLookupTableFactory(initializer) {
531  var lookup;
532  return function () {
533    if (initializer) {
534      lookup = Object.create(null);
535      initializer(lookup);
536      initializer = null;
537    }
538    return lookup;
539  };
540}
541var PasswordException = function PasswordExceptionClosure() {
542  function PasswordException(msg, code) {
543    this.name = 'PasswordException';
544    this.message = msg;
545    this.code = code;
546  }
547  PasswordException.prototype = new Error();
548  PasswordException.constructor = PasswordException;
549  return PasswordException;
550}();
551var UnknownErrorException = function UnknownErrorExceptionClosure() {
552  function UnknownErrorException(msg, details) {
553    this.name = 'UnknownErrorException';
554    this.message = msg;
555    this.details = details;
556  }
557  UnknownErrorException.prototype = new Error();
558  UnknownErrorException.constructor = UnknownErrorException;
559  return UnknownErrorException;
560}();
561var InvalidPDFException = function InvalidPDFExceptionClosure() {
562  function InvalidPDFException(msg) {
563    this.name = 'InvalidPDFException';
564    this.message = msg;
565  }
566  InvalidPDFException.prototype = new Error();
567  InvalidPDFException.constructor = InvalidPDFException;
568  return InvalidPDFException;
569}();
570var MissingPDFException = function MissingPDFExceptionClosure() {
571  function MissingPDFException(msg) {
572    this.name = 'MissingPDFException';
573    this.message = msg;
574  }
575  MissingPDFException.prototype = new Error();
576  MissingPDFException.constructor = MissingPDFException;
577  return MissingPDFException;
578}();
579var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() {
580  function UnexpectedResponseException(msg, status) {
581    this.name = 'UnexpectedResponseException';
582    this.message = msg;
583    this.status = status;
584  }
585  UnexpectedResponseException.prototype = new Error();
586  UnexpectedResponseException.constructor = UnexpectedResponseException;
587  return UnexpectedResponseException;
588}();
589var MissingDataException = function MissingDataExceptionClosure() {
590  function MissingDataException(begin, end) {
591    this.begin = begin;
592    this.end = end;
593    this.message = 'Missing data [' + begin + ', ' + end + ')';
594  }
595  MissingDataException.prototype = new Error();
596  MissingDataException.prototype.name = 'MissingDataException';
597  MissingDataException.constructor = MissingDataException;
598  return MissingDataException;
599}();
600var XRefParseException = function XRefParseExceptionClosure() {
601  function XRefParseException(msg) {
602    this.message = msg;
603  }
604  XRefParseException.prototype = new Error();
605  XRefParseException.prototype.name = 'XRefParseException';
606  XRefParseException.constructor = XRefParseException;
607  return XRefParseException;
608}();
609var FormatError = function FormatErrorClosure() {
610  function FormatError(msg) {
611    this.message = msg;
612  }
613  FormatError.prototype = new Error();
614  FormatError.prototype.name = 'FormatError';
615  FormatError.constructor = FormatError;
616  return FormatError;
617}();
618var AbortException = function AbortExceptionClosure() {
619  function AbortException(msg) {
620    this.name = 'AbortException';
621    this.message = msg;
622  }
623  AbortException.prototype = new Error();
624  AbortException.constructor = AbortException;
625  return AbortException;
626}();
627var NullCharactersRegExp = /\x00/g;
628function removeNullCharacters(str) {
629  if (typeof str !== 'string') {
630    warn('The argument for removeNullCharacters must be a string.');
631    return str;
632  }
633  return str.replace(NullCharactersRegExp, '');
634}
635function bytesToString(bytes) {
636  assert(bytes !== null && (typeof bytes === 'undefined' ? 'undefined' : _typeof(bytes)) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString');
637  var length = bytes.length;
638  var MAX_ARGUMENT_COUNT = 8192;
639  if (length < MAX_ARGUMENT_COUNT) {
640    return String.fromCharCode.apply(null, bytes);
641  }
642  var strBuf = [];
643  for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
644    var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
645    var chunk = bytes.subarray(i, chunkEnd);
646    strBuf.push(String.fromCharCode.apply(null, chunk));
647  }
648  return strBuf.join('');
649}
650function stringToBytes(str) {
651  assert(typeof str === 'string', 'Invalid argument for stringToBytes');
652  var length = str.length;
653  var bytes = new Uint8Array(length);
654  for (var i = 0; i < length; ++i) {
655    bytes[i] = str.charCodeAt(i) & 0xFF;
656  }
657  return bytes;
658}
659function arrayByteLength(arr) {
660  if (arr.length !== undefined) {
661    return arr.length;
662  }
663  assert(arr.byteLength !== undefined);
664  return arr.byteLength;
665}
666function arraysToBytes(arr) {
667  if (arr.length === 1 && arr[0] instanceof Uint8Array) {
668    return arr[0];
669  }
670  var resultLength = 0;
671  var i,
672      ii = arr.length;
673  var item, itemLength;
674  for (i = 0; i < ii; i++) {
675    item = arr[i];
676    itemLength = arrayByteLength(item);
677    resultLength += itemLength;
678  }
679  var pos = 0;
680  var data = new Uint8Array(resultLength);
681  for (i = 0; i < ii; i++) {
682    item = arr[i];
683    if (!(item instanceof Uint8Array)) {
684      if (typeof item === 'string') {
685        item = stringToBytes(item);
686      } else {
687        item = new Uint8Array(item);
688      }
689    }
690    itemLength = item.byteLength;
691    data.set(item, pos);
692    pos += itemLength;
693  }
694  return data;
695}
696function string32(value) {
697  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
698}
699function log2(x) {
700  if (x <= 0) {
701    return 0;
702  }
703  return Math.ceil(Math.log2(x));
704}
705function readInt8(data, start) {
706  return data[start] << 24 >> 24;
707}
708function readUint16(data, offset) {
709  return data[offset] << 8 | data[offset + 1];
710}
711function readUint32(data, offset) {
712  return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;
713}
714function isLittleEndian() {
715  var buffer8 = new Uint8Array(4);
716  buffer8[0] = 1;
717  var view32 = new Uint32Array(buffer8.buffer, 0, 1);
718  return view32[0] === 1;
719}
720function isEvalSupported() {
721  try {
722    new Function('');
723    return true;
724  } catch (e) {
725    return false;
vendor: 3,744 bytes, lines 726-823
726  }
727}
728function getInheritableProperty(_ref) {
729  var dict = _ref.dict,
730      key = _ref.key,
731      _ref$getArray = _ref.getArray,
732      getArray = _ref$getArray === undefined ? false : _ref$getArray,
733      _ref$stopWhenFound = _ref.stopWhenFound,
734      stopWhenFound = _ref$stopWhenFound === undefined ? true : _ref$stopWhenFound;
735
736  var LOOP_LIMIT = 100;
737  var loopCount = 0;
738  var values = void 0;
739  while (dict) {
740    var value = getArray ? dict.getArray(key) : dict.get(key);
741    if (value !== undefined) {
742      if (stopWhenFound) {
743        return value;
744      }
745      if (!values) {
746        values = [];
747      }
748      values.push(value);
749    }
750    if (++loopCount > LOOP_LIMIT) {
751      warn('getInheritableProperty: maximum loop count exceeded for "' + key + '"');
752      break;
753    }
754    dict = dict.get('Parent');
755  }
756  return values;
757}
758var Util = function UtilClosure() {
759  function Util() {}
760  var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
761  Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
762    rgbBuf[1] = r;
763    rgbBuf[3] = g;
764    rgbBuf[5] = b;
765    return rgbBuf.join('');
766  };
767  Util.transform = function Util_transform(m1, m2) {
768    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]];
769  };
770  Util.applyTransform = function Util_applyTransform(p, m) {
771    var xt = p[0] * m[0] + p[1] * m[2] + m[4];
772    var yt = p[0] * m[1] + p[1] * m[3] + m[5];
773    return [xt, yt];
774  };
775  Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
776    var d = m[0] * m[3] - m[1] * m[2];
777    var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
778    var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
779    return [xt, yt];
780  };
781  Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) {
782    var p1 = Util.applyTransform(r, m);
783    var p2 = Util.applyTransform(r.slice(2, 4), m);
784    var p3 = Util.applyTransform([r[0], r[3]], m);
785    var p4 = Util.applyTransform([r[2], r[1]], m);
786    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])];
787  };
788  Util.inverseTransform = function Util_inverseTransform(m) {
789    var d = m[0] * m[3] - m[1] * m[2];
790    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];
791  };
792  Util.apply3dTransform = function Util_apply3dTransform(m, v) {
793    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]];
794  };
795  Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) {
796    var transpose = [m[0], m[2], m[1], m[3]];
797    var a = m[0] * transpose[0] + m[1] * transpose[2];
798    var b = m[0] * transpose[1] + m[1] * transpose[3];
799    var c = m[2] * transpose[0] + m[3] * transpose[2];
800    var d = m[2] * transpose[1] + m[3] * transpose[3];
801    var first = (a + d) / 2;
802    var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
803    var sx = first + second || 1;
804    var sy = first - second || 1;
805    return [Math.sqrt(sx), Math.sqrt(sy)];
806  };
807  Util.normalizeRect = function Util_normalizeRect(rect) {
808    var r = rect.slice(0);
809    if (rect[0] > rect[2]) {
810      r[0] = rect[2];
811      r[2] = rect[0];
812    }
813    if (rect[1] > rect[3]) {
814      r[1] = rect[3];
815      r[3] = rect[1];
816    }
817    return r;
818  };
819  Util.intersect = function Util_intersect(rect1, rect2) {
820    function compare(a, b) {
821      return a - b;
822    }
823    var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
824        orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
825        result = [];
826    rect1 = Util.normalizeRect(rect1);
827    rect2 = Util.normalizeRect(rect2);
828    if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
829      result[0] = orderedX[1];
830      result[2] = orderedX[2];
831    } else {
832      return false;
833    }
834    if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
835      result[1] = orderedY[1];
836      result[3] = orderedY[2];
837    } else {
838      return false;
839    }
840    return result;
841  };
842  return Util;
843}();
844var ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'];
845function toRomanNumerals(number) {
846  var lowerCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
847
848  assert(Number.isInteger(number) && number > 0, 'The number should be a positive integer.');
849  var pos = void 0,
850      romanBuf = [];
851  while (number >= 1000) {
852    number -= 1000;
853    romanBuf.push('M');
854  }
855  pos = number / 100 | 0;
856  number %= 100;
857  romanBuf.push(ROMAN_NUMBER_MAP[pos]);
858  pos = number / 10 | 0;
859  number %= 10;
860  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);
861  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);
862  var romanStr = romanBuf.join('');
863  return lowerCase ? romanStr.toLowerCase() : romanStr;
864}
865var 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];
866function stringToPDFString(str) {
867  var i,
868      n = str.length,
869      strBuf = [];
870  if (str[0] === '\xFE' && str[1] === '\xFF') {
871    for (i = 2; i < n; i += 2) {
872      strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
873    }
874  } else {
875    for (i = 0; i < n; ++i) {
876      var code = PDFStringTranslateTable[str.charCodeAt(i)];
877      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
878    }
879  }
880  return strBuf.join('');
881}
882function stringToUTF8String(str) {
883  return decodeURIComponent(escape(str));
884}
885function utf8StringToString(str) {
886  return unescape(encodeURIComponent(str));
887}
888function isEmptyObj(obj) {
889  for (var key in obj) {
890    return false;
891  }
892  return true;
893}
894function isBool(v) {
895  return typeof v === 'boolean';
896}
897function isNum(v) {
898  return typeof v === 'number';
899}
900function isString(v) {
901  return typeof v === 'string';
902}
903function isArrayBuffer(v) {
904  return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.byteLength !== undefined;
905}
906function isSpace(ch) {
907  return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A;
908}
909function createPromiseCapability() {
910  var capability = {};
911  capability.promise = new Promise(function (resolve, reject) {
912    capability.resolve = resolve;
913    capability.reject = reject;
914  });
915  return capability;
916}
917var createObjectURL = function createObjectURLClosure() {
918  var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
919  return function createObjectURL(data, contentType) {
920    var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
921
922    if (!forceDataSchema && _url_polyfill.URL.createObjectURL) {
923      var blob = new Blob([data], { type: contentType });
924      return _url_polyfill.URL.createObjectURL(blob);
925    }
926    var buffer = 'data:' + contentType + ';base64,';
927    for (var i = 0, ii = data.length; i < ii; i += 3) {
928      var b1 = data[i] & 0xFF;
929      var b2 = data[i + 1] & 0xFF;
930      var b3 = data[i + 2] & 0xFF;
931      var d1 = b1 >> 2,
932          d2 = (b1 & 3) << 4 | b2 >> 4;
933      var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64;
934      var d4 = i + 2 < ii ? b3 & 0x3F : 64;
935      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
936    }
937    return buffer;
938  };
939}();
940exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
941exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
942exports.OPS = OPS;
943exports.VerbosityLevel = VerbosityLevel;
944exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
945exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
946exports.AnnotationFieldFlag = AnnotationFieldFlag;
947exports.AnnotationFlag = AnnotationFlag;
948exports.AnnotationType = AnnotationType;
949exports.FontType = FontType;
950exports.ImageKind = ImageKind;
951exports.CMapCompressionType = CMapCompressionType;
952exports.AbortException = AbortException;
953exports.InvalidPDFException = InvalidPDFException;
954exports.MissingDataException = MissingDataException;
955exports.MissingPDFException = MissingPDFException;
956exports.NativeImageDecoding = NativeImageDecoding;
957exports.PasswordException = PasswordException;
958exports.PasswordResponses = PasswordResponses;
959exports.PermissionFlag = PermissionFlag;
960exports.StreamType = StreamType;
961exports.TextRenderingMode = TextRenderingMode;
962exports.UnexpectedResponseException = UnexpectedResponseException;
963exports.UnknownErrorException = UnknownErrorException;
964exports.Util = Util;
965exports.toRomanNumerals = toRomanNumerals;
966exports.XRefParseException = XRefParseException;
967exports.FormatError = FormatError;
968exports.arrayByteLength = arrayByteLength;
969exports.arraysToBytes = arraysToBytes;
970exports.assert = assert;
971exports.bytesToString = bytesToString;
972exports.createPromiseCapability = createPromiseCapability;
973exports.createObjectURL = createObjectURL;
974exports.deprecated = deprecated;
975exports.getInheritableProperty = getInheritableProperty;
976exports.getLookupTableFactory = getLookupTableFactory;
977exports.getVerbosityLevel = getVerbosityLevel;
978exports.info = info;
979exports.isArrayBuffer = isArrayBuffer;
980exports.isBool = isBool;
981exports.isEmptyObj = isEmptyObj;
982exports.isNum = isNum;
983exports.isString = isString;
984exports.isSpace = isSpace;
985exports.isSameOrigin = isSameOrigin;
986exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
987exports.isLittleEndian = isLittleEndian;
988exports.isEvalSupported = isEvalSupported;
989exports.log2 = log2;
990exports.readInt8 = readInt8;
991exports.readUint16 = readUint16;
992exports.readUint32 = readUint32;
993exports.removeNullCharacters = removeNullCharacters;
994exports.ReadableStream = _streams_polyfill.ReadableStream;
995exports.URL = _url_polyfill.URL;
996exports.setVerbosityLevel = setVerbosityLevel;
997exports.shadow = shadow;
998exports.string32 = string32;
999exports.stringToBytes = stringToBytes;
1000exports.stringToPDFString = stringToPDFString;
1001exports.stringToUTF8String = stringToUTF8String;
1002exports.utf8StringToString = utf8StringToString;
1003exports.warn = warn;
1004exports.unreachable = unreachable;
1005
1006/***/ }),
1007/* 2 */
1008/***/ (function(module, exports, __w_pdfjs_require__) {
1009
1010"use strict";
1011
1012
1013var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1014
1015var globalScope = __w_pdfjs_require__(3);
1016if (!globalScope._pdfjsCompatibilityChecked) {
1017  globalScope._pdfjsCompatibilityChecked = true;
1018  var isNodeJS = __w_pdfjs_require__(4);
1019  var hasDOM = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object';
1020  (function checkNodeBtoa() {
1021    if (globalScope.btoa || !isNodeJS()) {
1022      return;
1023    }
1024    globalScope.btoa = function (chars) {
1025      return Buffer.from(chars, 'binary').toString('base64');
1026    };
1027  })();
1028  (function checkNodeAtob() {
1029    if (globalScope.atob || !isNodeJS()) {
1030      return;
1031    }
1032    globalScope.atob = function (input) {
1033      return Buffer.from(input, 'base64').toString('binary');
1034    };
1035  })();
1036  (function checkCurrentScript() {
1037    if (!hasDOM) {
1038      return;
1039    }
1040    if ('currentScript' in document) {
1041      return;
1042    }
1043    Object.defineProperty(document, 'currentScript', {
1044      get: function get() {
1045        var scripts = document.getElementsByTagName('script');
1046        return scripts[scripts.length - 1];
1047      },
1048
1049      enumerable: true,
1050      configurable: true
1051    });
1052  })();
1053  (function checkChildNodeRemove() {
1054    if (!hasDOM) {
1055      return;
1056    }
1057    if (typeof Element.prototype.remove !== 'undefined') {
1058      return;
1059    }
1060    Element.prototype.remove = function () {
1061      if (this.parentNode) {
1062        this.parentNode.removeChild(this);
1063      }
1064    };
1065  })();
1066  (function checkDOMTokenListToggle() {
1067    if (!hasDOM || isNodeJS()) {
1068      return;
1069    }
1070    var div = document.createElement('div');
1071    if (div.classList.toggle('test', 0) === false) {
1072      return;
1073    }
1074    var originalDOMTokenListToggle = DOMTokenList.prototype.toggle;
1075    DOMTokenList.prototype.toggle = function (token) {
1076      if (arguments.length > 1) {
1077        var force = !!arguments[1];
1078        return this[force ? 'add' : 'remove'](token), force;
1079      }
1080      return originalDOMTokenListToggle(token);
1081    };
1082  })();
1083  (function checkStringIncludes() {
1084    if (String.prototype.includes) {
1085      return;
1086    }
1087    __w_pdfjs_require__(5);
1088  })();
1089  (function checkArrayIncludes() {
1090    if (Array.prototype.includes) {
1091      return;
1092    }
1093    __w_pdfjs_require__(33);
1094  })();
1095  (function checkObjectAssign() {
1096    if (Object.assign) {
1097      return;
1098    }
1099    __w_pdfjs_require__(42);
1100  })();
1101  (function checkMathLog2() {
1102    if (Math.log2) {
1103      return;
1104    }
1105    Math.log2 = __w_pdfjs_require__(52);
1106  })();
1107  (function checkNumberIsNaN() {
1108    if (Number.isNaN) {
1109      return;
1110    }
1111    Number.isNaN = __w_pdfjs_require__(54);
1112  })();
1113  (function checkNumberIsInteger() {
1114    if (Number.isInteger) {
1115      return;
1116    }
1117    Number.isInteger = __w_pdfjs_require__(56);
1118  })();
1119  (function checkPromise() {
1120    if (globalScope.Promise) {
1121      return;
1122    }
1123    globalScope.Promise = __w_pdfjs_require__(59);
1124  })();
1125  (function checkWeakMap() {
1126    if (globalScope.WeakMap) {
1127      return;
1128    }
1129    globalScope.WeakMap = __w_pdfjs_require__(94);
1130  })();
1131  (function checkStringCodePointAt() {
1132    if (String.codePointAt) {
1133      return;
1134    }
1135    String.codePointAt = __w_pdfjs_require__(111);
1136  })();
1137  (function checkStringFromCodePoint() {
1138    if (String.fromCodePoint) {
1139      return;
1140    }
1141    String.fromCodePoint = __w_pdfjs_require__(113);
1142  })();
1143  (function checkSymbol() {
1144    if (globalScope.Symbol) {
1145      return;
1146    }
1147    __w_pdfjs_require__(115);
1148  })();
1149  (function checkObjectValues() {
1150    if (Object.values) {
1151      return;
1152    }
1153    Object.values = __w_pdfjs_require__(122);
1154  })();
1155}
1156
1157/***/ }),
1158/* 3 */
1159/***/ (function(module, exports, __w_pdfjs_require__) {
1160
1161"use strict";
1162
1163
1164module.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {};
1165
1166/***/ }),
1167/* 4 */
1168/***/ (function(module, exports, __w_pdfjs_require__) {
1169
1170"use strict";
1171
1172
1173var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1174
1175module.exports = function isNodeJS() {
1176  return (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process + '' === '[object process]';
1177};
1178
1179/***/ }),
1180/* 5 */
1181/***/ (function(module, exports, __w_pdfjs_require__) {
1182
1183"use strict";
1184
1185
1186__w_pdfjs_require__(6);
1187module.exports = __w_pdfjs_require__(9).String.includes;
1188
1189/***/ }),
1190/* 6 */
1191/***/ (function(module, exports, __w_pdfjs_require__) {
1192
1193"use strict";
1194
1195
1196var $export = __w_pdfjs_require__(7);
1197var context = __w_pdfjs_require__(25);
1198var INCLUDES = 'includes';
1199$export($export.P + $export.F * __w_pdfjs_require__(32)(INCLUDES), 'String', {
1200  includes: function includes(searchString) {
1201    return !!~context(this, searchString, INCLUDES).indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
1202  }
1203});
1204
1205/***/ }),
1206/* 7 */
1207/***/ (function(module, exports, __w_pdfjs_require__) {
1208
1209"use strict";
1210
1211
1212var global = __w_pdfjs_require__(8);
1213var core = __w_pdfjs_require__(9);
1214var hide = __w_pdfjs_require__(10);
1215var redefine = __w_pdfjs_require__(20);
1216var ctx = __w_pdfjs_require__(23);
1217var PROTOTYPE = 'prototype';
1218var $export = function $export(type, name, source) {
1219  var IS_FORCED = type & $export.F;
1220  var IS_GLOBAL = type & $export.G;
1221  var IS_STATIC = type & $export.S;
1222  var IS_PROTO = type & $export.P;
1223  var IS_BIND = type & $export.B;
1224  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
1225  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
1226  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
1227  var key, own, out, exp;
1228  if (IS_GLOBAL) source = name;
1229  for (key in source) {
1230    own = !IS_FORCED && target && target[key] !== undefined;
1231    out = (own ? target : source)[key];
1232    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
1233    if (target) redefine(target, key, out, type & $export.U);
1234    if (exports[key] != out) hide(exports, key, exp);
1235    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
1236  }
1237};
1238global.core = core;
1239$export.F = 1;
1240$export.G = 2;
1241$export.S = 4;
1242$export.P = 8;
1243$export.B = 16;
1244$export.W = 32;
1245$export.U = 64;
1246$export.R = 128;
1247module.exports = $export;
1248
1249/***/ }),
1250/* 8 */
1251/***/ (function(module, exports, __w_pdfjs_require__) {
1252
1253"use strict";
1254
1255
1256var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
1257if (typeof __g == 'number') __g = global;
1258
1259/***/ }),
1260/* 9 */
1261/***/ (function(module, exports, __w_pdfjs_require__) {
1262
1263"use strict";
1264
1265
1266var core = module.exports = { version: '2.5.7' };
1267if (typeof __e == 'number') __e = core;
1268
1269/***/ }),
1270/* 10 */
1271/***/ (function(module, exports, __w_pdfjs_require__) {
1272
1273"use strict";
1274
1275
1276var dP = __w_pdfjs_require__(11);
1277var createDesc = __w_pdfjs_require__(19);
1278module.exports = __w_pdfjs_require__(15) ? function (object, key, value) {
1279  return dP.f(object, key, createDesc(1, value));
1280} : function (object, key, value) {
1281  object[key] = value;
1282  return object;
1283};
1284
1285/***/ }),
1286/* 11 */
1287/***/ (function(module, exports, __w_pdfjs_require__) {
1288
1289"use strict";
1290
1291
1292var anObject = __w_pdfjs_require__(12);
1293var IE8_DOM_DEFINE = __w_pdfjs_require__(14);
1294var toPrimitive = __w_pdfjs_require__(18);
1295var dP = Object.defineProperty;
1296exports.f = __w_pdfjs_require__(15) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
1297  anObject(O);
1298  P = toPrimitive(P, true);
1299  anObject(Attributes);
1300  if (IE8_DOM_DEFINE) try {
1301    return dP(O, P, Attributes);
1302  } catch (e) {}
1303  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
1304  if ('value' in Attributes) O[P] = Attributes.value;
1305  return O;
1306};
1307
1308/***/ }),
1309/* 12 */
1310/***/ (function(module, exports, __w_pdfjs_require__) {
1311
1312"use strict";
1313
1314
1315var isObject = __w_pdfjs_require__(13);
1316module.exports = function (it) {
1317  if (!isObject(it)) throw TypeError(it + ' is not an object!');
1318  return it;
1319};
1320
1321/***/ }),
1322/* 13 */
1323/***/ (function(module, exports, __w_pdfjs_require__) {
1324
1325"use strict";
1326
1327
1328var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1329
1330module.exports = function (it) {
1331  return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) === 'object' ? it !== null : typeof it === 'function';
1332};
1333
1334/***/ }),
1335/* 14 */
1336/***/ (function(module, exports, __w_pdfjs_require__) {
1337
1338"use strict";
1339
1340
1341module.exports = !__w_pdfjs_require__(15) && !__w_pdfjs_require__(16)(function () {
1342  return Object.defineProperty(__w_pdfjs_require__(17)('div'), 'a', {
1343    get: function get() {
1344      return 7;
1345    }
1346  }).a != 7;
1347});
1348
1349/***/ }),
1350/* 15 */
1351/***/ (function(module, exports, __w_pdfjs_require__) {
1352
1353"use strict";
1354
1355
1356module.exports = !__w_pdfjs_require__(16)(function () {
1357  return Object.defineProperty({}, 'a', {
1358    get: function get() {
1359      return 7;
1360    }
1361  }).a != 7;
1362});
1363
1364/***/ }),
1365/* 16 */
1366/***/ (function(module, exports, __w_pdfjs_require__) {
1367
1368"use strict";
1369
1370
1371module.exports = function (exec) {
1372  try {
1373    return !!exec();
1374  } catch (e) {
1375    return true;
1376  }
1377};
1378
1379/***/ }),
1380/* 17 */
1381/***/ (function(module, exports, __w_pdfjs_require__) {
1382
1383"use strict";
1384
1385
1386var isObject = __w_pdfjs_require__(13);
1387var document = __w_pdfjs_require__(8).document;
1388var is = isObject(document) && isObject(document.createElement);
1389module.exports = function (it) {
1390  return is ? document.createElement(it) : {};
1391};
1392
1393/***/ }),
1394/* 18 */
1395/***/ (function(module, exports, __w_pdfjs_require__) {
1396
1397"use strict";
1398
1399
1400var isObject = __w_pdfjs_require__(13);
1401module.exports = function (it, S) {
1402  if (!isObject(it)) return it;
1403  var fn, val;
1404  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1405  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
1406  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1407  throw TypeError("Can't convert object to primitive value");
1408};
1409
1410/***/ }),
1411/* 19 */
1412/***/ (function(module, exports, __w_pdfjs_require__) {
1413
1414"use strict";
1415
1416
1417module.exports = function (bitmap, value) {
1418  return {
1419    enumerable: !(bitmap & 1),
1420    configurable: !(bitmap & 2),
1421    writable: !(bitmap & 4),
1422    value: value
1423  };
1424};
1425
1426/***/ }),
1427/* 20 */
1428/***/ (function(module, exports, __w_pdfjs_require__) {
1429
1430"use strict";
1431
1432
1433var global = __w_pdfjs_require__(8);
1434var hide = __w_pdfjs_require__(10);
1435var has = __w_pdfjs_require__(21);
1436var SRC = __w_pdfjs_require__(22)('src');
1437var TO_STRING = 'toString';
1438var $toString = Function[TO_STRING];
1439var TPL = ('' + $toString).split(TO_STRING);
1440__w_pdfjs_require__(9).inspectSource = function (it) {
1441  return $toString.call(it);
1442};
1443(module.exports = function (O, key, val, safe) {
1444  var isFunction = typeof val == 'function';
1445  if (isFunction) has(val, 'name') || hide(val, 'name', key);
1446  if (O[key] === val) return;
1447  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
1448  if (O === global) {
1449    O[key] = val;
1450  } else if (!safe) {
1451    delete O[key];
1452    hide(O, key, val);
1453  } else if (O[key]) {
1454    O[key] = val;
1455  } else {
1456    hide(O, key, val);
1457  }
1458})(Function.prototype, TO_STRING, function toString() {
1459  return typeof this == 'function' && this[SRC] || $toString.call(this);
1460});
1461
1462/***/ }),
1463/* 21 */
1464/***/ (function(module, exports, __w_pdfjs_require__) {
1465
1466"use strict";
1467
1468
1469var hasOwnProperty = {}.hasOwnProperty;
1470module.exports = function (it, key) {
1471  return hasOwnProperty.call(it, key);
1472};
1473
1474/***/ }),
1475/* 22 */
1476/***/ (function(module, exports, __w_pdfjs_require__) {
1477
1478"use strict";
1479
1480
1481var id = 0;
1482var px = Math.random();
1483module.exports = function (key) {
1484  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
1485};
1486
1487/***/ }),
1488/* 23 */
1489/***/ (function(module, exports, __w_pdfjs_require__) {
1490
1491"use strict";
1492
1493
1494var aFunction = __w_pdfjs_require__(24);
1495module.exports = function (fn, that, length) {
1496  aFunction(fn);
1497  if (that === undefined) return fn;
1498  switch (length) {
1499    case 1:
1500      return function (a) {
1501        return fn.call(that, a);
1502      };
1503    case 2:
1504      return function (a, b) {
1505        return fn.call(that, a, b);
1506      };
1507    case 3:
1508      return function (a, b, c) {
1509        return fn.call(that, a, b, c);
1510      };
1511  }
1512  return function () {
1513    return fn.apply(that, arguments);
1514  };
1515};
1516
1517/***/ }),
1518/* 24 */
1519/***/ (function(module, exports, __w_pdfjs_require__) {
1520
1521"use strict";
1522
1523
1524module.exports = function (it) {
1525  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
1526  return it;
1527};
1528
1529/***/ }),
1530/* 25 */
1531/***/ (function(module, exports, __w_pdfjs_require__) {
1532
1533"use strict";
1534
1535
1536var isRegExp = __w_pdfjs_require__(26);
1537var defined = __w_pdfjs_require__(31);
1538module.exports = function (that, searchString, NAME) {
1539  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
1540  return String(defined(that));
1541};
1542
1543/***/ }),
1544/* 26 */
1545/***/ (function(module, exports, __w_pdfjs_require__) {
1546
1547"use strict";
1548
1549
1550var isObject = __w_pdfjs_require__(13);
1551var cof = __w_pdfjs_require__(27);
1552var MATCH = __w_pdfjs_require__(28)('match');
1553module.exports = function (it) {
1554  var isRegExp;
1555  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
1556};
1557
1558/***/ }),
1559/* 27 */
1560/***/ (function(module, exports, __w_pdfjs_require__) {
1561
1562"use strict";
1563
1564
1565var toString = {}.toString;
1566module.exports = function (it) {
1567  return toString.call(it).slice(8, -1);
1568};
1569
1570/***/ }),
1571/* 28 */
1572/***/ (function(module, exports, __w_pdfjs_require__) {
1573
1574"use strict";
1575
1576
1577var store = __w_pdfjs_require__(29)('wks');
1578var uid = __w_pdfjs_require__(22);
1579var _Symbol = __w_pdfjs_require__(8).Symbol;
1580var USE_SYMBOL = typeof _Symbol == 'function';
1581var $exports = module.exports = function (name) {
1582  return store[name] || (store[name] = USE_SYMBOL && _Symbol[name] || (USE_SYMBOL ? _Symbol : uid)('Symbol.' + name));
1583};
1584$exports.store = store;
1585
1586/***/ }),
1587/* 29 */
1588/***/ (function(module, exports, __w_pdfjs_require__) {
1589
1590"use strict";
1591
1592
1593var core = __w_pdfjs_require__(9);
1594var global = __w_pdfjs_require__(8);
1595var SHARED = '__core-js_shared__';
1596var store = global[SHARED] || (global[SHARED] = {});
1597(module.exports = function (key, value) {
1598  return store[key] || (store[key] = value !== undefined ? value : {});
1599})('versions', []).push({
1600  version: core.version,
1601  mode: __w_pdfjs_require__(30) ? 'pure' : 'global',
1602  copyright: '© 2018 Denis Pushkarev (zloirock.ru)'
1603});
1604
1605/***/ }),
1606/* 30 */
1607/***/ (function(module, exports, __w_pdfjs_require__) {
1608
1609"use strict";
1610
1611
1612module.exports = false;
1613
1614/***/ }),
1615/* 31 */
1616/***/ (function(module, exports, __w_pdfjs_require__) {
1617
1618"use strict";
1619
1620
1621module.exports = function (it) {
1622  if (it == undefined) throw TypeError("Can't call method on  " + it);
1623  return it;
1624};
1625
1626/***/ }),
1627/* 32 */
1628/***/ (function(module, exports, __w_pdfjs_require__) {
1629
1630"use strict";
1631
1632
1633var MATCH = __w_pdfjs_require__(28)('match');
1634module.exports = function (KEY) {
1635  var re = /./;
1636  try {
1637    '/./'[KEY](re);
1638  } catch (e) {
1639    try {
1640      re[MATCH] = false;
1641      return !'/./'[KEY](re);
1642    } catch (f) {}
1643  }
1644  return true;
1645};
1646
1647/***/ }),
1648/* 33 */
1649/***/ (function(module, exports, __w_pdfjs_require__) {
1650
1651"use strict";
1652
1653
1654__w_pdfjs_require__(34);
1655module.exports = __w_pdfjs_require__(9).Array.includes;
1656
1657/***/ }),
1658/* 34 */
1659/***/ (function(module, exports, __w_pdfjs_require__) {
1660
1661"use strict";
1662
1663
1664var $export = __w_pdfjs_require__(7);
1665var $includes = __w_pdfjs_require__(35)(true);
1666$export($export.P, 'Array', {
1667  includes: function includes(el) {
1668    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
1669  }
1670});
1671__w_pdfjs_require__(41)('includes');
1672
1673/***/ }),
1674/* 35 */
1675/***/ (function(module, exports, __w_pdfjs_require__) {
1676
1677"use strict";
1678
1679
1680var toIObject = __w_pdfjs_require__(36);
1681var toLength = __w_pdfjs_require__(38);
1682var toAbsoluteIndex = __w_pdfjs_require__(40);
1683module.exports = function (IS_INCLUDES) {
1684  return function ($this, el, fromIndex) {
1685    var O = toIObject($this);
1686    var length = toLength(O.length);
1687    var index = toAbsoluteIndex(fromIndex, length);
1688    var value;
vendor: 4,534 bytes, lines 1689-1889
1689    if (IS_INCLUDES && el != el) while (length > index) {
1690      value = O[index++];
1691      if (value != value) return true;
1692    } else for (; length > index; index++) {
1693      if (IS_INCLUDES || index in O) {
1694        if (O[index] === el) return IS_INCLUDES || index || 0;
1695      }
1696    }return !IS_INCLUDES && -1;
1697  };
1698};
1699
1700/***/ }),
1701/* 36 */
1702/***/ (function(module, exports, __w_pdfjs_require__) {
1703
1704"use strict";
1705
1706
1707var IObject = __w_pdfjs_require__(37);
1708var defined = __w_pdfjs_require__(31);
1709module.exports = function (it) {
1710  return IObject(defined(it));
1711};
1712
1713/***/ }),
1714/* 37 */
1715/***/ (function(module, exports, __w_pdfjs_require__) {
1716
1717"use strict";
1718
1719
1720var cof = __w_pdfjs_require__(27);
1721module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
1722  return cof(it) == 'String' ? it.split('') : Object(it);
1723};
1724
1725/***/ }),
1726/* 38 */
1727/***/ (function(module, exports, __w_pdfjs_require__) {
1728
1729"use strict";
1730
1731
1732var toInteger = __w_pdfjs_require__(39);
1733var min = Math.min;
1734module.exports = function (it) {
1735  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0;
1736};
1737
1738/***/ }),
1739/* 39 */
1740/***/ (function(module, exports, __w_pdfjs_require__) {
1741
1742"use strict";
1743
1744
1745var ceil = Math.ceil;
1746var floor = Math.floor;
1747module.exports = function (it) {
1748  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
1749};
1750
1751/***/ }),
1752/* 40 */
1753/***/ (function(module, exports, __w_pdfjs_require__) {
1754
1755"use strict";
1756
1757
1758var toInteger = __w_pdfjs_require__(39);
1759var max = Math.max;
1760var min = Math.min;
1761module.exports = function (index, length) {
1762  index = toInteger(index);
1763  return index < 0 ? max(index + length, 0) : min(index, length);
1764};
1765
1766/***/ }),
1767/* 41 */
1768/***/ (function(module, exports, __w_pdfjs_require__) {
1769
1770"use strict";
1771
1772
1773var UNSCOPABLES = __w_pdfjs_require__(28)('unscopables');
1774var ArrayProto = Array.prototype;
1775if (ArrayProto[UNSCOPABLES] == undefined) __w_pdfjs_require__(10)(ArrayProto, UNSCOPABLES, {});
1776module.exports = function (key) {
1777  ArrayProto[UNSCOPABLES][key] = true;
1778};
1779
1780/***/ }),
1781/* 42 */
1782/***/ (function(module, exports, __w_pdfjs_require__) {
1783
1784"use strict";
1785
1786
1787__w_pdfjs_require__(43);
1788module.exports = __w_pdfjs_require__(9).Object.assign;
1789
1790/***/ }),
1791/* 43 */
1792/***/ (function(module, exports, __w_pdfjs_require__) {
1793
1794"use strict";
1795
1796
1797var $export = __w_pdfjs_require__(7);
1798$export($export.S + $export.F, 'Object', { assign: __w_pdfjs_require__(44) });
1799
1800/***/ }),
1801/* 44 */
1802/***/ (function(module, exports, __w_pdfjs_require__) {
1803
1804"use strict";
1805
1806
1807var getKeys = __w_pdfjs_require__(45);
1808var gOPS = __w_pdfjs_require__(49);
1809var pIE = __w_pdfjs_require__(50);
1810var toObject = __w_pdfjs_require__(51);
1811var IObject = __w_pdfjs_require__(37);
1812var $assign = Object.assign;
1813module.exports = !$assign || __w_pdfjs_require__(16)(function () {
1814  var A = {};
1815  var B = {};
1816  var S = Symbol();
1817  var K = 'abcdefghijklmnopqrst';
1818  A[S] = 7;
1819  K.split('').forEach(function (k) {
1820    B[k] = k;
1821  });
1822  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
1823}) ? function assign(target, source) {
1824  var T = toObject(target);
1825  var aLen = arguments.length;
1826  var index = 1;
1827  var getSymbols = gOPS.f;
1828  var isEnum = pIE.f;
1829  while (aLen > index) {
1830    var S = IObject(arguments[index++]);
1831    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
1832    var length = keys.length;
1833    var j = 0;
1834    var key;
1835    while (length > j) {
1836      if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
1837    }
1838  }
1839  return T;
1840} : $assign;
1841
1842/***/ }),
1843/* 45 */
1844/***/ (function(module, exports, __w_pdfjs_require__) {
1845
1846"use strict";
1847
1848
1849var $keys = __w_pdfjs_require__(46);
1850var enumBugKeys = __w_pdfjs_require__(48);
1851module.exports = Object.keys || function keys(O) {
1852  return $keys(O, enumBugKeys);
1853};
1854
1855/***/ }),
1856/* 46 */
1857/***/ (function(module, exports, __w_pdfjs_require__) {
1858
1859"use strict";
1860
1861
1862var has = __w_pdfjs_require__(21);
1863var toIObject = __w_pdfjs_require__(36);
1864var arrayIndexOf = __w_pdfjs_require__(35)(false);
1865var IE_PROTO = __w_pdfjs_require__(47)('IE_PROTO');
1866module.exports = function (object, names) {
1867  var O = toIObject(object);
1868  var i = 0;
1869  var result = [];
1870  var key;
1871  for (key in O) {
1872    if (key != IE_PROTO) has(O, key) && result.push(key);
1873  }while (names.length > i) {
1874    if (has(O, key = names[i++])) {
1875      ~arrayIndexOf(result, key) || result.push(key);
1876    }
1877  }return result;
1878};
1879
1880/***/ }),
1881/* 47 */
1882/***/ (function(module, exports, __w_pdfjs_require__) {
1883
1884"use strict";
1885
1886
1887var shared = __w_pdfjs_require__(29)('keys');
1888var uid = __w_pdfjs_require__(22);
1889module.exports = function (key) {
1890  return shared[key] || (shared[key] = uid(key));
1891};
1892
1893/***/ }),
1894/* 48 */
1895/***/ (function(module, exports, __w_pdfjs_require__) {
1896
1897"use strict";
1898
1899
1900module.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(',');
1901
1902/***/ }),
1903/* 49 */
1904/***/ (function(module, exports, __w_pdfjs_require__) {
1905
1906"use strict";
1907
1908
1909exports.f = Object.getOwnPropertySymbols;
1910
1911/***/ }),
1912/* 50 */
1913/***/ (function(module, exports, __w_pdfjs_require__) {
1914
1915"use strict";
1916
1917
1918exports.f = {}.propertyIsEnumerable;
1919
1920/***/ }),
1921/* 51 */
1922/***/ (function(module, exports, __w_pdfjs_require__) {
1923
1924"use strict";
1925
1926
1927var defined = __w_pdfjs_require__(31);
1928module.exports = function (it) {
1929  return Object(defined(it));
1930};
1931
1932/***/ }),
1933/* 52 */
1934/***/ (function(module, exports, __w_pdfjs_require__) {
1935
1936"use strict";
1937
1938
1939__w_pdfjs_require__(53);
1940module.exports = __w_pdfjs_require__(9).Math.log2;
1941
1942/***/ }),
1943/* 53 */
1944/***/ (function(module, exports, __w_pdfjs_require__) {
1945
1946"use strict";
1947
1948
1949var $export = __w_pdfjs_require__(7);
1950$export($export.S, 'Math', {
1951  log2: function log2(x) {
1952    return Math.log(x) / Math.LN2;
1953  }
1954});
1955
1956/***/ }),
1957/* 54 */
1958/***/ (function(module, exports, __w_pdfjs_require__) {
1959
1960"use strict";
1961
1962
1963__w_pdfjs_require__(55);
1964module.exports = __w_pdfjs_require__(9).Number.isNaN;
1965
1966/***/ }),
1967/* 55 */
1968/***/ (function(module, exports, __w_pdfjs_require__) {
1969
1970"use strict";
1971
1972
1973var $export = __w_pdfjs_require__(7);
1974$export($export.S, 'Number', {
1975  isNaN: function isNaN(number) {
1976    return number != number;
1977  }
1978});
1979
1980/***/ }),
1981/* 56 */
1982/***/ (function(module, exports, __w_pdfjs_require__) {
1983
1984"use strict";
1985
1986
1987__w_pdfjs_require__(57);
1988module.exports = __w_pdfjs_require__(9).Number.isInteger;
1989
1990/***/ }),
1991/* 57 */
1992/***/ (function(module, exports, __w_pdfjs_require__) {
1993
1994"use strict";
1995
1996
1997var $export = __w_pdfjs_require__(7);
1998$export($export.S, 'Number', { isInteger: __w_pdfjs_require__(58) });
1999
2000/***/ }),
2001/* 58 */
2002/***/ (function(module, exports, __w_pdfjs_require__) {
2003
2004"use strict";
2005
2006
2007var isObject = __w_pdfjs_require__(13);
2008var floor = Math.floor;
2009module.exports = function isInteger(it) {
2010  return !isObject(it) && isFinite(it) && floor(it) === it;
2011};
2012
2013/***/ }),
2014/* 59 */
2015/***/ (function(module, exports, __w_pdfjs_require__) {
2016
2017"use strict";
2018
2019
2020__w_pdfjs_require__(60);
2021__w_pdfjs_require__(62);
2022__w_pdfjs_require__(72);
2023__w_pdfjs_require__(75);
2024__w_pdfjs_require__(92);
2025__w_pdfjs_require__(93);
2026module.exports = __w_pdfjs_require__(9).Promise;
2027
2028/***/ }),
2029/* 60 */
2030/***/ (function(module, exports, __w_pdfjs_require__) {
2031
2032"use strict";
2033
2034
2035var classof = __w_pdfjs_require__(61);
2036var test = {};
2037test[__w_pdfjs_require__(28)('toStringTag')] = 'z';
2038if (test + '' != '[object z]') {
2039  __w_pdfjs_require__(20)(Object.prototype, 'toString', function toString() {
2040    return '[object ' + classof(this) + ']';
2041  }, true);
2042}
2043
2044/***/ }),
2045/* 61 */
2046/***/ (function(module, exports, __w_pdfjs_require__) {
2047
2048"use strict";
2049
2050
2051var cof = __w_pdfjs_require__(27);
2052var TAG = __w_pdfjs_require__(28)('toStringTag');
2053var ARG = cof(function () {
2054  return arguments;
2055}()) == 'Arguments';
2056var tryGet = function tryGet(it, key) {
2057  try {
2058    return it[key];
2059  } catch (e) {}
2060};
2061module.exports = function (it) {
2062  var O, T, B;
2063  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;
2064};
2065
2066/***/ }),
2067/* 62 */
2068/***/ (function(module, exports, __w_pdfjs_require__) {
2069
2070"use strict";
2071
2072
2073var $at = __w_pdfjs_require__(63)(true);
2074__w_pdfjs_require__(64)(String, 'String', function (iterated) {
2075  this._t = String(iterated);
2076  this._i = 0;
2077}, function () {
2078  var O = this._t;
2079  var index = this._i;
2080  var point;
2081  if (index >= O.length) return {
2082    value: undefined,
2083    done: true
2084  };
2085  point = $at(O, index);
2086  this._i += point.length;
2087  return {
2088    value: point,
2089    done: false
2090  };
2091});
2092
2093/***/ }),
2094/* 63 */
2095/***/ (function(module, exports, __w_pdfjs_require__) {
2096
2097"use strict";
2098
2099
2100var toInteger = __w_pdfjs_require__(39);
2101var defined = __w_pdfjs_require__(31);
2102module.exports = function (TO_STRING) {
2103  return function (that, pos) {
2104    var s = String(defined(that));
2105    var i = toInteger(pos);
2106    var l = s.length;
2107    var a, b;
2108    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
vendor: 6,867 bytes, lines 2109-2346
2109    a = s.charCodeAt(i);
2110    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;
2111  };
2112};
2113
2114/***/ }),
2115/* 64 */
2116/***/ (function(module, exports, __w_pdfjs_require__) {
2117
2118"use strict";
2119
2120
2121var LIBRARY = __w_pdfjs_require__(30);
2122var $export = __w_pdfjs_require__(7);
2123var redefine = __w_pdfjs_require__(20);
2124var hide = __w_pdfjs_require__(10);
2125var Iterators = __w_pdfjs_require__(65);
2126var $iterCreate = __w_pdfjs_require__(66);
2127var setToStringTag = __w_pdfjs_require__(70);
2128var getPrototypeOf = __w_pdfjs_require__(71);
2129var ITERATOR = __w_pdfjs_require__(28)('iterator');
2130var BUGGY = !([].keys && 'next' in [].keys());
2131var FF_ITERATOR = '@@iterator';
2132var KEYS = 'keys';
2133var VALUES = 'values';
2134var returnThis = function returnThis() {
2135  return this;
2136};
2137module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
2138  $iterCreate(Constructor, NAME, next);
2139  var getMethod = function getMethod(kind) {
2140    if (!BUGGY && kind in proto) return proto[kind];
2141    switch (kind) {
2142      case KEYS:
2143        return function keys() {
2144          return new Constructor(this, kind);
2145        };
2146      case VALUES:
2147        return function values() {
2148          return new Constructor(this, kind);
2149        };
2150    }
2151    return function entries() {
2152      return new Constructor(this, kind);
2153    };
2154  };
2155  var TAG = NAME + ' Iterator';
2156  var DEF_VALUES = DEFAULT == VALUES;
2157  var VALUES_BUG = false;
2158  var proto = Base.prototype;
2159  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
2160  var $default = $native || getMethod(DEFAULT);
2161  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
2162  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
2163  var methods, key, IteratorPrototype;
2164  if ($anyNative) {
2165    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
2166    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
2167      setToStringTag(IteratorPrototype, TAG, true);
2168      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
2169    }
2170  }
2171  if (DEF_VALUES && $native && $native.name !== VALUES) {
2172    VALUES_BUG = true;
2173    $default = function values() {
2174      return $native.call(this);
2175    };
2176  }
2177  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
2178    hide(proto, ITERATOR, $default);
2179  }
2180  Iterators[NAME] = $default;
2181  Iterators[TAG] = returnThis;
2182  if (DEFAULT) {
2183    methods = {
2184      values: DEF_VALUES ? $default : getMethod(VALUES),
2185      keys: IS_SET ? $default : getMethod(KEYS),
2186      entries: $entries
2187    };
2188    if (FORCED) for (key in methods) {
2189      if (!(key in proto)) redefine(proto, key, methods[key]);
2190    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
2191  }
2192  return methods;
2193};
2194
2195/***/ }),
2196/* 65 */
2197/***/ (function(module, exports, __w_pdfjs_require__) {
2198
2199"use strict";
2200
2201
2202module.exports = {};
2203
2204/***/ }),
2205/* 66 */
2206/***/ (function(module, exports, __w_pdfjs_require__) {
2207
2208"use strict";
2209
2210
2211var create = __w_pdfjs_require__(67);
2212var descriptor = __w_pdfjs_require__(19);
2213var setToStringTag = __w_pdfjs_require__(70);
2214var IteratorPrototype = {};
2215__w_pdfjs_require__(10)(IteratorPrototype, __w_pdfjs_require__(28)('iterator'), function () {
2216  return this;
2217});
2218module.exports = function (Constructor, NAME, next) {
2219  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
2220  setToStringTag(Constructor, NAME + ' Iterator');
2221};
2222
2223/***/ }),
2224/* 67 */
2225/***/ (function(module, exports, __w_pdfjs_require__) {
2226
2227"use strict";
2228
2229
2230var anObject = __w_pdfjs_require__(12);
2231var dPs = __w_pdfjs_require__(68);
2232var enumBugKeys = __w_pdfjs_require__(48);
2233var IE_PROTO = __w_pdfjs_require__(47)('IE_PROTO');
2234var Empty = function Empty() {};
2235var PROTOTYPE = 'prototype';
2236var _createDict = function createDict() {
2237  var iframe = __w_pdfjs_require__(17)('iframe');
2238  var i = enumBugKeys.length;
2239  var lt = '<';
2240  var gt = '>';
2241  var iframeDocument;
2242  iframe.style.display = 'none';
2243  __w_pdfjs_require__(69).appendChild(iframe);
2244  iframe.src = 'javascript:';
2245  iframeDocument = iframe.contentWindow.document;
2246  iframeDocument.open();
2247  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
2248  iframeDocument.close();
2249  _createDict = iframeDocument.F;
2250  while (i--) {
2251    delete _createDict[PROTOTYPE][enumBugKeys[i]];
2252  }return _createDict();
2253};
2254module.exports = Object.create || function create(O, Properties) {
2255  var result;
2256  if (O !== null) {
2257    Empty[PROTOTYPE] = anObject(O);
2258    result = new Empty();
2259    Empty[PROTOTYPE] = null;
2260    result[IE_PROTO] = O;
2261  } else result = _createDict();
2262  return Properties === undefined ? result : dPs(result, Properties);
2263};
2264
2265/***/ }),
2266/* 68 */
2267/***/ (function(module, exports, __w_pdfjs_require__) {
2268
2269"use strict";
2270
2271
2272var dP = __w_pdfjs_require__(11);
2273var anObject = __w_pdfjs_require__(12);
2274var getKeys = __w_pdfjs_require__(45);
2275module.exports = __w_pdfjs_require__(15) ? Object.defineProperties : function defineProperties(O, Properties) {
2276  anObject(O);
2277  var keys = getKeys(Properties);
2278  var length = keys.length;
2279  var i = 0;
2280  var P;
2281  while (length > i) {
2282    dP.f(O, P = keys[i++], Properties[P]);
2283  }return O;
2284};
2285
2286/***/ }),
2287/* 69 */
2288/***/ (function(module, exports, __w_pdfjs_require__) {
2289
2290"use strict";
2291
2292
2293var document = __w_pdfjs_require__(8).document;
2294module.exports = document && document.documentElement;
2295
2296/***/ }),
2297/* 70 */
2298/***/ (function(module, exports, __w_pdfjs_require__) {
2299
2300"use strict";
2301
2302
2303var def = __w_pdfjs_require__(11).f;
2304var has = __w_pdfjs_require__(21);
2305var TAG = __w_pdfjs_require__(28)('toStringTag');
2306module.exports = function (it, tag, stat) {
2307  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {
2308    configurable: true,
2309    value: tag
2310  });
2311};
2312
2313/***/ }),
2314/* 71 */
2315/***/ (function(module, exports, __w_pdfjs_require__) {
2316
2317"use strict";
2318
2319
2320var has = __w_pdfjs_require__(21);
2321var toObject = __w_pdfjs_require__(51);
2322var IE_PROTO = __w_pdfjs_require__(47)('IE_PROTO');
2323var ObjectProto = Object.prototype;
2324module.exports = Object.getPrototypeOf || function (O) {
2325  O = toObject(O);
2326  if (has(O, IE_PROTO)) return O[IE_PROTO];
2327  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
2328    return O.constructor.prototype;
2329  }
2330  return O instanceof Object ? ObjectProto : null;
2331};
2332
2333/***/ }),
2334/* 72 */
2335/***/ (function(module, exports, __w_pdfjs_require__) {
2336
2337"use strict";
2338
2339
2340var $iterators = __w_pdfjs_require__(73);
2341var getKeys = __w_pdfjs_require__(45);
2342var redefine = __w_pdfjs_require__(20);
2343var global = __w_pdfjs_require__(8);
2344var hide = __w_pdfjs_require__(10);
2345var Iterators = __w_pdfjs_require__(65);
2346var wks = __w_pdfjs_require__(28);
2347var ITERATOR = wks('iterator');
2348var TO_STRING_TAG = wks('toStringTag');
2349var ArrayValues = Iterators.Array;
2350var DOMIterables = {
2351  CSSRuleList: true,
2352  CSSStyleDeclaration: false,
2353  CSSValueList: false,
2354  ClientRectList: false,
2355  DOMRectList: false,
2356  DOMStringList: false,
2357  DOMTokenList: true,
2358  DataTransferItemList: false,
2359  FileList: false,
2360  HTMLAllCollection: false,
2361  HTMLCollection: false,
2362  HTMLFormElement: false,
2363  HTMLSelectElement: false,
2364  MediaList: true,
2365  MimeTypeArray: false,
2366  NamedNodeMap: false,
2367  NodeList: true,
2368  PaintRequestList: false,
2369  Plugin: false,
2370  PluginArray: false,
2371  SVGLengthList: false,
2372  SVGNumberList: false,
2373  SVGPathSegList: false,
2374  SVGPointList: false,
2375  SVGStringList: false,
2376  SVGTransformList: false,
2377  SourceBufferList: false,
2378  StyleSheetList: true,
2379  TextTrackCueList: false,
2380  TextTrackList: false,
2381  TouchList: false
2382};
2383for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
2384  var NAME = collections[i];
2385  var explicit = DOMIterables[NAME];
2386  var Collection = global[NAME];
2387  var proto = Collection && Collection.prototype;
2388  var key;
2389  if (proto) {
2390    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
2391    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
2392    Iterators[NAME] = ArrayValues;
2393    if (explicit) for (key in $iterators) {
2394      if (!proto[key]) redefine(proto, key, $iterators[key], true);
2395    }
2396  }
2397}
2398
2399/***/ }),
2400/* 73 */
2401/***/ (function(module, exports, __w_pdfjs_require__) {
2402
2403"use strict";
2404
2405
2406var addToUnscopables = __w_pdfjs_require__(41);
2407var step = __w_pdfjs_require__(74);
2408var Iterators = __w_pdfjs_require__(65);
2409var toIObject = __w_pdfjs_require__(36);
2410module.exports = __w_pdfjs_require__(64)(Array, 'Array', function (iterated, kind) {
2411  this._t = toIObject(iterated);
2412  this._i = 0;
2413  this._k = kind;
2414}, function () {
2415  var O = this._t;
2416  var kind = this._k;
2417  var index = this._i++;
2418  if (!O || index >= O.length) {
2419    this._t = undefined;
2420    return step(1);
2421  }
2422  if (kind == 'keys') return step(0, index);
2423  if (kind == 'values') return step(0, O[index]);
2424  return step(0, [index, O[index]]);
2425}, 'values');
2426Iterators.Arguments = Iterators.Array;
2427addToUnscopables('keys');
2428addToUnscopables('values');
2429addToUnscopables('entries');
2430
2431/***/ }),
2432/* 74 */
2433/***/ (function(module, exports, __w_pdfjs_require__) {
2434
2435"use strict";
2436
2437
2438module.exports = function (done, value) {
2439  return {
2440    value: value,
2441    done: !!done
2442  };
2443};
2444
2445/***/ }),
2446/* 75 */
2447/***/ (function(module, exports, __w_pdfjs_require__) {
2448
2449"use strict";
2450
2451
2452var LIBRARY = __w_pdfjs_require__(30);
2453var global = __w_pdfjs_require__(8);
2454var ctx = __w_pdfjs_require__(23);
2455var classof = __w_pdfjs_require__(61);
2456var $export = __w_pdfjs_require__(7);
2457var isObject = __w_pdfjs_require__(13);
2458var aFunction = __w_pdfjs_require__(24);
2459var anInstance = __w_pdfjs_require__(76);
2460var forOf = __w_pdfjs_require__(77);
2461var speciesConstructor = __w_pdfjs_require__(81);
2462var task = __w_pdfjs_require__(82).set;
2463var microtask = __w_pdfjs_require__(84)();
2464var newPromiseCapabilityModule = __w_pdfjs_require__(85);
2465var perform = __w_pdfjs_require__(86);
2466var userAgent = __w_pdfjs_require__(87);
2467var promiseResolve = __w_pdfjs_require__(88);
2468var PROMISE = 'Promise';
2469var TypeError = global.TypeError;
2470var process = global.process;
2471var versions = process && process.versions;
2472var v8 = versions && versions.v8 || '';
2473var $Promise = global[PROMISE];
2474var isNode = classof(process) == 'process';
2475var empty = function empty() {};
2476var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
2477var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
2478var USE_NATIVE = !!function () {
2479  try {
2480    var promise = $Promise.resolve(1);
2481    var FakePromise = (promise.constructor = {})[__w_pdfjs_require__(28)('species')] = function (exec) {
2482      exec(empty, empty);
2483    };
2484    return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1;
2485  } catch (e) {}
2486}();
2487var isThenable = function isThenable(it) {
2488  var then;
2489  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
vendor: 4,103 bytes, lines 2490-2637
2490};
2491var notify = function notify(promise, isReject) {
2492  if (promise._n) return;
2493  promise._n = true;
2494  var chain = promise._c;
2495  microtask(function () {
2496    var value = promise._v;
2497    var ok = promise._s == 1;
2498    var i = 0;
2499    var run = function run(reaction) {
2500      var handler = ok ? reaction.ok : reaction.fail;
2501      var resolve = reaction.resolve;
2502      var reject = reaction.reject;
2503      var domain = reaction.domain;
2504      var result, then, exited;
2505      try {
2506        if (handler) {
2507          if (!ok) {
2508            if (promise._h == 2) onHandleUnhandled(promise);
2509            promise._h = 1;
2510          }
2511          if (handler === true) result = value;else {
2512            if (domain) domain.enter();
2513            result = handler(value);
2514            if (domain) {
2515              domain.exit();
2516              exited = true;
2517            }
2518          }
2519          if (result === reaction.promise) {
2520            reject(TypeError('Promise-chain cycle'));
2521          } else if (then = isThenable(result)) {
2522            then.call(result, resolve, reject);
2523          } else resolve(result);
2524        } else reject(value);
2525      } catch (e) {
2526        if (domain && !exited) domain.exit();
2527        reject(e);
2528      }
2529    };
2530    while (chain.length > i) {
2531      run(chain[i++]);
2532    }promise._c = [];
2533    promise._n = false;
2534    if (isReject && !promise._h) onUnhandled(promise);
2535  });
2536};
2537var onUnhandled = function onUnhandled(promise) {
2538  task.call(global, function () {
2539    var value = promise._v;
2540    var unhandled = isUnhandled(promise);
2541    var result, handler, console;
2542    if (unhandled) {
2543      result = perform(function () {
2544        if (isNode) {
2545          process.emit('unhandledRejection', value, promise);
2546        } else if (handler = global.onunhandledrejection) {
2547          handler({
2548            promise: promise,
2549            reason: value
2550          });
2551        } else if ((console = global.console) && console.error) {
2552          console.error('Unhandled promise rejection', value);
2553        }
2554      });
2555      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
2556    }
2557    promise._a = undefined;
2558    if (unhandled && result.e) throw result.v;
2559  });
2560};
2561var isUnhandled = function isUnhandled(promise) {
2562  return promise._h !== 1 && (promise._a || promise._c).length === 0;
2563};
2564var onHandleUnhandled = function onHandleUnhandled(promise) {
2565  task.call(global, function () {
2566    var handler;
2567    if (isNode) {
2568      process.emit('rejectionHandled', promise);
2569    } else if (handler = global.onrejectionhandled) {
2570      handler({
2571        promise: promise,
2572        reason: promise._v
2573      });
2574    }
2575  });
2576};
2577var $reject = function $reject(value) {
2578  var promise = this;
2579  if (promise._d) return;
2580  promise._d = true;
2581  promise = promise._w || promise;
2582  promise._v = value;
2583  promise._s = 2;
2584  if (!promise._a) promise._a = promise._c.slice();
2585  notify(promise, true);
2586};
2587var $resolve = function $resolve(value) {
2588  var promise = this;
2589  var then;
2590  if (promise._d) return;
2591  promise._d = true;
2592  promise = promise._w || promise;
2593  try {
2594    if (promise === value) throw TypeError("Promise can't be resolved itself");
2595    if (then = isThenable(value)) {
2596      microtask(function () {
2597        var wrapper = {
2598          _w: promise,
2599          _d: false
2600        };
2601        try {
2602          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
2603        } catch (e) {
2604          $reject.call(wrapper, e);
2605        }
2606      });
2607    } else {
2608      promise._v = value;
2609      promise._s = 1;
2610      notify(promise, false);
2611    }
2612  } catch (e) {
2613    $reject.call({
2614      _w: promise,
2615      _d: false
2616    }, e);
2617  }
2618};
2619if (!USE_NATIVE) {
2620  $Promise = function Promise(executor) {
2621    anInstance(this, $Promise, PROMISE, '_h');
2622    aFunction(executor);
2623    Internal.call(this);
2624    try {
2625      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
2626    } catch (err) {
2627      $reject.call(this, err);
2628    }
2629  };
2630  Internal = function Promise(executor) {
2631    this._c = [];
2632    this._a = undefined;
2633    this._s = 0;
2634    this._d = false;
2635    this._v = undefined;
2636    this._h = 0;
2637    this._n = false;
vendor: 5,089 bytes, lines 2638-2797
2638  };
2639  Internal.prototype = __w_pdfjs_require__(89)($Promise.prototype, {
2640    then: function then(onFulfilled, onRejected) {
2641      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
2642      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
2643      reaction.fail = typeof onRejected == 'function' && onRejected;
2644      reaction.domain = isNode ? process.domain : undefined;
2645      this._c.push(reaction);
2646      if (this._a) this._a.push(reaction);
2647      if (this._s) notify(this, false);
2648      return reaction.promise;
2649    },
2650    'catch': function _catch(onRejected) {
2651      return this.then(undefined, onRejected);
2652    }
2653  });
2654  OwnPromiseCapability = function OwnPromiseCapability() {
2655    var promise = new Internal();
2656    this.promise = promise;
2657    this.resolve = ctx($resolve, promise, 1);
2658    this.reject = ctx($reject, promise, 1);
2659  };
2660  newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) {
2661    return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
2662  };
2663}
2664$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
2665__w_pdfjs_require__(70)($Promise, PROMISE);
2666__w_pdfjs_require__(90)(PROMISE);
2667Wrapper = __w_pdfjs_require__(9)[PROMISE];
2668$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
2669  reject: function reject(r) {
2670    var capability = newPromiseCapability(this);
2671    var $$reject = capability.reject;
2672    $$reject(r);
2673    return capability.promise;
2674  }
2675});
2676$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
2677  resolve: function resolve(x) {
2678    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
2679  }
2680});
2681$export($export.S + $export.F * !(USE_NATIVE && __w_pdfjs_require__(91)(function (iter) {
2682  $Promise.all(iter)['catch'](empty);
2683})), PROMISE, {
2684  all: function all(iterable) {
2685    var C = this;
2686    var capability = newPromiseCapability(C);
2687    var resolve = capability.resolve;
2688    var reject = capability.reject;
2689    var result = perform(function () {
2690      var values = [];
2691      var index = 0;
2692      var remaining = 1;
2693      forOf(iterable, false, function (promise) {
2694        var $index = index++;
2695        var alreadyCalled = false;
2696        values.push(undefined);
2697        remaining++;
2698        C.resolve(promise).then(function (value) {
2699          if (alreadyCalled) return;
2700          alreadyCalled = true;
2701          values[$index] = value;
2702          --remaining || resolve(values);
2703        }, reject);
2704      });
2705      --remaining || resolve(values);
2706    });
2707    if (result.e) reject(result.v);
2708    return capability.promise;
2709  },
2710  race: function race(iterable) {
2711    var C = this;
2712    var capability = newPromiseCapability(C);
2713    var reject = capability.reject;
2714    var result = perform(function () {
2715      forOf(iterable, false, function (promise) {
2716        C.resolve(promise).then(capability.resolve, reject);
2717      });
2718    });
2719    if (result.e) reject(result.v);
2720    return capability.promise;
2721  }
2722});
2723
2724/***/ }),
2725/* 76 */
2726/***/ (function(module, exports, __w_pdfjs_require__) {
2727
2728"use strict";
2729
2730
2731module.exports = function (it, Constructor, name, forbiddenField) {
2732  if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) {
2733    throw TypeError(name + ': incorrect invocation!');
2734  }
2735  return it;
2736};
2737
2738/***/ }),
2739/* 77 */
2740/***/ (function(module, exports, __w_pdfjs_require__) {
2741
2742"use strict";
2743
2744
2745var ctx = __w_pdfjs_require__(23);
2746var call = __w_pdfjs_require__(78);
2747var isArrayIter = __w_pdfjs_require__(79);
2748var anObject = __w_pdfjs_require__(12);
2749var toLength = __w_pdfjs_require__(38);
2750var getIterFn = __w_pdfjs_require__(80);
2751var BREAK = {};
2752var RETURN = {};
2753var _exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
2754  var iterFn = ITERATOR ? function () {
2755    return iterable;
2756  } : getIterFn(iterable);
2757  var f = ctx(fn, that, entries ? 2 : 1);
2758  var index = 0;
2759  var length, step, iterator, result;
2760  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
2761  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
2762    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
2763    if (result === BREAK || result === RETURN) return result;
2764  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
2765    result = call(iterator, f, step.value, entries);
2766    if (result === BREAK || result === RETURN) return result;
2767  }
2768};
2769_exports.BREAK = BREAK;
2770_exports.RETURN = RETURN;
2771
2772/***/ }),
2773/* 78 */
2774/***/ (function(module, exports, __w_pdfjs_require__) {
2775
2776"use strict";
2777
2778
2779var anObject = __w_pdfjs_require__(12);
2780module.exports = function (iterator, fn, value, entries) {
2781  try {
2782    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
2783  } catch (e) {
2784    var ret = iterator['return'];
2785    if (ret !== undefined) anObject(ret.call(iterator));
2786    throw e;
2787  }
2788};
2789
2790/***/ }),
2791/* 79 */
2792/***/ (function(module, exports, __w_pdfjs_require__) {
2793
2794"use strict";
2795
2796
2797var Iterators = __w_pdfjs_require__(65);
vendor: 4,480 bytes, lines 2798-2961
2798var ITERATOR = __w_pdfjs_require__(28)('iterator');
2799var ArrayProto = Array.prototype;
2800module.exports = function (it) {
2801  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
2802};
2803
2804/***/ }),
2805/* 80 */
2806/***/ (function(module, exports, __w_pdfjs_require__) {
2807
2808"use strict";
2809
2810
2811var classof = __w_pdfjs_require__(61);
2812var ITERATOR = __w_pdfjs_require__(28)('iterator');
2813var Iterators = __w_pdfjs_require__(65);
2814module.exports = __w_pdfjs_require__(9).getIteratorMethod = function (it) {
2815  if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];
2816};
2817
2818/***/ }),
2819/* 81 */
2820/***/ (function(module, exports, __w_pdfjs_require__) {
2821
2822"use strict";
2823
2824
2825var anObject = __w_pdfjs_require__(12);
2826var aFunction = __w_pdfjs_require__(24);
2827var SPECIES = __w_pdfjs_require__(28)('species');
2828module.exports = function (O, D) {
2829  var C = anObject(O).constructor;
2830  var S;
2831  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
2832};
2833
2834/***/ }),
2835/* 82 */
2836/***/ (function(module, exports, __w_pdfjs_require__) {
2837
2838"use strict";
2839
2840
2841var ctx = __w_pdfjs_require__(23);
2842var invoke = __w_pdfjs_require__(83);
2843var html = __w_pdfjs_require__(69);
2844var cel = __w_pdfjs_require__(17);
2845var global = __w_pdfjs_require__(8);
2846var process = global.process;
2847var setTask = global.setImmediate;
2848var clearTask = global.clearImmediate;
2849var MessageChannel = global.MessageChannel;
2850var Dispatch = global.Dispatch;
2851var counter = 0;
2852var queue = {};
2853var ONREADYSTATECHANGE = 'onreadystatechange';
2854var defer, channel, port;
2855var run = function run() {
2856  var id = +this;
2857  if (queue.hasOwnProperty(id)) {
2858    var fn = queue[id];
2859    delete queue[id];
2860    fn();
2861  }
2862};
2863var listener = function listener(event) {
2864  run.call(event.data);
2865};
2866if (!setTask || !clearTask) {
2867  setTask = function setImmediate(fn) {
2868    var args = [];
2869    var i = 1;
2870    while (arguments.length > i) {
2871      args.push(arguments[i++]);
2872    }queue[++counter] = function () {
2873      invoke(typeof fn == 'function' ? fn : Function(fn), args);
2874    };
2875    defer(counter);
2876    return counter;
2877  };
2878  clearTask = function clearImmediate(id) {
2879    delete queue[id];
2880  };
2881  if (__w_pdfjs_require__(27)(process) == 'process') {
2882    defer = function defer(id) {
2883      process.nextTick(ctx(run, id, 1));
2884    };
2885  } else if (Dispatch && Dispatch.now) {
2886    defer = function defer(id) {
2887      Dispatch.now(ctx(run, id, 1));
2888    };
2889  } else if (MessageChannel) {
2890    channel = new MessageChannel();
2891    port = channel.port2;
2892    channel.port1.onmessage = listener;
2893    defer = ctx(port.postMessage, port, 1);
2894  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
2895    defer = function defer(id) {
2896      global.postMessage(id + '', '*');
2897    };
2898    global.addEventListener('message', listener, false);
2899  } else if (ONREADYSTATECHANGE in cel('script')) {
2900    defer = function defer(id) {
2901      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
2902        html.removeChild(this);
2903        run.call(id);
2904      };
2905    };
2906  } else {
2907    defer = function defer(id) {
2908      setTimeout(ctx(run, id, 1), 0);
2909    };
2910  }
2911}
2912module.exports = {
2913  set: setTask,
2914  clear: clearTask
2915};
2916
2917/***/ }),
2918/* 83 */
2919/***/ (function(module, exports, __w_pdfjs_require__) {
2920
2921"use strict";
2922
2923
2924module.exports = function (fn, args, that) {
2925  var un = that === undefined;
2926  switch (args.length) {
2927    case 0:
2928      return un ? fn() : fn.call(that);
2929    case 1:
2930      return un ? fn(args[0]) : fn.call(that, args[0]);
2931    case 2:
2932      return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]);
2933    case 3:
2934      return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]);
2935    case 4:
2936      return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]);
2937  }
2938  return fn.apply(that, args);
2939};
2940
2941/***/ }),
2942/* 84 */
2943/***/ (function(module, exports, __w_pdfjs_require__) {
2944
2945"use strict";
2946
2947
2948var global = __w_pdfjs_require__(8);
2949var macrotask = __w_pdfjs_require__(82).set;
2950var Observer = global.MutationObserver || global.WebKitMutationObserver;
2951var process = global.process;
2952var Promise = global.Promise;
2953var isNode = __w_pdfjs_require__(27)(process) == 'process';
2954module.exports = function () {
2955  var head, last, notify;
2956  var flush = function flush() {
2957    var parent, fn;
2958    if (isNode && (parent = process.domain)) parent.exit();
2959    while (head) {
2960      fn = head.fn;
2961      head = head.next;
vendor: 4,840 bytes, lines 2962-3184
2962      try {
2963        fn();
2964      } catch (e) {
2965        if (head) notify();else last = undefined;
2966        throw e;
2967      }
2968    }
2969    last = undefined;
2970    if (parent) parent.enter();
2971  };
2972  if (isNode) {
2973    notify = function notify() {
2974      process.nextTick(flush);
2975    };
2976  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
2977    var toggle = true;
2978    var node = document.createTextNode('');
2979    new Observer(flush).observe(node, { characterData: true });
2980    notify = function notify() {
2981      node.data = toggle = !toggle;
2982    };
2983  } else if (Promise && Promise.resolve) {
2984    var promise = Promise.resolve(undefined);
2985    notify = function notify() {
2986      promise.then(flush);
2987    };
2988  } else {
2989    notify = function notify() {
2990      macrotask.call(global, flush);
2991    };
2992  }
2993  return function (fn) {
2994    var task = {
2995      fn: fn,
2996      next: undefined
2997    };
2998    if (last) last.next = task;
2999    if (!head) {
3000      head = task;
3001      notify();
3002    }
3003    last = task;
3004  };
3005};
3006
3007/***/ }),
3008/* 85 */
3009/***/ (function(module, exports, __w_pdfjs_require__) {
3010
3011"use strict";
3012
3013
3014var aFunction = __w_pdfjs_require__(24);
3015function PromiseCapability(C) {
3016  var resolve, reject;
3017  this.promise = new C(function ($$resolve, $$reject) {
3018    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
3019    resolve = $$resolve;
3020    reject = $$reject;
3021  });
3022  this.resolve = aFunction(resolve);
3023  this.reject = aFunction(reject);
3024}
3025module.exports.f = function (C) {
3026  return new PromiseCapability(C);
3027};
3028
3029/***/ }),
3030/* 86 */
3031/***/ (function(module, exports, __w_pdfjs_require__) {
3032
3033"use strict";
3034
3035
3036module.exports = function (exec) {
3037  try {
3038    return {
3039      e: false,
3040      v: exec()
3041    };
3042  } catch (e) {
3043    return {
3044      e: true,
3045      v: e
3046    };
3047  }
3048};
3049
3050/***/ }),
3051/* 87 */
3052/***/ (function(module, exports, __w_pdfjs_require__) {
3053
3054"use strict";
3055
3056
3057var global = __w_pdfjs_require__(8);
3058var navigator = global.navigator;
3059module.exports = navigator && navigator.userAgent || '';
3060
3061/***/ }),
3062/* 88 */
3063/***/ (function(module, exports, __w_pdfjs_require__) {
3064
3065"use strict";
3066
3067
3068var anObject = __w_pdfjs_require__(12);
3069var isObject = __w_pdfjs_require__(13);
3070var newPromiseCapability = __w_pdfjs_require__(85);
3071module.exports = function (C, x) {
3072  anObject(C);
3073  if (isObject(x) && x.constructor === C) return x;
3074  var promiseCapability = newPromiseCapability.f(C);
3075  var resolve = promiseCapability.resolve;
3076  resolve(x);
3077  return promiseCapability.promise;
3078};
3079
3080/***/ }),
3081/* 89 */
3082/***/ (function(module, exports, __w_pdfjs_require__) {
3083
3084"use strict";
3085
3086
3087var redefine = __w_pdfjs_require__(20);
3088module.exports = function (target, src, safe) {
3089  for (var key in src) {
3090    redefine(target, key, src[key], safe);
3091  }return target;
3092};
3093
3094/***/ }),
3095/* 90 */
3096/***/ (function(module, exports, __w_pdfjs_require__) {
3097
3098"use strict";
3099
3100
3101var global = __w_pdfjs_require__(8);
3102var dP = __w_pdfjs_require__(11);
3103var DESCRIPTORS = __w_pdfjs_require__(15);
3104var SPECIES = __w_pdfjs_require__(28)('species');
3105module.exports = function (KEY) {
3106  var C = global[KEY];
3107  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
3108    configurable: true,
3109    get: function get() {
3110      return this;
3111    }
3112  });
3113};
3114
3115/***/ }),
3116/* 91 */
3117/***/ (function(module, exports, __w_pdfjs_require__) {
3118
3119"use strict";
3120
3121
3122var ITERATOR = __w_pdfjs_require__(28)('iterator');
3123var SAFE_CLOSING = false;
3124try {
3125  var riter = [7][ITERATOR]();
3126  riter['return'] = function () {
3127    SAFE_CLOSING = true;
3128  };
3129  Array.from(riter, function () {
3130    throw 2;
3131  });
3132} catch (e) {}
3133module.exports = function (exec, skipClosing) {
3134  if (!skipClosing && !SAFE_CLOSING) return false;
3135  var safe = false;
3136  try {
3137    var arr = [7];
3138    var iter = arr[ITERATOR]();
3139    iter.next = function () {
3140      return { done: safe = true };
3141    };
3142    arr[ITERATOR] = function () {
3143      return iter;
3144    };
3145    exec(arr);
3146  } catch (e) {}
3147  return safe;
3148};
3149
3150/***/ }),
3151/* 92 */
3152/***/ (function(module, exports, __w_pdfjs_require__) {
3153
3154"use strict";
3155
3156
3157var $export = __w_pdfjs_require__(7);
3158var core = __w_pdfjs_require__(9);
3159var global = __w_pdfjs_require__(8);
3160var speciesConstructor = __w_pdfjs_require__(81);
3161var promiseResolve = __w_pdfjs_require__(88);
3162$export($export.P + $export.R, 'Promise', {
3163  'finally': function _finally(onFinally) {
3164    var C = speciesConstructor(this, core.Promise || global.Promise);
3165    var isFunction = typeof onFinally == 'function';
3166    return this.then(isFunction ? function (x) {
3167      return promiseResolve(C, onFinally()).then(function () {
3168        return x;
3169      });
3170    } : onFinally, isFunction ? function (e) {
3171      return promiseResolve(C, onFinally()).then(function () {
3172        throw e;
3173      });
3174    } : onFinally);
3175  }
3176});
3177
3178/***/ }),
3179/* 93 */
3180/***/ (function(module, exports, __w_pdfjs_require__) {
3181
3182"use strict";
3183
3184
vendor: 10,612 bytes, lines 3185-3550
3185var $export = __w_pdfjs_require__(7);
3186var newPromiseCapability = __w_pdfjs_require__(85);
3187var perform = __w_pdfjs_require__(86);
3188$export($export.S, 'Promise', {
3189  'try': function _try(callbackfn) {
3190    var promiseCapability = newPromiseCapability.f(this);
3191    var result = perform(callbackfn);
3192    (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
3193    return promiseCapability.promise;
3194  }
3195});
3196
3197/***/ }),
3198/* 94 */
3199/***/ (function(module, exports, __w_pdfjs_require__) {
3200
3201"use strict";
3202
3203
3204__w_pdfjs_require__(60);
3205__w_pdfjs_require__(72);
3206__w_pdfjs_require__(95);
3207__w_pdfjs_require__(107);
3208__w_pdfjs_require__(109);
3209module.exports = __w_pdfjs_require__(9).WeakMap;
3210
3211/***/ }),
3212/* 95 */
3213/***/ (function(module, exports, __w_pdfjs_require__) {
3214
3215"use strict";
3216
3217
3218var each = __w_pdfjs_require__(96)(0);
3219var redefine = __w_pdfjs_require__(20);
3220var meta = __w_pdfjs_require__(100);
3221var assign = __w_pdfjs_require__(44);
3222var weak = __w_pdfjs_require__(101);
3223var isObject = __w_pdfjs_require__(13);
3224var fails = __w_pdfjs_require__(16);
3225var validate = __w_pdfjs_require__(102);
3226var WEAK_MAP = 'WeakMap';
3227var getWeak = meta.getWeak;
3228var isExtensible = Object.isExtensible;
3229var uncaughtFrozenStore = weak.ufstore;
3230var tmp = {};
3231var InternalMap;
3232var wrapper = function wrapper(get) {
3233  return function WeakMap() {
3234    return get(this, arguments.length > 0 ? arguments[0] : undefined);
3235  };
3236};
3237var methods = {
3238  get: function get(key) {
3239    if (isObject(key)) {
3240      var data = getWeak(key);
3241      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
3242      return data ? data[this._i] : undefined;
3243    }
3244  },
3245  set: function set(key, value) {
3246    return weak.def(validate(this, WEAK_MAP), key, value);
3247  }
3248};
3249var $WeakMap = module.exports = __w_pdfjs_require__(103)(WEAK_MAP, wrapper, methods, weak, true, true);
3250if (fails(function () {
3251  return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7;
3252})) {
3253  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
3254  assign(InternalMap.prototype, methods);
3255  meta.NEED = true;
3256  each(['delete', 'has', 'get', 'set'], function (key) {
3257    var proto = $WeakMap.prototype;
3258    var method = proto[key];
3259    redefine(proto, key, function (a, b) {
3260      if (isObject(a) && !isExtensible(a)) {
3261        if (!this._f) this._f = new InternalMap();
3262        var result = this._f[key](a, b);
3263        return key == 'set' ? this : result;
3264      }
3265      return method.call(this, a, b);
3266    });
3267  });
3268}
3269
3270/***/ }),
3271/* 96 */
3272/***/ (function(module, exports, __w_pdfjs_require__) {
3273
3274"use strict";
3275
3276
3277var ctx = __w_pdfjs_require__(23);
3278var IObject = __w_pdfjs_require__(37);
3279var toObject = __w_pdfjs_require__(51);
3280var toLength = __w_pdfjs_require__(38);
3281var asc = __w_pdfjs_require__(97);
3282module.exports = function (TYPE, $create) {
3283  var IS_MAP = TYPE == 1;
3284  var IS_FILTER = TYPE == 2;
3285  var IS_SOME = TYPE == 3;
3286  var IS_EVERY = TYPE == 4;
3287  var IS_FIND_INDEX = TYPE == 6;
3288  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
3289  var create = $create || asc;
3290  return function ($this, callbackfn, that) {
3291    var O = toObject($this);
3292    var self = IObject(O);
3293    var f = ctx(callbackfn, that, 3);
3294    var length = toLength(self.length);
3295    var index = 0;
3296    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
3297    var val, res;
3298    for (; length > index; index++) {
3299      if (NO_HOLES || index in self) {
3300        val = self[index];
3301        res = f(val, index, O);
3302        if (TYPE) {
3303          if (IS_MAP) result[index] = res;else if (res) switch (TYPE) {
3304            case 3:
3305              return true;
3306            case 5:
3307              return val;
3308            case 6:
3309              return index;
3310            case 2:
3311              result.push(val);
3312          } else if (IS_EVERY) return false;
3313        }
3314      }
3315    }return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
3316  };
3317};
3318
3319/***/ }),
3320/* 97 */
3321/***/ (function(module, exports, __w_pdfjs_require__) {
3322
3323"use strict";
3324
3325
3326var speciesConstructor = __w_pdfjs_require__(98);
3327module.exports = function (original, length) {
3328  return new (speciesConstructor(original))(length);
3329};
3330
3331/***/ }),
3332/* 98 */
3333/***/ (function(module, exports, __w_pdfjs_require__) {
3334
3335"use strict";
3336
3337
3338var isObject = __w_pdfjs_require__(13);
3339var isArray = __w_pdfjs_require__(99);
3340var SPECIES = __w_pdfjs_require__(28)('species');
3341module.exports = function (original) {
3342  var C;
3343  if (isArray(original)) {
3344    C = original.constructor;
3345    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
3346    if (isObject(C)) {
3347      C = C[SPECIES];
3348      if (C === null) C = undefined;
3349    }
3350  }
3351  return C === undefined ? Array : C;
3352};
3353
3354/***/ }),
3355/* 99 */
3356/***/ (function(module, exports, __w_pdfjs_require__) {
3357
3358"use strict";
3359
3360
3361var cof = __w_pdfjs_require__(27);
3362module.exports = Array.isArray || function isArray(arg) {
3363  return cof(arg) == 'Array';
3364};
3365
3366/***/ }),
3367/* 100 */
3368/***/ (function(module, exports, __w_pdfjs_require__) {
3369
3370"use strict";
3371
3372
3373var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
3374
3375var META = __w_pdfjs_require__(22)('meta');
3376var isObject = __w_pdfjs_require__(13);
3377var has = __w_pdfjs_require__(21);
3378var setDesc = __w_pdfjs_require__(11).f;
3379var id = 0;
3380var isExtensible = Object.isExtensible || function () {
3381  return true;
3382};
3383var FREEZE = !__w_pdfjs_require__(16)(function () {
3384  return isExtensible(Object.preventExtensions({}));
3385});
3386var setMeta = function setMeta(it) {
3387  setDesc(it, META, {
3388    value: {
3389      i: 'O' + ++id,
3390      w: {}
3391    }
3392  });
3393};
3394var fastKey = function fastKey(it, create) {
3395  if (!isObject(it)) return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
3396  if (!has(it, META)) {
3397    if (!isExtensible(it)) return 'F';
3398    if (!create) return 'E';
3399    setMeta(it);
3400  }
3401  return it[META].i;
3402};
3403var getWeak = function getWeak(it, create) {
3404  if (!has(it, META)) {
3405    if (!isExtensible(it)) return true;
3406    if (!create) return false;
3407    setMeta(it);
3408  }
3409  return it[META].w;
3410};
3411var onFreeze = function onFreeze(it) {
3412  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
3413  return it;
3414};
3415var meta = module.exports = {
3416  KEY: META,
3417  NEED: false,
3418  fastKey: fastKey,
3419  getWeak: getWeak,
3420  onFreeze: onFreeze
3421};
3422
3423/***/ }),
3424/* 101 */
3425/***/ (function(module, exports, __w_pdfjs_require__) {
3426
3427"use strict";
3428
3429
3430var redefineAll = __w_pdfjs_require__(89);
3431var getWeak = __w_pdfjs_require__(100).getWeak;
3432var anObject = __w_pdfjs_require__(12);
3433var isObject = __w_pdfjs_require__(13);
3434var anInstance = __w_pdfjs_require__(76);
3435var forOf = __w_pdfjs_require__(77);
3436var createArrayMethod = __w_pdfjs_require__(96);
3437var $has = __w_pdfjs_require__(21);
3438var validate = __w_pdfjs_require__(102);
3439var arrayFind = createArrayMethod(5);
3440var arrayFindIndex = createArrayMethod(6);
3441var id = 0;
3442var uncaughtFrozenStore = function uncaughtFrozenStore(that) {
3443  return that._l || (that._l = new UncaughtFrozenStore());
3444};
3445var UncaughtFrozenStore = function UncaughtFrozenStore() {
3446  this.a = [];
3447};
3448var findUncaughtFrozen = function findUncaughtFrozen(store, key) {
3449  return arrayFind(store.a, function (it) {
3450    return it[0] === key;
3451  });
3452};
3453UncaughtFrozenStore.prototype = {
3454  get: function get(key) {
3455    var entry = findUncaughtFrozen(this, key);
3456    if (entry) return entry[1];
3457  },
3458  has: function has(key) {
3459    return !!findUncaughtFrozen(this, key);
3460  },
3461  set: function set(key, value) {
3462    var entry = findUncaughtFrozen(this, key);
3463    if (entry) entry[1] = value;else this.a.push([key, value]);
3464  },
3465  'delete': function _delete(key) {
3466    var index = arrayFindIndex(this.a, function (it) {
3467      return it[0] === key;
3468    });
3469    if (~index) this.a.splice(index, 1);
3470    return !!~index;
3471  }
3472};
3473module.exports = {
3474  getConstructor: function getConstructor(wrapper, NAME, IS_MAP, ADDER) {
3475    var C = wrapper(function (that, iterable) {
3476      anInstance(that, C, NAME, '_i');
3477      that._t = NAME;
3478      that._i = id++;
3479      that._l = undefined;
3480      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
3481    });
3482    redefineAll(C.prototype, {
3483      'delete': function _delete(key) {
3484        if (!isObject(key)) return false;
3485        var data = getWeak(key);
3486        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
3487        return data && $has(data, this._i) && delete data[this._i];
3488      },
3489      has: function has(key) {
3490        if (!isObject(key)) return false;
3491        var data = getWeak(key);
3492        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
3493        return data && $has(data, this._i);
3494      }
3495    });
3496    return C;
3497  },
3498  def: function def(that, key, value) {
3499    var data = getWeak(anObject(key), true);
3500    if (data === true) uncaughtFrozenStore(that).set(key, value);else data[that._i] = value;
3501    return that;
3502  },
3503  ufstore: uncaughtFrozenStore
3504};
3505
3506/***/ }),
3507/* 102 */
3508/***/ (function(module, exports, __w_pdfjs_require__) {
3509
3510"use strict";
3511
3512
3513var isObject = __w_pdfjs_require__(13);
3514module.exports = function (it, TYPE) {
3515  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
3516  return it;
3517};
3518
3519/***/ }),
3520/* 103 */
3521/***/ (function(module, exports, __w_pdfjs_require__) {
3522
3523"use strict";
3524
3525
3526var global = __w_pdfjs_require__(8);
3527var $export = __w_pdfjs_require__(7);
3528var redefine = __w_pdfjs_require__(20);
3529var redefineAll = __w_pdfjs_require__(89);
3530var meta = __w_pdfjs_require__(100);
3531var forOf = __w_pdfjs_require__(77);
3532var anInstance = __w_pdfjs_require__(76);
3533var isObject = __w_pdfjs_require__(13);
3534var fails = __w_pdfjs_require__(16);
3535var $iterDetect = __w_pdfjs_require__(91);
3536var setToStringTag = __w_pdfjs_require__(70);
3537var inheritIfRequired = __w_pdfjs_require__(104);
3538module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
3539  var Base = global[NAME];
3540  var C = Base;
3541  var ADDER = IS_MAP ? 'set' : 'add';
3542  var proto = C && C.prototype;
3543  var O = {};
3544  var fixMethod = function fixMethod(KEY) {
3545    var fn = proto[KEY];
3546    redefine(proto, KEY, KEY == 'delete' ? function (a) {
3547      return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
3548    } : KEY == 'has' ? function has(a) {
3549      return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
3550    } : KEY == 'get' ? function get(a) {
vendor: 4,490 bytes, lines 3551-3723
3551      return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
3552    } : KEY == 'add' ? function add(a) {
3553      fn.call(this, a === 0 ? 0 : a);
3554      return this;
3555    } : function set(a, b) {
3556      fn.call(this, a === 0 ? 0 : a, b);
3557      return this;
3558    });
3559  };
3560  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
3561    new C().entries().next();
3562  }))) {
3563    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
3564    redefineAll(C.prototype, methods);
3565    meta.NEED = true;
3566  } else {
3567    var instance = new C();
3568    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
3569    var THROWS_ON_PRIMITIVES = fails(function () {
3570      instance.has(1);
3571    });
3572    var ACCEPT_ITERABLES = $iterDetect(function (iter) {
3573      new C(iter);
3574    });
3575    var BUGGY_ZERO = !IS_WEAK && fails(function () {
3576      var $instance = new C();
3577      var index = 5;
3578      while (index--) {
3579        $instance[ADDER](index, index);
3580      }return !$instance.has(-0);
3581    });
3582    if (!ACCEPT_ITERABLES) {
3583      C = wrapper(function (target, iterable) {
3584        anInstance(target, C, NAME);
3585        var that = inheritIfRequired(new Base(), target, C);
3586        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
3587        return that;
3588      });
3589      C.prototype = proto;
3590      proto.constructor = C;
3591    }
3592    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
3593      fixMethod('delete');
3594      fixMethod('has');
3595      IS_MAP && fixMethod('get');
3596    }
3597    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
3598    if (IS_WEAK && proto.clear) delete proto.clear;
3599  }
3600  setToStringTag(C, NAME);
3601  O[NAME] = C;
3602  $export($export.G + $export.W + $export.F * (C != Base), O);
3603  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
3604  return C;
3605};
3606
3607/***/ }),
3608/* 104 */
3609/***/ (function(module, exports, __w_pdfjs_require__) {
3610
3611"use strict";
3612
3613
3614var isObject = __w_pdfjs_require__(13);
3615var setPrototypeOf = __w_pdfjs_require__(105).set;
3616module.exports = function (that, target, C) {
3617  var S = target.constructor;
3618  var P;
3619  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
3620    setPrototypeOf(that, P);
3621  }
3622  return that;
3623};
3624
3625/***/ }),
3626/* 105 */
3627/***/ (function(module, exports, __w_pdfjs_require__) {
3628
3629"use strict";
3630
3631
3632var isObject = __w_pdfjs_require__(13);
3633var anObject = __w_pdfjs_require__(12);
3634var check = function check(O, proto) {
3635  anObject(O);
3636  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
3637};
3638module.exports = {
3639  set: Object.setPrototypeOf || ('__proto__' in {} ? function (test, buggy, set) {
3640    try {
3641      set = __w_pdfjs_require__(23)(Function.call, __w_pdfjs_require__(106).f(Object.prototype, '__proto__').set, 2);
3642      set(test, []);
3643      buggy = !(test instanceof Array);
3644    } catch (e) {
3645      buggy = true;
3646    }
3647    return function setPrototypeOf(O, proto) {
3648      check(O, proto);
3649      if (buggy) O.__proto__ = proto;else set(O, proto);
3650      return O;
3651    };
3652  }({}, false) : undefined),
3653  check: check
3654};
3655
3656/***/ }),
3657/* 106 */
3658/***/ (function(module, exports, __w_pdfjs_require__) {
3659
3660"use strict";
3661
3662
3663var pIE = __w_pdfjs_require__(50);
3664var createDesc = __w_pdfjs_require__(19);
3665var toIObject = __w_pdfjs_require__(36);
3666var toPrimitive = __w_pdfjs_require__(18);
3667var has = __w_pdfjs_require__(21);
3668var IE8_DOM_DEFINE = __w_pdfjs_require__(14);
3669var gOPD = Object.getOwnPropertyDescriptor;
3670exports.f = __w_pdfjs_require__(15) ? gOPD : function getOwnPropertyDescriptor(O, P) {
3671  O = toIObject(O);
3672  P = toPrimitive(P, true);
3673  if (IE8_DOM_DEFINE) try {
3674    return gOPD(O, P);
3675  } catch (e) {}
3676  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
3677};
3678
3679/***/ }),
3680/* 107 */
3681/***/ (function(module, exports, __w_pdfjs_require__) {
3682
3683"use strict";
3684
3685
3686__w_pdfjs_require__(108)('WeakMap');
3687
3688/***/ }),
3689/* 108 */
3690/***/ (function(module, exports, __w_pdfjs_require__) {
3691
3692"use strict";
3693
3694
3695var $export = __w_pdfjs_require__(7);
3696module.exports = function (COLLECTION) {
3697  $export($export.S, COLLECTION, {
3698    of: function of() {
3699      var length = arguments.length;
3700      var A = new Array(length);
3701      while (length--) {
3702        A[length] = arguments[length];
3703      }return new this(A);
3704    }
3705  });
3706};
3707
3708/***/ }),
3709/* 109 */
3710/***/ (function(module, exports, __w_pdfjs_require__) {
3711
3712"use strict";
3713
3714
3715__w_pdfjs_require__(110)('WeakMap');
3716
3717/***/ }),
3718/* 110 */
3719/***/ (function(module, exports, __w_pdfjs_require__) {
3720
3721"use strict";
3722
3723
3724var $export = __w_pdfjs_require__(7);
3725var aFunction = __w_pdfjs_require__(24);
3726var ctx = __w_pdfjs_require__(23);
3727var forOf = __w_pdfjs_require__(77);
3728module.exports = function (COLLECTION) {
3729  $export($export.S, COLLECTION, {
3730    from: function from(source) {
3731      var mapFn = arguments[1];
3732      var mapping, A, n, cb;
3733      aFunction(this);
3734      mapping = mapFn !== undefined;
3735      if (mapping) aFunction(mapFn);
3736      if (source == undefined) return new this();
3737      A = [];
3738      if (mapping) {
3739        n = 0;
3740        cb = ctx(mapFn, arguments[2], 2);
3741        forOf(source, false, function (nextItem) {
3742          A.push(cb(nextItem, n++));
3743        });
3744      } else {
3745        forOf(source, false, A.push, A);
3746      }
3747      return new this(A);
3748    }
3749  });
3750};
3751
3752/***/ }),
3753/* 111 */
3754/***/ (function(module, exports, __w_pdfjs_require__) {
3755
3756"use strict";
3757
3758
3759__w_pdfjs_require__(112);
3760module.exports = __w_pdfjs_require__(9).String.codePointAt;
3761
3762/***/ }),
3763/* 112 */
3764/***/ (function(module, exports, __w_pdfjs_require__) {
3765
3766"use strict";
3767
3768
3769var $export = __w_pdfjs_require__(7);
3770var $at = __w_pdfjs_require__(63)(false);
3771$export($export.P, 'String', {
3772  codePointAt: function codePointAt(pos) {
3773    return $at(this, pos);
3774  }
3775});
3776
3777/***/ }),
3778/* 113 */
3779/***/ (function(module, exports, __w_pdfjs_require__) {
3780
3781"use strict";
3782
3783
3784__w_pdfjs_require__(114);
3785module.exports = __w_pdfjs_require__(9).String.fromCodePoint;
3786
3787/***/ }),
3788/* 114 */
3789/***/ (function(module, exports, __w_pdfjs_require__) {
3790
3791"use strict";
3792
3793
3794var $export = __w_pdfjs_require__(7);
3795var toAbsoluteIndex = __w_pdfjs_require__(40);
3796var fromCharCode = String.fromCharCode;
3797var $fromCodePoint = String.fromCodePoint;
3798$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
3799  fromCodePoint: function fromCodePoint(x) {
3800    var res = [];
3801    var aLen = arguments.length;
3802    var i = 0;
3803    var code;
3804    while (aLen > i) {
3805      code = +arguments[i++];
3806      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
3807      res.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00));
3808    }
3809    return res.join('');
3810  }
3811});
3812
3813/***/ }),
3814/* 115 */
3815/***/ (function(module, exports, __w_pdfjs_require__) {
3816
3817"use strict";
3818
3819
3820__w_pdfjs_require__(116);
3821__w_pdfjs_require__(60);
3822module.exports = __w_pdfjs_require__(9).Symbol;
3823
3824/***/ }),
3825/* 116 */
3826/***/ (function(module, exports, __w_pdfjs_require__) {
3827
3828"use strict";
3829
3830
3831var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
3832
3833var global = __w_pdfjs_require__(8);
3834var has = __w_pdfjs_require__(21);
3835var DESCRIPTORS = __w_pdfjs_require__(15);
3836var $export = __w_pdfjs_require__(7);
3837var redefine = __w_pdfjs_require__(20);
3838var META = __w_pdfjs_require__(100).KEY;
3839var $fails = __w_pdfjs_require__(16);
3840var shared = __w_pdfjs_require__(29);
3841var setToStringTag = __w_pdfjs_require__(70);
3842var uid = __w_pdfjs_require__(22);
3843var wks = __w_pdfjs_require__(28);
3844var wksExt = __w_pdfjs_require__(117);
3845var wksDefine = __w_pdfjs_require__(118);
3846var enumKeys = __w_pdfjs_require__(119);
3847var isArray = __w_pdfjs_require__(99);
3848var anObject = __w_pdfjs_require__(12);
3849var isObject = __w_pdfjs_require__(13);
3850var toIObject = __w_pdfjs_require__(36);
3851var toPrimitive = __w_pdfjs_require__(18);
3852var createDesc = __w_pdfjs_require__(19);
3853var _create = __w_pdfjs_require__(67);
3854var gOPNExt = __w_pdfjs_require__(120);
3855var $GOPD = __w_pdfjs_require__(106);
3856var $DP = __w_pdfjs_require__(11);
3857var $keys = __w_pdfjs_require__(45);
3858var gOPD = $GOPD.f;
3859var dP = $DP.f;
3860var gOPN = gOPNExt.f;
3861var $Symbol = global.Symbol;
3862var $JSON = global.JSON;
3863var _stringify = $JSON && $JSON.stringify;
3864var PROTOTYPE = 'prototype';
3865var HIDDEN = wks('_hidden');
3866var TO_PRIMITIVE = wks('toPrimitive');
3867var isEnum = {}.propertyIsEnumerable;
3868var SymbolRegistry = shared('symbol-registry');
3869var AllSymbols = shared('symbols');
vendor: 9,271 bytes, lines 3870-4150
3870var OPSymbols = shared('op-symbols');
3871var ObjectProto = Object[PROTOTYPE];
3872var USE_NATIVE = typeof $Symbol == 'function';
3873var QObject = global.QObject;
3874var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
3875var setSymbolDesc = DESCRIPTORS && $fails(function () {
3876  return _create(dP({}, 'a', {
3877    get: function get() {
3878      return dP(this, 'a', { value: 7 }).a;
3879    }
3880  })).a != 7;
3881}) ? function (it, key, D) {
3882  var protoDesc = gOPD(ObjectProto, key);
3883  if (protoDesc) delete ObjectProto[key];
3884  dP(it, key, D);
3885  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
3886} : dP;
3887var wrap = function wrap(tag) {
3888  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
3889  sym._k = tag;
3890  return sym;
3891};
3892var isSymbol = USE_NATIVE && _typeof($Symbol.iterator) == 'symbol' ? function (it) {
3893  return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) == 'symbol';
3894} : function (it) {
3895  return it instanceof $Symbol;
3896};
3897var $defineProperty = function defineProperty(it, key, D) {
3898  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
3899  anObject(it);
3900  key = toPrimitive(key, true);
3901  anObject(D);
3902  if (has(AllSymbols, key)) {
3903    if (!D.enumerable) {
3904      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
3905      it[HIDDEN][key] = true;
3906    } else {
3907      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
3908      D = _create(D, { enumerable: createDesc(0, false) });
3909    }
3910    return setSymbolDesc(it, key, D);
3911  }
3912  return dP(it, key, D);
3913};
3914var $defineProperties = function defineProperties(it, P) {
3915  anObject(it);
3916  var keys = enumKeys(P = toIObject(P));
3917  var i = 0;
3918  var l = keys.length;
3919  var key;
3920  while (l > i) {
3921    $defineProperty(it, key = keys[i++], P[key]);
3922  }return it;
3923};
3924var $create = function create(it, P) {
3925  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
3926};
3927var $propertyIsEnumerable = function propertyIsEnumerable(key) {
3928  var E = isEnum.call(this, key = toPrimitive(key, true));
3929  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
3930  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
3931};
3932var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
3933  it = toIObject(it);
3934  key = toPrimitive(key, true);
3935  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
3936  var D = gOPD(it, key);
3937  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
3938  return D;
3939};
3940var $getOwnPropertyNames = function getOwnPropertyNames(it) {
3941  var names = gOPN(toIObject(it));
3942  var result = [];
3943  var i = 0;
3944  var key;
3945  while (names.length > i) {
3946    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
3947  }
3948  return result;
3949};
3950var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
3951  var IS_OP = it === ObjectProto;
3952  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
3953  var result = [];
3954  var i = 0;
3955  var key;
3956  while (names.length > i) {
3957    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
3958  }
3959  return result;
3960};
3961if (!USE_NATIVE) {
3962  $Symbol = function _Symbol() {
3963    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
3964    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
3965    var $set = function $set(value) {
3966      if (this === ObjectProto) $set.call(OPSymbols, value);
3967      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
3968      setSymbolDesc(this, tag, createDesc(1, value));
3969    };
3970    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {
3971      configurable: true,
3972      set: $set
3973    });
3974    return wrap(tag);
3975  };
3976  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
3977    return this._k;
3978  });
3979  $GOPD.f = $getOwnPropertyDescriptor;
3980  $DP.f = $defineProperty;
3981  __w_pdfjs_require__(121).f = gOPNExt.f = $getOwnPropertyNames;
3982  __w_pdfjs_require__(50).f = $propertyIsEnumerable;
3983  __w_pdfjs_require__(49).f = $getOwnPropertySymbols;
3984  if (DESCRIPTORS && !__w_pdfjs_require__(30)) {
3985    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
3986  }
3987  wksExt.f = function (name) {
3988    return wrap(wks(name));
3989  };
3990}
3991$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
3992for (var es6Symbols = 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) {
3993  wks(es6Symbols[j++]);
3994}for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) {
3995  wksDefine(wellKnownSymbols[k++]);
3996}$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
3997  'for': function _for(key) {
3998    return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);
3999  },
4000  keyFor: function keyFor(sym) {
4001    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
4002    for (var key in SymbolRegistry) {
4003      if (SymbolRegistry[key] === sym) return key;
4004    }
4005  },
4006  useSetter: function useSetter() {
4007    setter = true;
4008  },
4009  useSimple: function useSimple() {
4010    setter = false;
4011  }
4012});
4013$export($export.S + $export.F * !USE_NATIVE, 'Object', {
4014  create: $create,
4015  defineProperty: $defineProperty,
4016  defineProperties: $defineProperties,
4017  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
4018  getOwnPropertyNames: $getOwnPropertyNames,
4019  getOwnPropertySymbols: $getOwnPropertySymbols
4020});
4021$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
4022  var S = $Symbol();
4023  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
4024})), 'JSON', {
4025  stringify: function stringify(it) {
4026    var args = [it];
4027    var i = 1;
4028    var replacer, $replacer;
4029    while (arguments.length > i) {
4030      args.push(arguments[i++]);
4031    }$replacer = replacer = args[1];
4032    if (!isObject(replacer) && it === undefined || isSymbol(it)) return;
4033    if (!isArray(replacer)) replacer = function replacer(key, value) {
4034      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
4035      if (!isSymbol(value)) return value;
4036    };
4037    args[1] = replacer;
4038    return _stringify.apply($JSON, args);
4039  }
4040});
4041$Symbol[PROTOTYPE][TO_PRIMITIVE] || __w_pdfjs_require__(10)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
4042setToStringTag($Symbol, 'Symbol');
4043setToStringTag(Math, 'Math', true);
4044setToStringTag(global.JSON, 'JSON', true);
4045
4046/***/ }),
4047/* 117 */
4048/***/ (function(module, exports, __w_pdfjs_require__) {
4049
4050"use strict";
4051
4052
4053exports.f = __w_pdfjs_require__(28);
4054
4055/***/ }),
4056/* 118 */
4057/***/ (function(module, exports, __w_pdfjs_require__) {
4058
4059"use strict";
4060
4061
4062var global = __w_pdfjs_require__(8);
4063var core = __w_pdfjs_require__(9);
4064var LIBRARY = __w_pdfjs_require__(30);
4065var wksExt = __w_pdfjs_require__(117);
4066var defineProperty = __w_pdfjs_require__(11).f;
4067module.exports = function (name) {
4068  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
4069  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
4070};
4071
4072/***/ }),
4073/* 119 */
4074/***/ (function(module, exports, __w_pdfjs_require__) {
4075
4076"use strict";
4077
4078
4079var getKeys = __w_pdfjs_require__(45);
4080var gOPS = __w_pdfjs_require__(49);
4081var pIE = __w_pdfjs_require__(50);
4082module.exports = function (it) {
4083  var result = getKeys(it);
4084  var getSymbols = gOPS.f;
4085  if (getSymbols) {
4086    var symbols = getSymbols(it);
4087    var isEnum = pIE.f;
4088    var i = 0;
4089    var key;
4090    while (symbols.length > i) {
4091      if (isEnum.call(it, key = symbols[i++])) result.push(key);
4092    }
4093  }
4094  return result;
4095};
4096
4097/***/ }),
4098/* 120 */
4099/***/ (function(module, exports, __w_pdfjs_require__) {
4100
4101"use strict";
4102
4103
4104var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
4105
4106var toIObject = __w_pdfjs_require__(36);
4107var gOPN = __w_pdfjs_require__(121).f;
4108var toString = {}.toString;
4109var windowNames = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
4110var getWindowNames = function getWindowNames(it) {
4111  try {
4112    return gOPN(it);
4113  } catch (e) {
4114    return windowNames.slice();
4115  }
4116};
4117module.exports.f = function getOwnPropertyNames(it) {
4118  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
4119};
4120
4121/***/ }),
4122/* 121 */
4123/***/ (function(module, exports, __w_pdfjs_require__) {
4124
4125"use strict";
4126
4127
4128var $keys = __w_pdfjs_require__(46);
4129var hiddenKeys = __w_pdfjs_require__(48).concat('length', 'prototype');
4130exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
4131  return $keys(O, hiddenKeys);
4132};
4133
4134/***/ }),
4135/* 122 */
4136/***/ (function(module, exports, __w_pdfjs_require__) {
4137
4138"use strict";
4139
4140
4141__w_pdfjs_require__(123);
4142module.exports = __w_pdfjs_require__(9).Object.values;
4143
4144/***/ }),
4145/* 123 */
4146/***/ (function(module, exports, __w_pdfjs_require__) {
4147
4148"use strict";
4149
4150
4151var $export = __w_pdfjs_require__(7);
4152var $values = __w_pdfjs_require__(124)(false);
4153$export($export.S, 'Object', {
4154  values: function values(it) {
4155    return $values(it);
4156  }
4157});
4158
4159/***/ }),
4160/* 124 */
4161/***/ (function(module, exports, __w_pdfjs_require__) {
4162
4163"use strict";
4164
4165
4166var getKeys = __w_pdfjs_require__(45);
4167var toIObject = __w_pdfjs_require__(36);
4168var isEnum = __w_pdfjs_require__(50).f;
4169module.exports = function (isEntries) {
4170  return function (it) {
4171    var O = toIObject(it);
4172    var keys = getKeys(O);
4173    var length = keys.length;
4174    var i = 0;
4175    var result = [];
4176    var key;
4177    while (length > i) {
4178      if (isEnum.call(O, key = keys[i++])) {
4179        result.push(isEntries ? [key, O[key]] : O[key]);
4180      }
4181    }return result;
4182  };
4183};
4184
4185/***/ }),
4186/* 125 */
4187/***/ (function(module, exports, __w_pdfjs_require__) {
4188
4189"use strict";
4190
4191
4192var isReadableStreamSupported = false;
4193if (typeof ReadableStream !== 'undefined') {
4194  try {
4195    new ReadableStream({
4196      start: function start(controller) {
4197        controller.close();
4198      }
4199    });
4200    isReadableStreamSupported = true;
4201  } catch (e) {}
4202}
4203if (isReadableStreamSupported) {
4204  exports.ReadableStream = ReadableStream;
4205} else {
4206  exports.ReadableStream = __w_pdfjs_require__(126).ReadableStream;
4207}
4208
4209/***/ }),
4210/* 126 */
4211/***/ (function(module, exports, __w_pdfjs_require__) {
4212
4213"use strict";
4214
4215
4216var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
4217
4218(function (e, a) {
4219  for (var i in a) {
4220    e[i] = a[i];
4221  }
4222})(exports, function (modules) {
4223  var installedModules = {};
4224  function __w_pdfjs_require__(moduleId) {
4225    if (installedModules[moduleId]) return installedModules[moduleId].exports;
4226    var module = installedModules[moduleId] = {
4227      i: moduleId,
4228      l: false,
4229      exports: {}
4230    };
4231    modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
4232    module.l = true;
4233    return module.exports;
4234  }
4235  __w_pdfjs_require__.m = modules;
4236  __w_pdfjs_require__.c = installedModules;
4237  __w_pdfjs_require__.i = function (value) {
4238    return value;
4239  };
4240  __w_pdfjs_require__.d = function (exports, name, getter) {
4241    if (!__w_pdfjs_require__.o(exports, name)) {
4242      Object.defineProperty(exports, name, {
4243        configurable: false,
4244        enumerable: true,
4245        get: getter
4246      });
4247    }
4248  };
4249  __w_pdfjs_require__.n = function (module) {
4250    var getter = module && module.__esModule ? function getDefault() {
4251      return module['default'];
4252    } : function getModuleExports() {
4253      return module;
4254    };
4255    __w_pdfjs_require__.d(getter, 'a', getter);
4256    return getter;
4257  };
4258  __w_pdfjs_require__.o = function (object, property) {
4259    return Object.prototype.hasOwnProperty.call(object, property);
4260  };
4261  __w_pdfjs_require__.p = "";
4262  return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);
4263}([function (module, exports, __w_pdfjs_require__) {
4264  "use strict";
4265
4266  var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
4267    return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);
4268  } : function (obj) {
4269    return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);
4270  };
4271  var _require = __w_pdfjs_require__(1),
4272      assert = _require.assert;
4273  function IsPropertyKey(argument) {
4274    return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';
4275  }
4276  exports.typeIsObject = function (x) {
4277    return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';
4278  };
4279  exports.createDataProperty = function (o, p, v) {
4280    assert(exports.typeIsObject(o));
4281    Object.defineProperty(o, p, {
4282      value: v,
4283      writable: true,
4284      enumerable: true,
4285      configurable: true
4286    });
4287  };
4288  exports.createArrayFromList = function (elements) {
4289    return elements.slice();
4290  };
4291  exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {
4292    new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);
4293  };
4294  exports.CreateIterResultObject = function (value, done) {
4295    assert(typeof done === 'boolean');
4296    var obj = {};
4297    Object.defineProperty(obj, 'value', {
4298      value: value,
4299      enumerable: true,
4300      writable: true,
4301      configurable: true
4302    });
4303    Object.defineProperty(obj, 'done', {
4304      value: done,
4305      enumerable: true,
4306      writable: true,
4307      configurable: true
4308    });
4309    return obj;
4310  };
4311  exports.IsFiniteNonNegativeNumber = function (v) {
4312    if (Number.isNaN(v)) {
4313      return false;
4314    }
4315    if (v === Infinity) {
4316      return false;
4317    }
4318    if (v < 0) {
4319      return false;
4320    }
4321    return true;
4322  };
4323  function Call(F, V, args) {
4324    if (typeof F !== 'function') {
4325      throw new TypeError('Argument is not a function');
4326    }
4327    return Function.prototype.apply.call(F, V, args);
4328  }
4329  exports.InvokeOrNoop = function (O, P, args) {
4330    assert(O !== undefined);
4331    assert(IsPropertyKey(P));
4332    assert(Array.isArray(args));
4333    var method = O[P];
4334    if (method === undefined) {
4335      return undefined;
4336    }
4337    return Call(method, O, args);
4338  };
4339  exports.PromiseInvokeOrNoop = function (O, P, args) {
4340    assert(O !== undefined);
4341    assert(IsPropertyKey(P));
4342    assert(Array.isArray(args));
4343    try {
4344      return Promise.resolve(exports.InvokeOrNoop(O, P, args));
4345    } catch (returnValueE) {
4346      return Promise.reject(returnValueE);
4347    }
4348  };
4349  exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {
4350    assert(O !== undefined);
4351    assert(IsPropertyKey(P));
4352    assert(Array.isArray(args));
4353    assert(Array.isArray(argsF));
4354    var method = void 0;
4355    try {
4356      method = O[P];
4357    } catch (methodE) {
4358      return Promise.reject(methodE);
4359    }
4360    if (method === undefined) {
4361      return F.apply(null, argsF);
4362    }
4363    try {
4364      return Promise.resolve(Call(method, O, args));
4365    } catch (e) {
4366      return Promise.reject(e);
4367    }
4368  };
4369  exports.TransferArrayBuffer = function (O) {
4370    return O.slice();
4371  };
4372  exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {
4373    highWaterMark = Number(highWaterMark);
4374    if (Number.isNaN(highWaterMark) || highWaterMark < 0) {
4375      throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');
4376    }
4377    return highWaterMark;
4378  };
4379  exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {
4380    if (size !== undefined && typeof size !== 'function') {
4381      throw new TypeError('size property of a queuing strategy must be a function');
4382    }
4383    highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);
4384    return {
4385      size: size,
4386      highWaterMark: highWaterMark
4387    };
4388  };
4389}, function (module, exports, __w_pdfjs_require__) {
4390  "use strict";
4391
4392  function rethrowAssertionErrorRejection(e) {
4393    if (e && e.constructor === AssertionError) {
4394      setTimeout(function () {
4395        throw e;
4396      }, 0);
4397    }
4398  }
4399  function AssertionError(message) {
4400    this.name = 'AssertionError';
4401    this.message = message || '';
4402    this.stack = new Error().stack;
4403  }
4404  AssertionError.prototype = Object.create(Error.prototype);
4405  AssertionError.prototype.constructor = AssertionError;
4406  function assert(value, message) {
4407    if (!value) {
4408      throw new AssertionError(message);
4409    }
4410  }
4411  module.exports = {
4412    rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,
4413    AssertionError: AssertionError,
4414    assert: assert
4415  };
4416}, function (module, exports, __w_pdfjs_require__) {
4417  "use strict";
4418
4419  var _createClass = function () {
4420    function defineProperties(target, props) {
4421      for (var i = 0; i < props.length; i++) {
4422        var descriptor = props[i];
4423        descriptor.enumerable = descriptor.enumerable || false;
4424        descriptor.configurable = true;
4425        if ("value" in descriptor) descriptor.writable = true;
4426        Object.defineProperty(target, descriptor.key, descriptor);
4427      }
4428    }
4429    return function (Constructor, protoProps, staticProps) {
4430      if (protoProps) defineProperties(Constructor.prototype, protoProps);
4431      if (staticProps) defineProperties(Constructor, staticProps);
4432      return Constructor;
4433    };
4434  }();
4435  function _classCallCheck(instance, Constructor) {
4436    if (!(instance instanceof Constructor)) {
4437      throw new TypeError("Cannot call a class as a function");
4438    }
4439  }
4440  var _require = __w_pdfjs_require__(0),
4441      InvokeOrNoop = _require.InvokeOrNoop,
4442      PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
4443      ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
4444      typeIsObject = _require.typeIsObject;
4445  var _require2 = __w_pdfjs_require__(1),
4446      assert = _require2.assert,
4447      rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;
4448  var _require3 = __w_pdfjs_require__(3),
4449      DequeueValue = _require3.DequeueValue,
4450      EnqueueValueWithSize = _require3.EnqueueValueWithSize,
4451      PeekQueueValue = _require3.PeekQueueValue,
4452      ResetQueue = _require3.ResetQueue;
4453  var WritableStream = function () {
4454    function WritableStream() {
4455      var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4456      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
4457          size = _ref.size,
4458          _ref$highWaterMark = _ref.highWaterMark,
4459          highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;
4460      _classCallCheck(this, WritableStream);
4461      this._state = 'writable';
4462      this._storedError = undefined;
4463      this._writer = undefined;
4464      this._writableStreamController = undefined;
4465      this._writeRequests = [];
4466      this._inFlightWriteRequest = undefined;
4467      this._closeRequest = undefined;
4468      this._inFlightCloseRequest = undefined;
4469      this._pendingAbortRequest = undefined;
4470      this._backpressure = false;
4471      var type = underlyingSink.type;
4472      if (type !== undefined) {
4473        throw new RangeError('Invalid type is specified');
4474      }
4475      this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);
4476      this._writableStreamController.__startSteps();
4477    }
4478    _createClass(WritableStream, [{
4479      key: 'abort',
4480      value: function abort(reason) {
4481        if (IsWritableStream(this) === false) {
4482          return Promise.reject(streamBrandCheckException('abort'));
4483        }
4484        if (IsWritableStreamLocked(this) === true) {
4485          return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));
4486        }
4487        return WritableStreamAbort(this, reason);
4488      }
4489    }, {
4490      key: 'getWriter',
4491      value: function getWriter() {
4492        if (IsWritableStream(this) === false) {
4493          throw streamBrandCheckException('getWriter');
4494        }
4495        return AcquireWritableStreamDefaultWriter(this);
4496      }
4497    }, {
4498      key: 'locked',
4499      get: function get() {
4500        if (IsWritableStream(this) === false) {
4501          throw streamBrandCheckException('locked');
4502        }
4503        return IsWritableStreamLocked(this);
4504      }
4505    }]);
4506    return WritableStream;
4507  }();
4508  module.exports = {
4509    AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,
4510    IsWritableStream: IsWritableStream,
4511    IsWritableStreamLocked: IsWritableStreamLocked,
4512    WritableStream: WritableStream,
4513    WritableStreamAbort: WritableStreamAbort,
4514    WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,
4515    WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,
4516    WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,
4517    WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,
4518    WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight
4519  };
4520  function AcquireWritableStreamDefaultWriter(stream) {
4521    return new WritableStreamDefaultWriter(stream);
4522  }
4523  function IsWritableStream(x) {
4524    if (!typeIsObject(x)) {
4525      return false;
4526    }
4527    if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {
4528      return false;
4529    }
4530    return true;
4531  }
4532  function IsWritableStreamLocked(stream) {
4533    assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');
4534    if (stream._writer === undefined) {
4535      return false;
4536    }
4537    return true;
4538  }
4539  function WritableStreamAbort(stream, reason) {
4540    var state = stream._state;
4541    if (state === 'closed') {
4542      return Promise.resolve(undefined);
4543    }
4544    if (state === 'errored') {
4545      return Promise.reject(stream._storedError);
4546    }
4547    var error = new TypeError('Requested to abort');
4548    if (stream._pendingAbortRequest !== undefined) {
4549      return Promise.reject(error);
4550    }
4551    assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');
4552    var wasAlreadyErroring = false;
4553    if (state === 'erroring') {
4554      wasAlreadyErroring = true;
4555      reason = undefined;
4556    }
4557    var promise = new Promise(function (resolve, reject) {
4558      stream._pendingAbortRequest = {
4559        _resolve: resolve,
4560        _reject: reject,
4561        _reason: reason,
4562        _wasAlreadyErroring: wasAlreadyErroring
4563      };
4564    });
4565    if (wasAlreadyErroring === false) {
4566      WritableStreamStartErroring(stream, error);
4567    }
4568    return promise;
4569  }
4570  function WritableStreamAddWriteRequest(stream) {
4571    assert(IsWritableStreamLocked(stream) === true);
4572    assert(stream._state === 'writable');
4573    var promise = new Promise(function (resolve, reject) {
4574      var writeRequest = {
4575        _resolve: resolve,
4576        _reject: reject
4577      };
4578      stream._writeRequests.push(writeRequest);
4579    });
4580    return promise;
4581  }
4582  function WritableStreamDealWithRejection(stream, error) {
4583    var state = stream._state;
4584    if (state === 'writable') {
4585      WritableStreamStartErroring(stream, error);
4586      return;
4587    }
4588    assert(state === 'erroring');
4589    WritableStreamFinishErroring(stream);
4590  }
4591  function WritableStreamStartErroring(stream, reason) {
4592    assert(stream._storedError === undefined, 'stream._storedError === undefined');
4593    assert(stream._state === 'writable', 'state must be writable');
4594    var controller = stream._writableStreamController;
4595    assert(controller !== undefined, 'controller must not be undefined');
4596    stream._state = 'erroring';
4597    stream._storedError = reason;
4598    var writer = stream._writer;
4599    if (writer !== undefined) {
4600      WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);
4601    }
4602    if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {
4603      WritableStreamFinishErroring(stream);
4604    }
4605  }
4606  function WritableStreamFinishErroring(stream) {
4607    assert(stream._state === 'erroring', 'stream._state === erroring');
4608    assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');
4609    stream._state = 'errored';
4610    stream._writableStreamController.__errorSteps();
4611    var storedError = stream._storedError;
4612    for (var i = 0; i < stream._writeRequests.length; i++) {
4613      var writeRequest = stream._writeRequests[i];
4614      writeRequest._reject(storedError);
4615    }
4616    stream._writeRequests = [];
4617    if (stream._pendingAbortRequest === undefined) {
4618      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
4619      return;
4620    }
4621    var abortRequest = stream._pendingAbortRequest;
4622    stream._pendingAbortRequest = undefined;
4623    if (abortRequest._wasAlreadyErroring === true) {
4624      abortRequest._reject(storedError);
4625      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
4626      return;
4627    }
4628    var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);
4629    promise.then(function () {
4630      abortRequest._resolve();
4631      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
4632    }, function (reason) {
4633      abortRequest._reject(reason);
4634      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
4635    });
4636  }
4637  function WritableStreamFinishInFlightWrite(stream) {
4638    assert(stream._inFlightWriteRequest !== undefined);
4639    stream._inFlightWriteRequest._resolve(undefined);
4640    stream._inFlightWriteRequest = undefined;
4641  }
4642  function WritableStreamFinishInFlightWriteWithError(stream, error) {
4643    assert(stream._inFlightWriteRequest !== undefined);
4644    stream._inFlightWriteRequest._reject(error);
4645    stream._inFlightWriteRequest = undefined;
4646    assert(stream._state === 'writable' || stream._state === 'erroring');
4647    WritableStreamDealWithRejection(stream, error);
4648  }
4649  function WritableStreamFinishInFlightClose(stream) {
4650    assert(stream._inFlightCloseRequest !== undefined);
4651    stream._inFlightCloseRequest._resolve(undefined);
4652    stream._inFlightCloseRequest = undefined;
4653    var state = stream._state;
4654    assert(state === 'writable' || state === 'erroring');
4655    if (state === 'erroring') {
4656      stream._storedError = undefined;
4657      if (stream._pendingAbortRequest !== undefined) {
4658        stream._pendingAbortRequest._resolve();
4659        stream._pendingAbortRequest = undefined;
4660      }
4661    }
4662    stream._state = 'closed';
4663    var writer = stream._writer;
4664    if (writer !== undefined) {
4665      defaultWriterClosedPromiseResolve(writer);
4666    }
4667    assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');
4668    assert(stream._storedError === undefined, 'stream._storedError === undefined');
4669  }
4670  function WritableStreamFinishInFlightCloseWithError(stream, error) {
4671    assert(stream._inFlightCloseRequest !== undefined);
4672    stream._inFlightCloseRequest._reject(error);
4673    stream._inFlightCloseRequest = undefined;
4674    assert(stream._state === 'writable' || stream._state === 'erroring');
4675    if (stream._pendingAbortRequest !== undefined) {
4676      stream._pendingAbortRequest._reject(error);
4677      stream._pendingAbortRequest = undefined;
4678    }
4679    WritableStreamDealWithRejection(stream, error);
4680  }
4681  function WritableStreamCloseQueuedOrInFlight(stream) {
4682    if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {
4683      return false;
4684    }
4685    return true;
4686  }
4687  function WritableStreamHasOperationMarkedInFlight(stream) {
4688    if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {
4689      return false;
4690    }
4691    return true;
4692  }
4693  function WritableStreamMarkCloseRequestInFlight(stream) {
4694    assert(stream._inFlightCloseRequest === undefined);
4695    assert(stream._closeRequest !== undefined);
4696    stream._inFlightCloseRequest = stream._closeRequest;
4697    stream._closeRequest = undefined;
4698  }
4699  function WritableStreamMarkFirstWriteRequestInFlight(stream) {
4700    assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');
4701    assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');
4702    stream._inFlightWriteRequest = stream._writeRequests.shift();
4703  }
4704  function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {
4705    assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`');
4706    if (stream._closeRequest !== undefined) {
4707      assert(stream._inFlightCloseRequest === undefined);
4708      stream._closeRequest._reject(stream._storedError);
4709      stream._closeRequest = undefined;
4710    }
4711    var writer = stream._writer;
4712    if (writer !== undefined) {
4713      defaultWriterClosedPromiseReject(writer, stream._storedError);
4714      writer._closedPromise.catch(function () {});
4715    }
4716  }
4717  function WritableStreamUpdateBackpressure(stream, backpressure) {
4718    assert(stream._state === 'writable');
4719    assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
4720    var writer = stream._writer;
4721    if (writer !== undefined && backpressure !== stream._backpressure) {
4722      if (backpressure === true) {
4723        defaultWriterReadyPromiseReset(writer);
4724      } else {
4725        assert(backpressure === false);
4726        defaultWriterReadyPromiseResolve(writer);
4727      }
4728    }
4729    stream._backpressure = backpressure;
4730  }
4731  var WritableStreamDefaultWriter = function () {
4732    function WritableStreamDefaultWriter(stream) {
4733      _classCallCheck(this, WritableStreamDefaultWriter);
4734      if (IsWritableStream(stream) === false) {
4735        throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');
4736      }
4737      if (IsWritableStreamLocked(stream) === true) {
4738        throw new TypeError('This stream has already been locked for exclusive writing by another writer');
4739      }
4740      this._ownerWritableStream = stream;
4741      stream._writer = this;
4742      var state = stream._state;
4743      if (state === 'writable') {
4744        if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {
4745          defaultWriterReadyPromiseInitialize(this);
4746        } else {
4747          defaultWriterReadyPromiseInitializeAsResolved(this);
4748        }
4749        defaultWriterClosedPromiseInitialize(this);
4750      } else if (state === 'erroring') {
4751        defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);
4752        this._readyPromise.catch(function () {});
4753        defaultWriterClosedPromiseInitialize(this);
4754      } else if (state === 'closed') {
4755        defaultWriterReadyPromiseInitializeAsResolved(this);
4756        defaultWriterClosedPromiseInitializeAsResolved(this);
4757      } else {
4758        assert(state === 'errored', 'state must be errored');
4759        var storedError = stream._storedError;
4760        defaultWriterReadyPromiseInitializeAsRejected(this, storedError);
4761        this._readyPromise.catch(function () {});
4762        defaultWriterClosedPromiseInitializeAsRejected(this, storedError);
4763        this._closedPromise.catch(function () {});
4764      }
4765    }
4766    _createClass(WritableStreamDefaultWriter, [{
4767      key: 'abort',
4768      value: function abort(reason) {
4769        if (IsWritableStreamDefaultWriter(this) === false) {
4770          return Promise.reject(defaultWriterBrandCheckException('abort'));
4771        }
4772        if (this._ownerWritableStream === undefined) {
4773          return Promise.reject(defaultWriterLockException('abort'));
4774        }
4775        return WritableStreamDefaultWriterAbort(this, reason);
4776      }
4777    }, {
4778      key: 'close',
4779      value: function close() {
4780        if (IsWritableStreamDefaultWriter(this) === false) {
4781          return Promise.reject(defaultWriterBrandCheckException('close'));
4782        }
4783        var stream = this._ownerWritableStream;
4784        if (stream === undefined) {
4785          return Promise.reject(defaultWriterLockException('close'));
4786        }
4787        if (WritableStreamCloseQueuedOrInFlight(stream) === true) {
4788          return Promise.reject(new TypeError('cannot close an already-closing stream'));
4789        }
4790        return WritableStreamDefaultWriterClose(this);
4791      }
4792    }, {
4793      key: 'releaseLock',
4794      value: function releaseLock() {
4795        if (IsWritableStreamDefaultWriter(this) === false) {
4796          throw defaultWriterBrandCheckException('releaseLock');
4797        }
4798        var stream = this._ownerWritableStream;
4799        if (stream === undefined) {
4800          return;
4801        }
4802        assert(stream._writer !== undefined);
4803        WritableStreamDefaultWriterRelease(this);
4804      }
4805    }, {
4806      key: 'write',
4807      value: function write(chunk) {
4808        if (IsWritableStreamDefaultWriter(this) === false) {
4809          return Promise.reject(defaultWriterBrandCheckException('write'));
4810        }
4811        if (this._ownerWritableStream === undefined) {
4812          return Promise.reject(defaultWriterLockException('write to'));
4813        }
4814        return WritableStreamDefaultWriterWrite(this, chunk);
4815      }
4816    }, {
4817      key: 'closed',
4818      get: function get() {
4819        if (IsWritableStreamDefaultWriter(this) === false) {
4820          return Promise.reject(defaultWriterBrandCheckException('closed'));
4821        }
4822        return this._closedPromise;
4823      }
4824    }, {
4825      key: 'desiredSize',
4826      get: function get() {
4827        if (IsWritableStreamDefaultWriter(this) === false) {
4828          throw defaultWriterBrandCheckException('desiredSize');
4829        }
4830        if (this._ownerWritableStream === undefined) {
4831          throw defaultWriterLockException('desiredSize');
4832        }
4833        return WritableStreamDefaultWriterGetDesiredSize(this);
4834      }
4835    }, {
4836      key: 'ready',
4837      get: function get() {
4838        if (IsWritableStreamDefaultWriter(this) === false) {
4839          return Promise.reject(defaultWriterBrandCheckException('ready'));
4840        }
4841        return this._readyPromise;
4842      }
4843    }]);
4844    return WritableStreamDefaultWriter;
4845  }();
4846  function IsWritableStreamDefaultWriter(x) {
4847    if (!typeIsObject(x)) {
4848      return false;
4849    }
4850    if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {
4851      return false;
4852    }
4853    return true;
4854  }
4855  function WritableStreamDefaultWriterAbort(writer, reason) {
4856    var stream = writer._ownerWritableStream;
4857    assert(stream !== undefined);
4858    return WritableStreamAbort(stream, reason);
4859  }
4860  function WritableStreamDefaultWriterClose(writer) {
4861    var stream = writer._ownerWritableStream;
4862    assert(stream !== undefined);
4863    var state = stream._state;
4864    if (state === 'closed' || state === 'errored') {
4865      return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));
4866    }
4867    assert(state === 'writable' || state === 'erroring');
4868    assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
4869    var promise = new Promise(function (resolve, reject) {
4870      var closeRequest = {
4871        _resolve: resolve,
4872        _reject: reject
4873      };
4874      stream._closeRequest = closeRequest;
4875    });
4876    if (stream._backpressure === true && state === 'writable') {
4877      defaultWriterReadyPromiseResolve(writer);
4878    }
4879    WritableStreamDefaultControllerClose(stream._writableStreamController);
4880    return promise;
4881  }
4882  function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {
4883    var stream = writer._ownerWritableStream;
4884    assert(stream !== undefined);
4885    var state = stream._state;
4886    if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
4887      return Promise.resolve();
4888    }
4889    if (state === 'errored') {
4890      return Promise.reject(stream._storedError);
4891    }
4892    assert(state === 'writable' || state === 'erroring');
4893    return WritableStreamDefaultWriterClose(writer);
4894  }
4895  function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {
4896    if (writer._closedPromiseState === 'pending') {
4897      defaultWriterClosedPromiseReject(writer, error);
4898    } else {
4899      defaultWriterClosedPromiseResetToRejected(writer, error);
4900    }
4901    writer._closedPromise.catch(function () {});
4902  }
4903  function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {
4904    if (writer._readyPromiseState === 'pending') {
4905      defaultWriterReadyPromiseReject(writer, error);
4906    } else {
4907      defaultWriterReadyPromiseResetToRejected(writer, error);
4908    }
4909    writer._readyPromise.catch(function () {});
4910  }
4911  function WritableStreamDefaultWriterGetDesiredSize(writer) {
4912    var stream = writer._ownerWritableStream;
4913    var state = stream._state;
4914    if (state === 'errored' || state === 'erroring') {
4915      return null;
4916    }
4917    if (state === 'closed') {
4918      return 0;
4919    }
4920    return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);
4921  }
4922  function WritableStreamDefaultWriterRelease(writer) {
4923    var stream = writer._ownerWritableStream;
4924    assert(stream !== undefined);
4925    assert(stream._writer === writer);
4926    var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness');
4927    WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);
4928    WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);
4929    stream._writer = undefined;
4930    writer._ownerWritableStream = undefined;
4931  }
4932  function WritableStreamDefaultWriterWrite(writer, chunk) {
4933    var stream = writer._ownerWritableStream;
4934    assert(stream !== undefined);
4935    var controller = stream._writableStreamController;
4936    var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);
4937    if (stream !== writer._ownerWritableStream) {
4938      return Promise.reject(defaultWriterLockException('write to'));
4939    }
4940    var state = stream._state;
4941    if (state === 'errored') {
4942      return Promise.reject(stream._storedError);
4943    }
4944    if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
4945      return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));
4946    }
4947    if (state === 'erroring') {
4948      return Promise.reject(stream._storedError);
4949    }
4950    assert(state === 'writable');
4951    var promise = WritableStreamAddWriteRequest(stream);
4952    WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);
4953    return promise;
4954  }
4955  var WritableStreamDefaultController = function () {
4956    function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {
4957      _classCallCheck(this, WritableStreamDefaultController);
4958      if (IsWritableStream(stream) === false) {
4959        throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');
4960      }
4961      if (stream._writableStreamController !== undefined) {
4962        throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');
4963      }
4964      this._controlledWritableStream = stream;
4965      this._underlyingSink = underlyingSink;
4966      this._queue = undefined;
4967      this._queueTotalSize = undefined;
4968      ResetQueue(this);
4969      this._started = false;
4970      var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
4971      this._strategySize = normalizedStrategy.size;
4972      this._strategyHWM = normalizedStrategy.highWaterMark;
4973      var backpressure = WritableStreamDefaultControllerGetBackpressure(this);
4974      WritableStreamUpdateBackpressure(stream, backpressure);
4975    }
4976    _createClass(WritableStreamDefaultController, [{
4977      key: 'error',
4978      value: function error(e) {
4979        if (IsWritableStreamDefaultController(this) === false) {
4980          throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');
4981        }
4982        var state = this._controlledWritableStream._state;
4983        if (state !== 'writable') {
4984          return;
4985        }
4986        WritableStreamDefaultControllerError(this, e);
4987      }
4988    }, {
4989      key: '__abortSteps',
4990      value: function __abortSteps(reason) {
4991        return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);
4992      }
4993    }, {
4994      key: '__errorSteps',
4995      value: function __errorSteps() {
4996        ResetQueue(this);
4997      }
4998    }, {
4999      key: '__startSteps',
5000      value: function __startSteps() {
5001        var _this = this;
5002        var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);
5003        var stream = this._controlledWritableStream;
5004        Promise.resolve(startResult).then(function () {
5005          assert(stream._state === 'writable' || stream._state === 'erroring');
5006          _this._started = true;
5007          WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);
5008        }, function (r) {
5009          assert(stream._state === 'writable' || stream._state === 'erroring');
5010          _this._started = true;
5011          WritableStreamDealWithRejection(stream, r);
5012        }).catch(rethrowAssertionErrorRejection);
5013      }
5014    }]);
5015    return WritableStreamDefaultController;
5016  }();
5017  function WritableStreamDefaultControllerClose(controller) {
5018    EnqueueValueWithSize(controller, 'close', 0);
5019    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
5020  }
5021  function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {
5022    var strategySize = controller._strategySize;
5023    if (strategySize === undefined) {
5024      return 1;
5025    }
5026    try {
5027      return strategySize(chunk);
5028    } catch (chunkSizeE) {
5029      WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
5030      return 1;
5031    }
5032  }
5033  function WritableStreamDefaultControllerGetDesiredSize(controller) {
5034    return controller._strategyHWM - controller._queueTotalSize;
5035  }
5036  function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {
5037    var writeRecord = { chunk: chunk };
5038    try {
5039      EnqueueValueWithSize(controller, writeRecord, chunkSize);
5040    } catch (enqueueE) {
5041      WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
5042      return;
5043    }
5044    var stream = controller._controlledWritableStream;
5045    if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {
5046      var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
5047      WritableStreamUpdateBackpressure(stream, backpressure);
5048    }
5049    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
5050  }
5051  function IsWritableStreamDefaultController(x) {
5052    if (!typeIsObject(x)) {
5053      return false;
5054    }
5055    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {
5056      return false;
5057    }
5058    return true;
5059  }
5060  function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {
5061    var stream = controller._controlledWritableStream;
5062    if (controller._started === false) {
5063      return;
5064    }
5065    if (stream._inFlightWriteRequest !== undefined) {
5066      return;
5067    }
5068    var state = stream._state;
5069    if (state === 'closed' || state === 'errored') {
5070      return;
5071    }
5072    if (state === 'erroring') {
5073      WritableStreamFinishErroring(stream);
5074      return;
5075    }
5076    if (controller._queue.length === 0) {
5077      return;
5078    }
5079    var writeRecord = PeekQueueValue(controller);
5080    if (writeRecord === 'close') {
5081      WritableStreamDefaultControllerProcessClose(controller);
5082    } else {
5083      WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);
5084    }
5085  }
5086  function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {
5087    if (controller._controlledWritableStream._state === 'writable') {
5088      WritableStreamDefaultControllerError(controller, error);
5089    }
5090  }
5091  function WritableStreamDefaultControllerProcessClose(controller) {
5092    var stream = controller._controlledWritableStream;
5093    WritableStreamMarkCloseRequestInFlight(stream);
5094    DequeueValue(controller);
5095    assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');
5096    var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);
5097    sinkClosePromise.then(function () {
5098      WritableStreamFinishInFlightClose(stream);
5099    }, function (reason) {
5100      WritableStreamFinishInFlightCloseWithError(stream, reason);
5101    }).catch(rethrowAssertionErrorRejection);
5102  }
5103  function WritableStreamDefaultControllerProcessWrite(controller, chunk) {
5104    var stream = controller._controlledWritableStream;
5105    WritableStreamMarkFirstWriteRequestInFlight(stream);
5106    var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);
5107    sinkWritePromise.then(function () {
5108      WritableStreamFinishInFlightWrite(stream);
5109      var state = stream._state;
5110      assert(state === 'writable' || state === 'erroring');
5111      DequeueValue(controller);
5112      if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {
5113        var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
5114        WritableStreamUpdateBackpressure(stream, backpressure);
5115      }
5116      WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
5117    }, function (reason) {
5118      WritableStreamFinishInFlightWriteWithError(stream, reason);
5119    }).catch(rethrowAssertionErrorRejection);
5120  }
5121  function WritableStreamDefaultControllerGetBackpressure(controller) {
5122    var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);
5123    return desiredSize <= 0;
5124  }
5125  function WritableStreamDefaultControllerError(controller, error) {
5126    var stream = controller._controlledWritableStream;
5127    assert(stream._state === 'writable');
5128    WritableStreamStartErroring(stream, error);
5129  }
5130  function streamBrandCheckException(name) {
5131    return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');
5132  }
5133  function defaultWriterBrandCheckException(name) {
5134    return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');
5135  }
5136  function defaultWriterLockException(name) {
5137    return new TypeError('Cannot ' + name + ' a stream using a released writer');
5138  }
5139  function defaultWriterClosedPromiseInitialize(writer) {
5140    writer._closedPromise = new Promise(function (resolve, reject) {
5141      writer._closedPromise_resolve = resolve;
5142      writer._closedPromise_reject = reject;
5143      writer._closedPromiseState = 'pending';
5144    });
5145  }
5146  function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {
5147    writer._closedPromise = Promise.reject(reason);
5148    writer._closedPromise_resolve = undefined;
5149    writer._closedPromise_reject = undefined;
5150    writer._closedPromiseState = 'rejected';
5151  }
5152  function defaultWriterClosedPromiseInitializeAsResolved(writer) {
5153    writer._closedPromise = Promise.resolve(undefined);
5154    writer._closedPromise_resolve = undefined;
5155    writer._closedPromise_reject = undefined;
5156    writer._closedPromiseState = 'resolved';
5157  }
5158  function defaultWriterClosedPromiseReject(writer, reason) {
5159    assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
5160    assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
5161    assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
5162    writer._closedPromise_reject(reason);
5163    writer._closedPromise_resolve = undefined;
5164    writer._closedPromise_reject = undefined;
5165    writer._closedPromiseState = 'rejected';
5166  }
5167  function defaultWriterClosedPromiseResetToRejected(writer, reason) {
5168    assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');
5169    assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');
5170    assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');
5171    writer._closedPromise = Promise.reject(reason);
5172    writer._closedPromiseState = 'rejected';
5173  }
5174  function defaultWriterClosedPromiseResolve(writer) {
5175    assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
5176    assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
5177    assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
5178    writer._closedPromise_resolve(undefined);
5179    writer._closedPromise_resolve = undefined;
5180    writer._closedPromise_reject = undefined;
5181    writer._closedPromiseState = 'resolved';
5182  }
5183  function defaultWriterReadyPromiseInitialize(writer) {
5184    writer._readyPromise = new Promise(function (resolve, reject) {
5185      writer._readyPromise_resolve = resolve;
5186      writer._readyPromise_reject = reject;
5187    });
5188    writer._readyPromiseState = 'pending';
5189  }
5190  function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {
5191    writer._readyPromise = Promise.reject(reason);
5192    writer._readyPromise_resolve = undefined;
5193    writer._readyPromise_reject = undefined;
5194    writer._readyPromiseState = 'rejected';
5195  }
5196  function defaultWriterReadyPromiseInitializeAsResolved(writer) {
5197    writer._readyPromise = Promise.resolve(undefined);
5198    writer._readyPromise_resolve = undefined;
5199    writer._readyPromise_reject = undefined;
5200    writer._readyPromiseState = 'fulfilled';
5201  }
5202  function defaultWriterReadyPromiseReject(writer, reason) {
5203    assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
5204    assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
5205    writer._readyPromise_reject(reason);
5206    writer._readyPromise_resolve = undefined;
5207    writer._readyPromise_reject = undefined;
5208    writer._readyPromiseState = 'rejected';
5209  }
5210  function defaultWriterReadyPromiseReset(writer) {
5211    assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
5212    assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
5213    writer._readyPromise = new Promise(function (resolve, reject) {
5214      writer._readyPromise_resolve = resolve;
5215      writer._readyPromise_reject = reject;
5216    });
5217    writer._readyPromiseState = 'pending';
5218  }
5219  function defaultWriterReadyPromiseResetToRejected(writer, reason) {
5220    assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
5221    assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
5222    writer._readyPromise = Promise.reject(reason);
5223    writer._readyPromiseState = 'rejected';
5224  }
5225  function defaultWriterReadyPromiseResolve(writer) {
5226    assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
5227    assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
5228    writer._readyPromise_resolve(undefined);
5229    writer._readyPromise_resolve = undefined;
5230    writer._readyPromise_reject = undefined;
5231    writer._readyPromiseState = 'fulfilled';
5232  }
5233}, function (module, exports, __w_pdfjs_require__) {
5234  "use strict";
5235
5236  var _require = __w_pdfjs_require__(0),
5237      IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;
5238  var _require2 = __w_pdfjs_require__(1),
5239      assert = _require2.assert;
5240  exports.DequeueValue = function (container) {
5241    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
5242    assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');
5243    var pair = container._queue.shift();
5244    container._queueTotalSize -= pair.size;
5245    if (container._queueTotalSize < 0) {
5246      container._queueTotalSize = 0;
5247    }
5248    return pair.value;
5249  };
5250  exports.EnqueueValueWithSize = function (container, value, size) {
5251    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');
5252    size = Number(size);
5253    if (!IsFiniteNonNegativeNumber(size)) {
5254      throw new RangeError('Size must be a finite, non-NaN, non-negative number.');
5255    }
5256    container._queue.push({
5257      value: value,
5258      size: size
5259    });
5260    container._queueTotalSize += size;
5261  };
5262  exports.PeekQueueValue = function (container) {
5263    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
5264    assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');
5265    var pair = container._queue[0];
5266    return pair.value;
5267  };
5268  exports.ResetQueue = function (container) {
5269    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');
5270    container._queue = [];
5271    container._queueTotalSize = 0;
5272  };
5273}, function (module, exports, __w_pdfjs_require__) {
5274  "use strict";
5275
5276  var _createClass = function () {
5277    function defineProperties(target, props) {
5278      for (var i = 0; i < props.length; i++) {
5279        var descriptor = props[i];
5280        descriptor.enumerable = descriptor.enumerable || false;
5281        descriptor.configurable = true;
5282        if ("value" in descriptor) descriptor.writable = true;
5283        Object.defineProperty(target, descriptor.key, descriptor);
5284      }
5285    }
5286    return function (Constructor, protoProps, staticProps) {
5287      if (protoProps) defineProperties(Constructor.prototype, protoProps);
5288      if (staticProps) defineProperties(Constructor, staticProps);
5289      return Constructor;
5290    };
5291  }();
5292  function _classCallCheck(instance, Constructor) {
5293    if (!(instance instanceof Constructor)) {
5294      throw new TypeError("Cannot call a class as a function");
5295    }
5296  }
5297  var _require = __w_pdfjs_require__(0),
5298      ArrayBufferCopy = _require.ArrayBufferCopy,
5299      CreateIterResultObject = _require.CreateIterResultObject,
5300      IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,
5301      InvokeOrNoop = _require.InvokeOrNoop,
5302      PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
5303      TransferArrayBuffer = _require.TransferArrayBuffer,
5304      ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
5305      ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;
5306  var _require2 = __w_pdfjs_require__(0),
5307      createArrayFromList = _require2.createArrayFromList,
5308      createDataProperty = _require2.createDataProperty,
5309      typeIsObject = _require2.typeIsObject;
5310  var _require3 = __w_pdfjs_require__(1),
5311      assert = _require3.assert,
5312      rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;
5313  var _require4 = __w_pdfjs_require__(3),
5314      DequeueValue = _require4.DequeueValue,
5315      EnqueueValueWithSize = _require4.EnqueueValueWithSize,
5316      ResetQueue = _require4.ResetQueue;
5317  var _require5 = __w_pdfjs_require__(2),
5318      AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,
5319      IsWritableStream = _require5.IsWritableStream,
5320      IsWritableStreamLocked = _require5.IsWritableStreamLocked,
5321      WritableStreamAbort = _require5.WritableStreamAbort,
5322      WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,
5323      WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,
5324      WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,
5325      WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;
5326  var ReadableStream = function () {
5327    function ReadableStream() {
5328      var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5329      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
5330          size = _ref.size,
5331          highWaterMark = _ref.highWaterMark;
5332      _classCallCheck(this, ReadableStream);
5333      this._state = 'readable';
5334      this._reader = undefined;
5335      this._storedError = undefined;
5336      this._disturbed = false;
5337      this._readableStreamController = undefined;
5338      var type = underlyingSource.type;
5339      var typeString = String(type);
5340      if (typeString === 'bytes') {
5341        if (highWaterMark === undefined) {
5342          highWaterMark = 0;
5343        }
5344        this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);
5345      } else if (type === undefined) {
5346        if (highWaterMark === undefined) {
5347          highWaterMark = 1;
5348        }
5349        this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);
5350      } else {
5351        throw new RangeError('Invalid type is specified');
5352      }
5353    }
5354    _createClass(ReadableStream, [{
5355      key: 'cancel',
5356      value: function cancel(reason) {
5357        if (IsReadableStream(this) === false) {
5358          return Promise.reject(streamBrandCheckException('cancel'));
5359        }
5360        if (IsReadableStreamLocked(this) === true) {
5361          return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));
5362        }
5363        return ReadableStreamCancel(this, reason);
5364      }
5365    }, {
5366      key: 'getReader',
5367      value: function getReader() {
5368        var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
5369            mode = _ref2.mode;
5370        if (IsReadableStream(this) === false) {
5371          throw streamBrandCheckException('getReader');
5372        }
5373        if (mode === undefined) {
5374          return AcquireReadableStreamDefaultReader(this);
5375        }
5376        mode = String(mode);
5377        if (mode === 'byob') {
5378          return AcquireReadableStreamBYOBReader(this);
5379        }
5380        throw new RangeError('Invalid mode is specified');
5381      }
5382    }, {
5383      key: 'pipeThrough',
5384      value: function pipeThrough(_ref3, options) {
5385        var writable = _ref3.writable,
5386            readable = _ref3.readable;
5387        var promise = this.pipeTo(writable, options);
5388        ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);
5389        return readable;
5390      }
5391    }, {
5392      key: 'pipeTo',
5393      value: function pipeTo(dest) {
5394        var _this = this;
5395        var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
5396            preventClose = _ref4.preventClose,
5397            preventAbort = _ref4.preventAbort,
5398            preventCancel = _ref4.preventCancel;
5399        if (IsReadableStream(this) === false) {
5400          return Promise.reject(streamBrandCheckException('pipeTo'));
5401        }
5402        if (IsWritableStream(dest) === false) {
5403          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream'));
5404        }
5405        preventClose = Boolean(preventClose);
5406        preventAbort = Boolean(preventAbort);
5407        preventCancel = Boolean(preventCancel);
5408        if (IsReadableStreamLocked(this) === true) {
5409          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));
5410        }
5411        if (IsWritableStreamLocked(dest) === true) {
5412          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));
5413        }
5414        var reader = AcquireReadableStreamDefaultReader(this);
5415        var writer = AcquireWritableStreamDefaultWriter(dest);
5416        var shuttingDown = false;
5417        var currentWrite = Promise.resolve();
5418        return new Promise(function (resolve, reject) {
5419          function pipeLoop() {
5420            currentWrite = Promise.resolve();
5421            if (shuttingDown === true) {
5422              return Promise.resolve();
5423            }
5424            return writer._readyPromise.then(function () {
5425              return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {
5426                var value = _ref5.value,
5427                    done = _ref5.done;
5428                if (done === true) {
5429                  return;
5430                }
5431                currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});
5432              });
5433            }).then(pipeLoop);
5434          }
5435          isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {
5436            if (preventAbort === false) {
5437              shutdownWithAction(function () {
5438                return WritableStreamAbort(dest, storedError);
5439              }, true, storedError);
5440            } else {
5441              shutdown(true, storedError);
5442            }
5443          });
5444          isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {
5445            if (preventCancel === false) {
5446              shutdownWithAction(function () {
5447                return ReadableStreamCancel(_this, storedError);
5448              }, true, storedError);
5449            } else {
5450              shutdown(true, storedError);
5451            }
5452          });
5453          isOrBecomesClosed(_this, reader._closedPromise, function () {
5454            if (preventClose === false) {
5455              shutdownWithAction(function () {
5456                return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);
5457              });
5458            } else {
5459              shutdown();
5460            }
5461          });
5462          if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {
5463            var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');
5464            if (preventCancel === false) {
5465              shutdownWithAction(function () {
5466                return ReadableStreamCancel(_this, destClosed);
5467              }, true, destClosed);
5468            } else {
5469              shutdown(true, destClosed);
5470            }
5471          }
5472          pipeLoop().catch(function (err) {
5473            currentWrite = Promise.resolve();
5474            rethrowAssertionErrorRejection(err);
5475          });
5476          function waitForWritesToFinish() {
5477            var oldCurrentWrite = currentWrite;
5478            return currentWrite.then(function () {
5479              return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;
5480            });
5481          }
5482          function isOrBecomesErrored(stream, promise, action) {
5483            if (stream._state === 'errored') {
5484              action(stream._storedError);
5485            } else {
5486              promise.catch(action).catch(rethrowAssertionErrorRejection);
5487            }
5488          }
5489          function isOrBecomesClosed(stream, promise, action) {
5490            if (stream._state === 'closed') {
5491              action();
5492            } else {
5493              promise.then(action).catch(rethrowAssertionErrorRejection);
5494            }
5495          }
5496          function shutdownWithAction(action, originalIsError, originalError) {
5497            if (shuttingDown === true) {
5498              return;
5499            }
5500            shuttingDown = true;
5501            if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
5502              waitForWritesToFinish().then(doTheRest);
5503            } else {
5504              doTheRest();
5505            }
5506            function doTheRest() {
5507              action().then(function () {
5508                return finalize(originalIsError, originalError);
5509              }, function (newError) {
5510                return finalize(true, newError);
5511              }).catch(rethrowAssertionErrorRejection);
5512            }
5513          }
5514          function shutdown(isError, error) {
5515            if (shuttingDown === true) {
5516              return;
5517            }
5518            shuttingDown = true;
5519            if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
5520              waitForWritesToFinish().then(function () {
5521                return finalize(isError, error);
5522              }).catch(rethrowAssertionErrorRejection);
5523            } else {
5524              finalize(isError, error);
5525            }
5526          }
5527          function finalize(isError, error) {
5528            WritableStreamDefaultWriterRelease(writer);
5529            ReadableStreamReaderGenericRelease(reader);
5530            if (isError) {
5531              reject(error);
5532            } else {
5533              resolve(undefined);
5534            }
5535          }
5536        });
5537      }
5538    }, {
5539      key: 'tee',
5540      value: function tee() {
5541        if (IsReadableStream(this) === false) {
5542          throw streamBrandCheckException('tee');
5543        }
5544        var branches = ReadableStreamTee(this, false);
5545        return createArrayFromList(branches);
5546      }
5547    }, {
5548      key: 'locked',
5549      get: function get() {
5550        if (IsReadableStream(this) === false) {
5551          throw streamBrandCheckException('locked');
5552        }
5553        return IsReadableStreamLocked(this);
5554      }
5555    }]);
5556    return ReadableStream;
5557  }();
5558  module.exports = {
5559    ReadableStream: ReadableStream,
5560    IsReadableStreamDisturbed: IsReadableStreamDisturbed,
5561    ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,
5562    ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,
5563    ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,
5564    ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize
5565  };
5566  function AcquireReadableStreamBYOBReader(stream) {
5567    return new ReadableStreamBYOBReader(stream);
5568  }
5569  function AcquireReadableStreamDefaultReader(stream) {
5570    return new ReadableStreamDefaultReader(stream);
5571  }
5572  function IsReadableStream(x) {
5573    if (!typeIsObject(x)) {
5574      return false;
5575    }
5576    if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {
5577      return false;
5578    }
5579    return true;
5580  }
5581  function IsReadableStreamDisturbed(stream) {
5582    assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');
5583    return stream._disturbed;
5584  }
5585  function IsReadableStreamLocked(stream) {
5586    assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');
5587    if (stream._reader === undefined) {
5588      return false;
5589    }
5590    return true;
5591  }
5592  function ReadableStreamTee(stream, cloneForBranch2) {
5593    assert(IsReadableStream(stream) === true);
5594    assert(typeof cloneForBranch2 === 'boolean');
5595    var reader = AcquireReadableStreamDefaultReader(stream);
5596    var teeState = {
5597      closedOrErrored: false,
5598      canceled1: false,
5599      canceled2: false,
5600      reason1: undefined,
5601      reason2: undefined
5602    };
5603    teeState.promise = new Promise(function (resolve) {
5604      teeState._resolve = resolve;
5605    });
5606    var pull = create_ReadableStreamTeePullFunction();
5607    pull._reader = reader;
5608    pull._teeState = teeState;
5609    pull._cloneForBranch2 = cloneForBranch2;
5610    var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();
5611    cancel1._stream = stream;
5612    cancel1._teeState = teeState;
5613    var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();
5614    cancel2._stream = stream;
5615    cancel2._teeState = teeState;
5616    var underlyingSource1 = Object.create(Object.prototype);
5617    createDataProperty(underlyingSource1, 'pull', pull);
5618    createDataProperty(underlyingSource1, 'cancel', cancel1);
5619    var branch1Stream = new ReadableStream(underlyingSource1);
5620    var underlyingSource2 = Object.create(Object.prototype);
5621    createDataProperty(underlyingSource2, 'pull', pull);
5622    createDataProperty(underlyingSource2, 'cancel', cancel2);
5623    var branch2Stream = new ReadableStream(underlyingSource2);
5624    pull._branch1 = branch1Stream._readableStreamController;
5625    pull._branch2 = branch2Stream._readableStreamController;
5626    reader._closedPromise.catch(function (r) {
5627      if (teeState.closedOrErrored === true) {
5628        return;
5629      }
5630      ReadableStreamDefaultControllerError(pull._branch1, r);
5631      ReadableStreamDefaultControllerError(pull._branch2, r);
5632      teeState.closedOrErrored = true;
5633    });
5634    return [branch1Stream, branch2Stream];
5635  }
5636  function create_ReadableStreamTeePullFunction() {
5637    function f() {
5638      var reader = f._reader,
5639          branch1 = f._branch1,
5640          branch2 = f._branch2,
5641          teeState = f._teeState;
5642      return ReadableStreamDefaultReaderRead(reader).then(function (result) {
5643        assert(typeIsObject(result));
5644        var value = result.value;
5645        var done = result.done;
5646        assert(typeof done === 'boolean');
5647        if (done === true && teeState.closedOrErrored === false) {
5648          if (teeState.canceled1 === false) {
5649            ReadableStreamDefaultControllerClose(branch1);
5650          }
5651          if (teeState.canceled2 === false) {
5652            ReadableStreamDefaultControllerClose(branch2);
5653          }
5654          teeState.closedOrErrored = true;
5655        }
5656        if (teeState.closedOrErrored === true) {
5657          return;
5658        }
5659        var value1 = value;
5660        var value2 = value;
5661        if (teeState.canceled1 === false) {
5662          ReadableStreamDefaultControllerEnqueue(branch1, value1);
5663        }
5664        if (teeState.canceled2 === false) {
5665          ReadableStreamDefaultControllerEnqueue(branch2, value2);
5666        }
5667      });
5668    }
5669    return f;
5670  }
5671  function create_ReadableStreamTeeBranch1CancelFunction() {
5672    function f(reason) {
5673      var stream = f._stream,
5674          teeState = f._teeState;
5675      teeState.canceled1 = true;
5676      teeState.reason1 = reason;
5677      if (teeState.canceled2 === true) {
5678        var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
5679        var cancelResult = ReadableStreamCancel(stream, compositeReason);
5680        teeState._resolve(cancelResult);
5681      }
5682      return teeState.promise;
5683    }
5684    return f;
5685  }
5686  function create_ReadableStreamTeeBranch2CancelFunction() {
5687    function f(reason) {
5688      var stream = f._stream,
5689          teeState = f._teeState;
5690      teeState.canceled2 = true;
5691      teeState.reason2 = reason;
5692      if (teeState.canceled1 === true) {
5693        var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
5694        var cancelResult = ReadableStreamCancel(stream, compositeReason);
5695        teeState._resolve(cancelResult);
5696      }
5697      return teeState.promise;
5698    }
5699    return f;
5700  }
5701  function ReadableStreamAddReadIntoRequest(stream) {
5702    assert(IsReadableStreamBYOBReader(stream._reader) === true);
5703    assert(stream._state === 'readable' || stream._state === 'closed');
5704    var promise = new Promise(function (resolve, reject) {
5705      var readIntoRequest = {
5706        _resolve: resolve,
5707        _reject: reject
5708      };
5709      stream._reader._readIntoRequests.push(readIntoRequest);
5710    });
5711    return promise;
5712  }
5713  function ReadableStreamAddReadRequest(stream) {
5714    assert(IsReadableStreamDefaultReader(stream._reader) === true);
5715    assert(stream._state === 'readable');
5716    var promise = new Promise(function (resolve, reject) {
5717      var readRequest = {
5718        _resolve: resolve,
5719        _reject: reject
5720      };
5721      stream._reader._readRequests.push(readRequest);
5722    });
5723    return promise;
5724  }
5725  function ReadableStreamCancel(stream, reason) {
5726    stream._disturbed = true;
5727    if (stream._state === 'closed') {
5728      return Promise.resolve(undefined);
5729    }
5730    if (stream._state === 'errored') {
5731      return Promise.reject(stream._storedError);
5732    }
5733    ReadableStreamClose(stream);
5734    var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);
5735    return sourceCancelPromise.then(function () {
5736      return undefined;
5737    });
5738  }
5739  function ReadableStreamClose(stream) {
5740    assert(stream._state === 'readable');
5741    stream._state = 'closed';
5742    var reader = stream._reader;
5743    if (reader === undefined) {
5744      return undefined;
5745    }
5746    if (IsReadableStreamDefaultReader(reader) === true) {
5747      for (var i = 0; i < reader._readRequests.length; i++) {
5748        var _resolve = reader._readRequests[i]._resolve;
5749        _resolve(CreateIterResultObject(undefined, true));
5750      }
5751      reader._readRequests = [];
5752    }
5753    defaultReaderClosedPromiseResolve(reader);
5754    return undefined;
5755  }
5756  function ReadableStreamError(stream, e) {
5757    assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');
5758    assert(stream._state === 'readable', 'state must be readable');
5759    stream._state = 'errored';
5760    stream._storedError = e;
5761    var reader = stream._reader;
5762    if (reader === undefined) {
5763      return undefined;
5764    }
5765    if (IsReadableStreamDefaultReader(reader) === true) {
5766      for (var i = 0; i < reader._readRequests.length; i++) {
5767        var readRequest = reader._readRequests[i];
5768        readRequest._reject(e);
5769      }
5770      reader._readRequests = [];
5771    } else {
5772      assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');
5773      for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {
5774        var readIntoRequest = reader._readIntoRequests[_i];
5775        readIntoRequest._reject(e);
5776      }
5777      reader._readIntoRequests = [];
5778    }
5779    defaultReaderClosedPromiseReject(reader, e);
5780    reader._closedPromise.catch(function () {});
5781  }
5782  function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {
5783    var reader = stream._reader;
5784    assert(reader._readIntoRequests.length > 0);
5785    var readIntoRequest = reader._readIntoRequests.shift();
5786    readIntoRequest._resolve(CreateIterResultObject(chunk, done));
5787  }
5788  function ReadableStreamFulfillReadRequest(stream, chunk, done) {
5789    var reader = stream._reader;
5790    assert(reader._readRequests.length > 0);
5791    var readRequest = reader._readRequests.shift();
5792    readRequest._resolve(CreateIterResultObject(chunk, done));
5793  }
5794  function ReadableStreamGetNumReadIntoRequests(stream) {
5795    return stream._reader._readIntoRequests.length;
5796  }
5797  function ReadableStreamGetNumReadRequests(stream) {
5798    return stream._reader._readRequests.length;
5799  }
5800  function ReadableStreamHasBYOBReader(stream) {
5801    var reader = stream._reader;
5802    if (reader === undefined) {
5803      return false;
5804    }
5805    if (IsReadableStreamBYOBReader(reader) === false) {
5806      return false;
5807    }
5808    return true;
5809  }
5810  function ReadableStreamHasDefaultReader(stream) {
5811    var reader = stream._reader;
5812    if (reader === undefined) {
5813      return false;
5814    }
5815    if (IsReadableStreamDefaultReader(reader) === false) {
5816      return false;
5817    }
5818    return true;
5819  }
5820  var ReadableStreamDefaultReader = function () {
5821    function ReadableStreamDefaultReader(stream) {
5822      _classCallCheck(this, ReadableStreamDefaultReader);
5823      if (IsReadableStream(stream) === false) {
5824        throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');
5825      }
5826      if (IsReadableStreamLocked(stream) === true) {
5827        throw new TypeError('This stream has already been locked for exclusive reading by another reader');
5828      }
5829      ReadableStreamReaderGenericInitialize(this, stream);
5830      this._readRequests = [];
5831    }
5832    _createClass(ReadableStreamDefaultReader, [{
5833      key: 'cancel',
5834      value: function cancel(reason) {
5835        if (IsReadableStreamDefaultReader(this) === false) {
5836          return Promise.reject(defaultReaderBrandCheckException('cancel'));
5837        }
5838        if (this._ownerReadableStream === undefined) {
5839          return Promise.reject(readerLockException('cancel'));
5840        }
5841        return ReadableStreamReaderGenericCancel(this, reason);
5842      }
5843    }, {
5844      key: 'read',
5845      value: function read() {
5846        if (IsReadableStreamDefaultReader(this) === false) {
5847          return Promise.reject(defaultReaderBrandCheckException('read'));
5848        }
5849        if (this._ownerReadableStream === undefined) {
5850          return Promise.reject(readerLockException('read from'));
5851        }
5852        return ReadableStreamDefaultReaderRead(this);
5853      }
5854    }, {
5855      key: 'releaseLock',
5856      value: function releaseLock() {
5857        if (IsReadableStreamDefaultReader(this) === false) {
5858          throw defaultReaderBrandCheckException('releaseLock');
5859        }
5860        if (this._ownerReadableStream === undefined) {
5861          return;
5862        }
5863        if (this._readRequests.length > 0) {
5864          throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
5865        }
5866        ReadableStreamReaderGenericRelease(this);
5867      }
5868    }, {
5869      key: 'closed',
5870      get: function get() {
5871        if (IsReadableStreamDefaultReader(this) === false) {
5872          return Promise.reject(defaultReaderBrandCheckException('closed'));
5873        }
5874        return this._closedPromise;
5875      }
5876    }]);
5877    return ReadableStreamDefaultReader;
5878  }();
5879  var ReadableStreamBYOBReader = function () {
5880    function ReadableStreamBYOBReader(stream) {
5881      _classCallCheck(this, ReadableStreamBYOBReader);
5882      if (!IsReadableStream(stream)) {
5883        throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');
5884      }
5885      if (IsReadableByteStreamController(stream._readableStreamController) === false) {
5886        throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');
5887      }
5888      if (IsReadableStreamLocked(stream)) {
5889        throw new TypeError('This stream has already been locked for exclusive reading by another reader');
5890      }
5891      ReadableStreamReaderGenericInitialize(this, stream);
5892      this._readIntoRequests = [];
5893    }
5894    _createClass(ReadableStreamBYOBReader, [{
5895      key: 'cancel',
5896      value: function cancel(reason) {
5897        if (!IsReadableStreamBYOBReader(this)) {
5898          return Promise.reject(byobReaderBrandCheckException('cancel'));
5899        }
5900        if (this._ownerReadableStream === undefined) {
5901          return Promise.reject(readerLockException('cancel'));
5902        }
5903        return ReadableStreamReaderGenericCancel(this, reason);
5904      }
5905    }, {
5906      key: 'read',
5907      value: function read(view) {
5908        if (!IsReadableStreamBYOBReader(this)) {
5909          return Promise.reject(byobReaderBrandCheckException('read'));
5910        }
5911        if (this._ownerReadableStream === undefined) {
5912          return Promise.reject(readerLockException('read from'));
5913        }
5914        if (!ArrayBuffer.isView(view)) {
5915          return Promise.reject(new TypeError('view must be an array buffer view'));
5916        }
5917        if (view.byteLength === 0) {
5918          return Promise.reject(new TypeError('view must have non-zero byteLength'));
5919        }
5920        return ReadableStreamBYOBReaderRead(this, view);
5921      }
5922    }, {
5923      key: 'releaseLock',
5924      value: function releaseLock() {
5925        if (!IsReadableStreamBYOBReader(this)) {
5926          throw byobReaderBrandCheckException('releaseLock');
5927        }
5928        if (this._ownerReadableStream === undefined) {
5929          return;
5930        }
5931        if (this._readIntoRequests.length > 0) {
5932          throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
5933        }
5934        ReadableStreamReaderGenericRelease(this);
5935      }
5936    }, {
5937      key: 'closed',
5938      get: function get() {
5939        if (!IsReadableStreamBYOBReader(this)) {
5940          return Promise.reject(byobReaderBrandCheckException('closed'));
5941        }
5942        return this._closedPromise;
5943      }
5944    }]);
5945    return ReadableStreamBYOBReader;
5946  }();
5947  function IsReadableStreamBYOBReader(x) {
5948    if (!typeIsObject(x)) {
5949      return false;
5950    }
5951    if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {
5952      return false;
5953    }
5954    return true;
5955  }
5956  function IsReadableStreamDefaultReader(x) {
5957    if (!typeIsObject(x)) {
5958      return false;
5959    }
5960    if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {
5961      return false;
5962    }
5963    return true;
5964  }
5965  function ReadableStreamReaderGenericInitialize(reader, stream) {
5966    reader._ownerReadableStream = stream;
5967    stream._reader = reader;
5968    if (stream._state === 'readable') {
5969      defaultReaderClosedPromiseInitialize(reader);
5970    } else if (stream._state === 'closed') {
5971      defaultReaderClosedPromiseInitializeAsResolved(reader);
5972    } else {
5973      assert(stream._state === 'errored', 'state must be errored');
5974      defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);
5975      reader._closedPromise.catch(function () {});
5976    }
5977  }
5978  function ReadableStreamReaderGenericCancel(reader, reason) {
5979    var stream = reader._ownerReadableStream;
5980    assert(stream !== undefined);
5981    return ReadableStreamCancel(stream, reason);
5982  }
5983  function ReadableStreamReaderGenericRelease(reader) {
5984    assert(reader._ownerReadableStream !== undefined);
5985    assert(reader._ownerReadableStream._reader === reader);
5986    if (reader._ownerReadableStream._state === 'readable') {
5987      defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
5988    } else {
5989      defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
5990    }
5991    reader._closedPromise.catch(function () {});
5992    reader._ownerReadableStream._reader = undefined;
5993    reader._ownerReadableStream = undefined;
5994  }
5995  function ReadableStreamBYOBReaderRead(reader, view) {
5996    var stream = reader._ownerReadableStream;
5997    assert(stream !== undefined);
5998    stream._disturbed = true;
5999    if (stream._state === 'errored') {
6000      return Promise.reject(stream._storedError);
6001    }
6002    return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);
6003  }
6004  function ReadableStreamDefaultReaderRead(reader) {
6005    var stream = reader._ownerReadableStream;
6006    assert(stream !== undefined);
6007    stream._disturbed = true;
6008    if (stream._state === 'closed') {
6009      return Promise.resolve(CreateIterResultObject(undefined, true));
6010    }
6011    if (stream._state === 'errored') {
6012      return Promise.reject(stream._storedError);
6013    }
6014    assert(stream._state === 'readable');
6015    return stream._readableStreamController.__pullSteps();
6016  }
6017  var ReadableStreamDefaultController = function () {
6018    function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {
6019      _classCallCheck(this, ReadableStreamDefaultController);
6020      if (IsReadableStream(stream) === false) {
6021        throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');
6022      }
6023      if (stream._readableStreamController !== undefined) {
6024        throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');
6025      }
6026      this._controlledReadableStream = stream;
6027      this._underlyingSource = underlyingSource;
6028      this._queue = undefined;
6029      this._queueTotalSize = undefined;
6030      ResetQueue(this);
6031      this._started = false;
6032      this._closeRequested = false;
6033      this._pullAgain = false;
6034      this._pulling = false;
6035      var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
6036      this._strategySize = normalizedStrategy.size;
6037      this._strategyHWM = normalizedStrategy.highWaterMark;
6038      var controller = this;
6039      var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);
6040      Promise.resolve(startResult).then(function () {
6041        controller._started = true;
6042        assert(controller._pulling === false);
6043        assert(controller._pullAgain === false);
6044        ReadableStreamDefaultControllerCallPullIfNeeded(controller);
6045      }, function (r) {
6046        ReadableStreamDefaultControllerErrorIfNeeded(controller, r);
6047      }).catch(rethrowAssertionErrorRejection);
6048    }
6049    _createClass(ReadableStreamDefaultController, [{
6050      key: 'close',
6051      value: function close() {
6052        if (IsReadableStreamDefaultController(this) === false) {
6053          throw defaultControllerBrandCheckException('close');
6054        }
6055        if (this._closeRequested === true) {
6056          throw new TypeError('The stream has already been closed; do not close it again!');
6057        }
6058        var state = this._controlledReadableStream._state;
6059        if (state !== 'readable') {
6060          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
6061        }
6062        ReadableStreamDefaultControllerClose(this);
6063      }
6064    }, {
6065      key: 'enqueue',
6066      value: function enqueue(chunk) {
6067        if (IsReadableStreamDefaultController(this) === false) {
6068          throw defaultControllerBrandCheckException('enqueue');
6069        }
6070        if (this._closeRequested === true) {
6071          throw new TypeError('stream is closed or draining');
6072        }
6073        var state = this._controlledReadableStream._state;
6074        if (state !== 'readable') {
6075          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
6076        }
6077        return ReadableStreamDefaultControllerEnqueue(this, chunk);
6078      }
6079    }, {
6080      key: 'error',
6081      value: function error(e) {
6082        if (IsReadableStreamDefaultController(this) === false) {
6083          throw defaultControllerBrandCheckException('error');
6084        }
6085        var stream = this._controlledReadableStream;
6086        if (stream._state !== 'readable') {
6087          throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
6088        }
6089        ReadableStreamDefaultControllerError(this, e);
6090      }
6091    }, {
6092      key: '__cancelSteps',
6093      value: function __cancelSteps(reason) {
6094        ResetQueue(this);
6095        return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);
6096      }
6097    }, {
6098      key: '__pullSteps',
6099      value: function __pullSteps() {
6100        var stream = this._controlledReadableStream;
6101        if (this._queue.length > 0) {
6102          var chunk = DequeueValue(this);
6103          if (this._closeRequested === true && this._queue.length === 0) {
6104            ReadableStreamClose(stream);
6105          } else {
6106            ReadableStreamDefaultControllerCallPullIfNeeded(this);
6107          }
6108          return Promise.resolve(CreateIterResultObject(chunk, false));
6109        }
6110        var pendingPromise = ReadableStreamAddReadRequest(stream);
6111        ReadableStreamDefaultControllerCallPullIfNeeded(this);
6112        return pendingPromise;
6113      }
6114    }, {
6115      key: 'desiredSize',
6116      get: function get() {
6117        if (IsReadableStreamDefaultController(this) === false) {
6118          throw defaultControllerBrandCheckException('desiredSize');
6119        }
6120        return ReadableStreamDefaultControllerGetDesiredSize(this);
6121      }
6122    }]);
6123    return ReadableStreamDefaultController;
6124  }();
6125  function IsReadableStreamDefaultController(x) {
6126    if (!typeIsObject(x)) {
6127      return false;
6128    }
6129    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {
6130      return false;
6131    }
6132    return true;
6133  }
6134  function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {
6135    var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);
6136    if (shouldPull === false) {
6137      return undefined;
6138    }
6139    if (controller._pulling === true) {
6140      controller._pullAgain = true;
6141      return undefined;
6142    }
6143    assert(controller._pullAgain === false);
6144    controller._pulling = true;
6145    var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);
6146    pullPromise.then(function () {
6147      controller._pulling = false;
6148      if (controller._pullAgain === true) {
6149        controller._pullAgain = false;
6150        return ReadableStreamDefaultControllerCallPullIfNeeded(controller);
6151      }
6152      return undefined;
6153    }, function (e) {
6154      ReadableStreamDefaultControllerErrorIfNeeded(controller, e);
6155    }).catch(rethrowAssertionErrorRejection);
6156    return undefined;
6157  }
6158  function ReadableStreamDefaultControllerShouldCallPull(controller) {
6159    var stream = controller._controlledReadableStream;
6160    if (stream._state === 'closed' || stream._state === 'errored') {
6161      return false;
6162    }
6163    if (controller._closeRequested === true) {
6164      return false;
6165    }
6166    if (controller._started === false) {
6167      return false;
6168    }
6169    if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
6170      return true;
6171    }
6172    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
6173    if (desiredSize > 0) {
6174      return true;
6175    }
6176    return false;
6177  }
6178  function ReadableStreamDefaultControllerClose(controller) {
6179    var stream = controller._controlledReadableStream;
6180    assert(controller._closeRequested === false);
6181    assert(stream._state === 'readable');
6182    controller._closeRequested = true;
6183    if (controller._queue.length === 0) {
6184      ReadableStreamClose(stream);
6185    }
6186  }
6187  function ReadableStreamDefaultControllerEnqueue(controller, chunk) {
6188    var stream = controller._controlledReadableStream;
6189    assert(controller._closeRequested === false);
6190    assert(stream._state === 'readable');
6191    if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
6192      ReadableStreamFulfillReadRequest(stream, chunk, false);
6193    } else {
6194      var chunkSize = 1;
6195      if (controller._strategySize !== undefined) {
6196        var strategySize = controller._strategySize;
6197        try {
6198          chunkSize = strategySize(chunk);
6199        } catch (chunkSizeE) {
6200          ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
6201          throw chunkSizeE;
6202        }
6203      }
6204      try {
6205        EnqueueValueWithSize(controller, chunk, chunkSize);
6206      } catch (enqueueE) {
6207        ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
6208        throw enqueueE;
6209      }
6210    }
6211    ReadableStreamDefaultControllerCallPullIfNeeded(controller);
6212    return undefined;
6213  }
6214  function ReadableStreamDefaultControllerError(controller, e) {
6215    var stream = controller._controlledReadableStream;
6216    assert(stream._state === 'readable');
6217    ResetQueue(controller);
6218    ReadableStreamError(stream, e);
6219  }
6220  function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {
6221    if (controller._controlledReadableStream._state === 'readable') {
6222      ReadableStreamDefaultControllerError(controller, e);
6223    }
6224  }
6225  function ReadableStreamDefaultControllerGetDesiredSize(controller) {
6226    var stream = controller._controlledReadableStream;
6227    var state = stream._state;
6228    if (state === 'errored') {
6229      return null;
6230    }
6231    if (state === 'closed') {
6232      return 0;
6233    }
6234    return controller._strategyHWM - controller._queueTotalSize;
6235  }
6236  var ReadableStreamBYOBRequest = function () {
6237    function ReadableStreamBYOBRequest(controller, view) {
6238      _classCallCheck(this, ReadableStreamBYOBRequest);
6239      this._associatedReadableByteStreamController = controller;
6240      this._view = view;
6241    }
6242    _createClass(ReadableStreamBYOBRequest, [{
6243      key: 'respond',
6244      value: function respond(bytesWritten) {
6245        if (IsReadableStreamBYOBRequest(this) === false) {
6246          throw byobRequestBrandCheckException('respond');
6247        }
6248        if (this._associatedReadableByteStreamController === undefined) {
6249          throw new TypeError('This BYOB request has been invalidated');
6250        }
6251        ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);
6252      }
6253    }, {
6254      key: 'respondWithNewView',
6255      value: function respondWithNewView(view) {
6256        if (IsReadableStreamBYOBRequest(this) === false) {
6257          throw byobRequestBrandCheckException('respond');
6258        }
6259        if (this._associatedReadableByteStreamController === undefined) {
6260          throw new TypeError('This BYOB request has been invalidated');
6261        }
6262        if (!ArrayBuffer.isView(view)) {
6263          throw new TypeError('You can only respond with array buffer views');
6264        }
6265        ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);
6266      }
6267    }, {
6268      key: 'view',
6269      get: function get() {
6270        return this._view;
6271      }
6272    }]);
6273    return ReadableStreamBYOBRequest;
6274  }();
6275  var ReadableByteStreamController = function () {
6276    function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {
6277      _classCallCheck(this, ReadableByteStreamController);
6278      if (IsReadableStream(stream) === false) {
6279        throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');
6280      }
6281      if (stream._readableStreamController !== undefined) {
6282        throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');
6283      }
6284      this._controlledReadableStream = stream;
6285      this._underlyingByteSource = underlyingByteSource;
6286      this._pullAgain = false;
6287      this._pulling = false;
6288      ReadableByteStreamControllerClearPendingPullIntos(this);
6289      this._queue = this._queueTotalSize = undefined;
6290      ResetQueue(this);
6291      this._closeRequested = false;
6292      this._started = false;
6293      this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);
6294      var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;
6295      if (autoAllocateChunkSize !== undefined) {
6296        if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {
6297          throw new RangeError('autoAllocateChunkSize must be a positive integer');
6298        }
6299      }
6300      this._autoAllocateChunkSize = autoAllocateChunkSize;
6301      this._pendingPullIntos = [];
6302      var controller = this;
6303      var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);
6304      Promise.resolve(startResult).then(function () {
6305        controller._started = true;
6306        assert(controller._pulling === false);
6307        assert(controller._pullAgain === false);
6308        ReadableByteStreamControllerCallPullIfNeeded(controller);
6309      }, function (r) {
6310        if (stream._state === 'readable') {
6311          ReadableByteStreamControllerError(controller, r);
6312        }
6313      }).catch(rethrowAssertionErrorRejection);
6314    }
6315    _createClass(ReadableByteStreamController, [{
6316      key: 'close',
6317      value: function close() {
6318        if (IsReadableByteStreamController(this) === false) {
6319          throw byteStreamControllerBrandCheckException('close');
6320        }
6321        if (this._closeRequested === true) {
6322          throw new TypeError('The stream has already been closed; do not close it again!');
6323        }
6324        var state = this._controlledReadableStream._state;
6325        if (state !== 'readable') {
6326          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
6327        }
6328        ReadableByteStreamControllerClose(this);
6329      }
6330    }, {
6331      key: 'enqueue',
6332      value: function enqueue(chunk) {
6333        if (IsReadableByteStreamController(this) === false) {
6334          throw byteStreamControllerBrandCheckException('enqueue');
6335        }
6336        if (this._closeRequested === true) {
6337          throw new TypeError('stream is closed or draining');
6338        }
6339        var state = this._controlledReadableStream._state;
6340        if (state !== 'readable') {
6341          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
6342        }
6343        if (!ArrayBuffer.isView(chunk)) {
6344          throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');
6345        }
6346        ReadableByteStreamControllerEnqueue(this, chunk);
6347      }
6348    }, {
6349      key: 'error',
6350      value: function error(e) {
6351        if (IsReadableByteStreamController(this) === false) {
6352          throw byteStreamControllerBrandCheckException('error');
6353        }
6354        var stream = this._controlledReadableStream;
6355        if (stream._state !== 'readable') {
6356          throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
6357        }
6358        ReadableByteStreamControllerError(this, e);
6359      }
6360    }, {
6361      key: '__cancelSteps',
6362      value: function __cancelSteps(reason) {
6363        if (this._pendingPullIntos.length > 0) {
6364          var firstDescriptor = this._pendingPullIntos[0];
6365          firstDescriptor.bytesFilled = 0;
6366        }
6367        ResetQueue(this);
6368        return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);
6369      }
6370    }, {
6371      key: '__pullSteps',
6372      value: function __pullSteps() {
6373        var stream = this._controlledReadableStream;
6374        assert(ReadableStreamHasDefaultReader(stream) === true);
6375        if (this._queueTotalSize > 0) {
6376          assert(ReadableStreamGetNumReadRequests(stream) === 0);
6377          var entry = this._queue.shift();
6378          this._queueTotalSize -= entry.byteLength;
6379          ReadableByteStreamControllerHandleQueueDrain(this);
6380          var view = void 0;
6381          try {
6382            view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);
6383          } catch (viewE) {
6384            return Promise.reject(viewE);
6385          }
6386          return Promise.resolve(CreateIterResultObject(view, false));
6387        }
6388        var autoAllocateChunkSize = this._autoAllocateChunkSize;
6389        if (autoAllocateChunkSize !== undefined) {
6390          var buffer = void 0;
6391          try {
6392            buffer = new ArrayBuffer(autoAllocateChunkSize);
6393          } catch (bufferE) {
6394            return Promise.reject(bufferE);
6395          }
6396          var pullIntoDescriptor = {
6397            buffer: buffer,
6398            byteOffset: 0,
6399            byteLength: autoAllocateChunkSize,
6400            bytesFilled: 0,
6401            elementSize: 1,
6402            ctor: Uint8Array,
6403            readerType: 'default'
6404          };
6405          this._pendingPullIntos.push(pullIntoDescriptor);
6406        }
6407        var promise = ReadableStreamAddReadRequest(stream);
6408        ReadableByteStreamControllerCallPullIfNeeded(this);
6409        return promise;
6410      }
6411    }, {
6412      key: 'byobRequest',
6413      get: function get() {
6414        if (IsReadableByteStreamController(this) === false) {
6415          throw byteStreamControllerBrandCheckException('byobRequest');
6416        }
6417        if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {
6418          var firstDescriptor = this._pendingPullIntos[0];
6419          var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);
6420          this._byobRequest = new ReadableStreamBYOBRequest(this, view);
6421        }
6422        return this._byobRequest;
6423      }
6424    }, {
6425      key: 'desiredSize',
6426      get: function get() {
6427        if (IsReadableByteStreamController(this) === false) {
6428          throw byteStreamControllerBrandCheckException('desiredSize');
6429        }
6430        return ReadableByteStreamControllerGetDesiredSize(this);
6431      }
6432    }]);
6433    return ReadableByteStreamController;
6434  }();
6435  function IsReadableByteStreamController(x) {
6436    if (!typeIsObject(x)) {
6437      return false;
6438    }
6439    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {
6440      return false;
6441    }
6442    return true;
6443  }
6444  function IsReadableStreamBYOBRequest(x) {
6445    if (!typeIsObject(x)) {
6446      return false;
6447    }
6448    if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {
6449      return false;
6450    }
6451    return true;
6452  }
6453  function ReadableByteStreamControllerCallPullIfNeeded(controller) {
6454    var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);
6455    if (shouldPull === false) {
6456      return undefined;
6457    }
6458    if (controller._pulling === true) {
6459      controller._pullAgain = true;
6460      return undefined;
6461    }
6462    assert(controller._pullAgain === false);
6463    controller._pulling = true;
6464    var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);
6465    pullPromise.then(function () {
6466      controller._pulling = false;
6467      if (controller._pullAgain === true) {
6468        controller._pullAgain = false;
6469        ReadableByteStreamControllerCallPullIfNeeded(controller);
6470      }
6471    }, function (e) {
6472      if (controller._controlledReadableStream._state === 'readable') {
6473        ReadableByteStreamControllerError(controller, e);
6474      }
6475    }).catch(rethrowAssertionErrorRejection);
6476    return undefined;
6477  }
6478  function ReadableByteStreamControllerClearPendingPullIntos(controller) {
6479    ReadableByteStreamControllerInvalidateBYOBRequest(controller);
6480    controller._pendingPullIntos = [];
6481  }
6482  function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {
6483    assert(stream._state !== 'errored', 'state must not be errored');
6484    var done = false;
6485    if (stream._state === 'closed') {
6486      assert(pullIntoDescriptor.bytesFilled === 0);
6487      done = true;
6488    }
6489    var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
6490    if (pullIntoDescriptor.readerType === 'default') {
6491      ReadableStreamFulfillReadRequest(stream, filledView, done);
6492    } else {
6493      assert(pullIntoDescriptor.readerType === 'byob');
6494      ReadableStreamFulfillReadIntoRequest(stream, filledView, done);
6495    }
6496  }
6497  function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {
6498    var bytesFilled = pullIntoDescriptor.bytesFilled;
6499    var elementSize = pullIntoDescriptor.elementSize;
6500    assert(bytesFilled <= pullIntoDescriptor.byteLength);
6501    assert(bytesFilled % elementSize === 0);
6502    return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);
6503  }
6504  function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {
6505    controller._queue.push({
6506      buffer: buffer,
6507      byteOffset: byteOffset,
6508      byteLength: byteLength
6509    });
6510    controller._queueTotalSize += byteLength;
6511  }
6512  function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {
6513    var elementSize = pullIntoDescriptor.elementSize;
6514    var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;
6515    var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);
6516    var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;
6517    var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;
6518    var totalBytesToCopyRemaining = maxBytesToCopy;
6519    var ready = false;
6520    if (maxAlignedBytes > currentAlignedBytes) {
6521      totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;
6522      ready = true;
6523    }
6524    var queue = controller._queue;
6525    while (totalBytesToCopyRemaining > 0) {
6526      var headOfQueue = queue[0];
6527      var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);
6528      var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
6529      ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);
6530      if (headOfQueue.byteLength === bytesToCopy) {
6531        queue.shift();
6532      } else {
6533        headOfQueue.byteOffset += bytesToCopy;
6534        headOfQueue.byteLength -= bytesToCopy;
6535      }
6536      controller._queueTotalSize -= bytesToCopy;
6537      ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);
6538      totalBytesToCopyRemaining -= bytesToCopy;
6539    }
6540    if (ready === false) {
6541      assert(controller._queueTotalSize === 0, 'queue must be empty');
6542      assert(pullIntoDescriptor.bytesFilled > 0);
6543      assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);
6544    }
6545    return ready;
6546  }
6547  function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {
6548    assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);
6549    ReadableByteStreamControllerInvalidateBYOBRequest(controller);
6550    pullIntoDescriptor.bytesFilled += size;
6551  }
6552  function ReadableByteStreamControllerHandleQueueDrain(controller) {
6553    assert(controller._controlledReadableStream._state === 'readable');
6554    if (controller._queueTotalSize === 0 && controller._closeRequested === true) {
6555      ReadableStreamClose(controller._controlledReadableStream);
6556    } else {
6557      ReadableByteStreamControllerCallPullIfNeeded(controller);
6558    }
6559  }
6560  function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {
6561    if (controller._byobRequest === undefined) {
6562      return;
6563    }
6564    controller._byobRequest._associatedReadableByteStreamController = undefined;
6565    controller._byobRequest._view = undefined;
6566    controller._byobRequest = undefined;
6567  }
6568  function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {
6569    assert(controller._closeRequested === false);
6570    while (controller._pendingPullIntos.length > 0) {
6571      if (controller._queueTotalSize === 0) {
6572        return;
6573      }
6574      var pullIntoDescriptor = controller._pendingPullIntos[0];
6575      if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
6576        ReadableByteStreamControllerShiftPendingPullInto(controller);
6577        ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
6578      }
6579    }
6580  }
6581  function ReadableByteStreamControllerPullInto(controller, view) {
6582    var stream = controller._controlledReadableStream;
6583    var elementSize = 1;
6584    if (view.constructor !== DataView) {
6585      elementSize = view.constructor.BYTES_PER_ELEMENT;
6586    }
6587    var ctor = view.constructor;
6588    var pullIntoDescriptor = {
6589      buffer: view.buffer,
6590      byteOffset: view.byteOffset,
6591      byteLength: view.byteLength,
6592      bytesFilled: 0,
6593      elementSize: elementSize,
6594      ctor: ctor,
6595      readerType: 'byob'
6596    };
6597    if (controller._pendingPullIntos.length > 0) {
6598      pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
6599      controller._pendingPullIntos.push(pullIntoDescriptor);
6600      return ReadableStreamAddReadIntoRequest(stream);
6601    }
6602    if (stream._state === 'closed') {
6603      var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);
6604      return Promise.resolve(CreateIterResultObject(emptyView, true));
6605    }
6606    if (controller._queueTotalSize > 0) {
6607      if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
6608        var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
6609        ReadableByteStreamControllerHandleQueueDrain(controller);
6610        return Promise.resolve(CreateIterResultObject(filledView, false));
6611      }
6612      if (controller._closeRequested === true) {
6613        var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
6614        ReadableByteStreamControllerError(controller, e);
6615        return Promise.reject(e);
6616      }
6617    }
6618    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
6619    controller._pendingPullIntos.push(pullIntoDescriptor);
6620    var promise = ReadableStreamAddReadIntoRequest(stream);
6621    ReadableByteStreamControllerCallPullIfNeeded(controller);
6622    return promise;
6623  }
6624  function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {
6625    firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);
6626    assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');
6627    var stream = controller._controlledReadableStream;
6628    if (ReadableStreamHasBYOBReader(stream) === true) {
6629      while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {
6630        var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);
6631        ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);
6632      }
6633    }
6634  }
6635  function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {
6636    if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {
6637      throw new RangeError('bytesWritten out of range');
6638    }
6639    ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);
6640    if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {
6641      return;
6642    }
6643    ReadableByteStreamControllerShiftPendingPullInto(controller);
6644    var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;
6645    if (remainderSize > 0) {
6646      var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
6647      var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);
6648      ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);
6649    }
6650    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
6651    pullIntoDescriptor.bytesFilled -= remainderSize;
6652    ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
6653    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
6654  }
6655  function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {
6656    var firstDescriptor = controller._pendingPullIntos[0];
6657    var stream = controller._controlledReadableStream;
6658    if (stream._state === 'closed') {
6659      if (bytesWritten !== 0) {
6660        throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');
6661      }
6662      ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);
6663    } else {
6664      assert(stream._state === 'readable');
6665      ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);
6666    }
6667  }
6668  function ReadableByteStreamControllerShiftPendingPullInto(controller) {
6669    var descriptor = controller._pendingPullIntos.shift();
6670    ReadableByteStreamControllerInvalidateBYOBRequest(controller);
6671    return descriptor;
6672  }
6673  function ReadableByteStreamControllerShouldCallPull(controller) {
6674    var stream = controller._controlledReadableStream;
6675    if (stream._state !== 'readable') {
6676      return false;
6677    }
6678    if (controller._closeRequested === true) {
6679      return false;
6680    }
6681    if (controller._started === false) {
6682      return false;
6683    }
6684    if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
6685      return true;
6686    }
6687    if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {
6688      return true;
6689    }
6690    if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {
6691      return true;
6692    }
6693    return false;
6694  }
6695  function ReadableByteStreamControllerClose(controller) {
6696    var stream = controller._controlledReadableStream;
6697    assert(controller._closeRequested === false);
6698    assert(stream._state === 'readable');
6699    if (controller._queueTotalSize > 0) {
6700      controller._closeRequested = true;
6701      return;
6702    }
6703    if (controller._pendingPullIntos.length > 0) {
6704      var firstPendingPullInto = controller._pendingPullIntos[0];
6705      if (firstPendingPullInto.bytesFilled > 0) {
6706        var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
6707        ReadableByteStreamControllerError(controller, e);
6708        throw e;
6709      }
6710    }
6711    ReadableStreamClose(stream);
6712  }
6713  function ReadableByteStreamControllerEnqueue(controller, chunk) {
6714    var stream = controller._controlledReadableStream;
6715    assert(controller._closeRequested === false);
6716    assert(stream._state === 'readable');
6717    var buffer = chunk.buffer;
6718    var byteOffset = chunk.byteOffset;
6719    var byteLength = chunk.byteLength;
6720    var transferredBuffer = TransferArrayBuffer(buffer);
6721    if (ReadableStreamHasDefaultReader(stream) === true) {
6722      if (ReadableStreamGetNumReadRequests(stream) === 0) {
6723        ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
6724      } else {
6725        assert(controller._queue.length === 0);
6726        var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);
6727        ReadableStreamFulfillReadRequest(stream, transferredView, false);
6728      }
6729    } else if (ReadableStreamHasBYOBReader(stream) === true) {
6730      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
6731      ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
6732    } else {
6733      assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');
6734      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
6735    }
6736  }
6737  function ReadableByteStreamControllerError(controller, e) {
6738    var stream = controller._controlledReadableStream;
6739    assert(stream._state === 'readable');
6740    ReadableByteStreamControllerClearPendingPullIntos(controller);
6741    ResetQueue(controller);
6742    ReadableStreamError(stream, e);
6743  }
6744  function ReadableByteStreamControllerGetDesiredSize(controller) {
6745    var stream = controller._controlledReadableStream;
6746    var state = stream._state;
6747    if (state === 'errored') {
6748      return null;
6749    }
6750    if (state === 'closed') {
6751      return 0;
6752    }
6753    return controller._strategyHWM - controller._queueTotalSize;
6754  }
6755  function ReadableByteStreamControllerRespond(controller, bytesWritten) {
6756    bytesWritten = Number(bytesWritten);
6757    if (IsFiniteNonNegativeNumber(bytesWritten) === false) {
6758      throw new RangeError('bytesWritten must be a finite');
6759    }
6760    assert(controller._pendingPullIntos.length > 0);
6761    ReadableByteStreamControllerRespondInternal(controller, bytesWritten);
6762  }
6763  function ReadableByteStreamControllerRespondWithNewView(controller, view) {
6764    assert(controller._pendingPullIntos.length > 0);
6765    var firstDescriptor = controller._pendingPullIntos[0];
6766    if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {
6767      throw new RangeError('The region specified by view does not match byobRequest');
6768    }
6769    if (firstDescriptor.byteLength !== view.byteLength) {
6770      throw new RangeError('The buffer of view has different capacity than byobRequest');
6771    }
6772    firstDescriptor.buffer = view.buffer;
6773    ReadableByteStreamControllerRespondInternal(controller, view.byteLength);
6774  }
6775  function streamBrandCheckException(name) {
6776    return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');
6777  }
6778  function readerLockException(name) {
6779    return new TypeError('Cannot ' + name + ' a stream using a released reader');
6780  }
6781  function defaultReaderBrandCheckException(name) {
6782    return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');
6783  }
6784  function defaultReaderClosedPromiseInitialize(reader) {
6785    reader._closedPromise = new Promise(function (resolve, reject) {
6786      reader._closedPromise_resolve = resolve;
6787      reader._closedPromise_reject = reject;
6788    });
6789  }
6790  function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {
6791    reader._closedPromise = Promise.reject(reason);
6792    reader._closedPromise_resolve = undefined;
6793    reader._closedPromise_reject = undefined;
6794  }
6795  function defaultReaderClosedPromiseInitializeAsResolved(reader) {
6796    reader._closedPromise = Promise.resolve(undefined);
6797    reader._closedPromise_resolve = undefined;
6798    reader._closedPromise_reject = undefined;
6799  }
6800  function defaultReaderClosedPromiseReject(reader, reason) {
6801    assert(reader._closedPromise_resolve !== undefined);
6802    assert(reader._closedPromise_reject !== undefined);
6803    reader._closedPromise_reject(reason);
6804    reader._closedPromise_resolve = undefined;
6805    reader._closedPromise_reject = undefined;
6806  }
6807  function defaultReaderClosedPromiseResetToRejected(reader, reason) {
6808    assert(reader._closedPromise_resolve === undefined);
6809    assert(reader._closedPromise_reject === undefined);
6810    reader._closedPromise = Promise.reject(reason);
6811  }
6812  function defaultReaderClosedPromiseResolve(reader) {
6813    assert(reader._closedPromise_resolve !== undefined);
6814    assert(reader._closedPromise_reject !== undefined);
6815    reader._closedPromise_resolve(undefined);
6816    reader._closedPromise_resolve = undefined;
6817    reader._closedPromise_reject = undefined;
6818  }
6819  function byobReaderBrandCheckException(name) {
6820    return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');
6821  }
6822  function defaultControllerBrandCheckException(name) {
6823    return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');
6824  }
6825  function byobRequestBrandCheckException(name) {
6826    return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');
6827  }
6828  function byteStreamControllerBrandCheckException(name) {
6829    return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');
6830  }
6831  function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {
6832    try {
6833      Promise.prototype.then.call(promise, undefined, function () {});
6834    } catch (e) {}
6835  }
6836}, function (module, exports, __w_pdfjs_require__) {
6837  "use strict";
6838
6839  var transformStream = __w_pdfjs_require__(6);
6840  var readableStream = __w_pdfjs_require__(4);
6841  var writableStream = __w_pdfjs_require__(2);
6842  exports.TransformStream = transformStream.TransformStream;
6843  exports.ReadableStream = readableStream.ReadableStream;
6844  exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;
6845  exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;
6846  exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;
6847  exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;
6848  exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;
6849  exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;
6850  exports.IsWritableStream = writableStream.IsWritableStream;
6851  exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;
6852  exports.WritableStream = writableStream.WritableStream;
6853  exports.WritableStreamAbort = writableStream.WritableStreamAbort;
6854  exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;
6855  exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;
6856  exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;
6857  exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;
6858}, function (module, exports, __w_pdfjs_require__) {
6859  "use strict";
6860
6861  var _createClass = function () {
6862    function defineProperties(target, props) {
6863      for (var i = 0; i < props.length; i++) {
6864        var descriptor = props[i];
6865        descriptor.enumerable = descriptor.enumerable || false;
6866        descriptor.configurable = true;
6867        if ("value" in descriptor) descriptor.writable = true;
6868        Object.defineProperty(target, descriptor.key, descriptor);
6869      }
6870    }
6871    return function (Constructor, protoProps, staticProps) {
6872      if (protoProps) defineProperties(Constructor.prototype, protoProps);
6873      if (staticProps) defineProperties(Constructor, staticProps);
6874      return Constructor;
6875    };
6876  }();
6877  function _classCallCheck(instance, Constructor) {
6878    if (!(instance instanceof Constructor)) {
6879      throw new TypeError("Cannot call a class as a function");
6880    }
6881  }
6882  var _require = __w_pdfjs_require__(1),
6883      assert = _require.assert;
6884  var _require2 = __w_pdfjs_require__(0),
6885      InvokeOrNoop = _require2.InvokeOrNoop,
6886      PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,
6887      PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,
6888      typeIsObject = _require2.typeIsObject;
6889  var _require3 = __w_pdfjs_require__(4),
6890      ReadableStream = _require3.ReadableStream,
6891      ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,
6892      ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,
6893      ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,
6894      ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;
6895  var _require4 = __w_pdfjs_require__(2),
6896      WritableStream = _require4.WritableStream,
6897      WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;
6898  function TransformStreamCloseReadable(transformStream) {
6899    if (transformStream._errored === true) {
6900      throw new TypeError('TransformStream is already errored');
6901    }
6902    if (transformStream._readableClosed === true) {
6903      throw new TypeError('Readable side is already closed');
6904    }
6905    TransformStreamCloseReadableInternal(transformStream);
6906  }
6907  function TransformStreamEnqueueToReadable(transformStream, chunk) {
6908    if (transformStream._errored === true) {
6909      throw new TypeError('TransformStream is already errored');
6910    }
6911    if (transformStream._readableClosed === true) {
6912      throw new TypeError('Readable side is already closed');
6913    }
6914    var controller = transformStream._readableController;
6915    try {
6916      ReadableStreamDefaultControllerEnqueue(controller, chunk);
6917    } catch (e) {
6918      transformStream._readableClosed = true;
6919      TransformStreamErrorIfNeeded(transformStream, e);
6920      throw transformStream._storedError;
6921    }
6922    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
6923    var maybeBackpressure = desiredSize <= 0;
6924    if (maybeBackpressure === true && transformStream._backpressure === false) {
6925      TransformStreamSetBackpressure(transformStream, true);
6926    }
6927  }
6928  function TransformStreamError(transformStream, e) {
6929    if (transformStream._errored === true) {
6930      throw new TypeError('TransformStream is already errored');
6931    }
6932    TransformStreamErrorInternal(transformStream, e);
6933  }
6934  function TransformStreamCloseReadableInternal(transformStream) {
6935    assert(transformStream._errored === false);
6936    assert(transformStream._readableClosed === false);
6937    try {
6938      ReadableStreamDefaultControllerClose(transformStream._readableController);
6939    } catch (e) {
6940      assert(false);
6941    }
6942    transformStream._readableClosed = true;
6943  }
6944  function TransformStreamErrorIfNeeded(transformStream, e) {
6945    if (transformStream._errored === false) {
6946      TransformStreamErrorInternal(transformStream, e);
6947    }
6948  }
6949  function TransformStreamErrorInternal(transformStream, e) {
6950    assert(transformStream._errored === false);
6951    transformStream._errored = true;
6952    transformStream._storedError = e;
6953    if (transformStream._writableDone === false) {
6954      WritableStreamDefaultControllerError(transformStream._writableController, e);
6955    }
6956    if (transformStream._readableClosed === false) {
6957      ReadableStreamDefaultControllerError(transformStream._readableController, e);
6958    }
6959  }
6960  function TransformStreamReadableReadyPromise(transformStream) {
6961    assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
6962    if (transformStream._backpressure === false) {
6963      return Promise.resolve();
6964    }
6965    assert(transformStream._backpressure === true, '_backpressure should have been initialized');
6966    return transformStream._backpressureChangePromise;
6967  }
6968  function TransformStreamSetBackpressure(transformStream, backpressure) {
6969    assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');
6970    if (transformStream._backpressureChangePromise !== undefined) {
6971      transformStream._backpressureChangePromise_resolve(backpressure);
6972    }
6973    transformStream._backpressureChangePromise = new Promise(function (resolve) {
6974      transformStream._backpressureChangePromise_resolve = resolve;
6975    });
6976    transformStream._backpressureChangePromise.then(function (resolution) {
6977      assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');
6978    });
6979    transformStream._backpressure = backpressure;
6980  }
6981  function TransformStreamDefaultTransform(chunk, transformStreamController) {
6982    var transformStream = transformStreamController._controlledTransformStream;
6983    TransformStreamEnqueueToReadable(transformStream, chunk);
6984    return Promise.resolve();
6985  }
6986  function TransformStreamTransform(transformStream, chunk) {
6987    assert(transformStream._errored === false);
6988    assert(transformStream._transforming === false);
6989    assert(transformStream._backpressure === false);
6990    transformStream._transforming = true;
6991    var transformer = transformStream._transformer;
6992    var controller = transformStream._transformStreamController;
6993    var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);
6994    return transformPromise.then(function () {
6995      transformStream._transforming = false;
6996      return TransformStreamReadableReadyPromise(transformStream);
6997    }, function (e) {
6998      TransformStreamErrorIfNeeded(transformStream, e);
6999      return Promise.reject(e);
7000    });
7001  }
7002  function IsTransformStreamDefaultController(x) {
7003    if (!typeIsObject(x)) {
7004      return false;
7005    }
7006    if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {
7007      return false;
7008    }
7009    return true;
7010  }
7011  function IsTransformStream(x) {
7012    if (!typeIsObject(x)) {
7013      return false;
7014    }
7015    if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {
7016      return false;
7017    }
7018    return true;
7019  }
7020  var TransformStreamSink = function () {
7021    function TransformStreamSink(transformStream, startPromise) {
7022      _classCallCheck(this, TransformStreamSink);
7023      this._transformStream = transformStream;
7024      this._startPromise = startPromise;
7025    }
7026    _createClass(TransformStreamSink, [{
7027      key: 'start',
7028      value: function start(c) {
7029        var transformStream = this._transformStream;
7030        transformStream._writableController = c;
7031        return this._startPromise.then(function () {
7032          return TransformStreamReadableReadyPromise(transformStream);
7033        });
7034      }
7035    }, {
7036      key: 'write',
7037      value: function write(chunk) {
7038        var transformStream = this._transformStream;
7039        return TransformStreamTransform(transformStream, chunk);
7040      }
7041    }, {
7042      key: 'abort',
7043      value: function abort() {
7044        var transformStream = this._transformStream;
7045        transformStream._writableDone = true;
7046        TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));
7047      }
7048    }, {
7049      key: 'close',
7050      value: function close() {
7051        var transformStream = this._transformStream;
7052        assert(transformStream._transforming === false);
7053        transformStream._writableDone = true;
7054        var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);
7055        return flushPromise.then(function () {
7056          if (transformStream._errored === true) {
7057            return Promise.reject(transformStream._storedError);
7058          }
7059          if (transformStream._readableClosed === false) {
7060            TransformStreamCloseReadableInternal(transformStream);
7061          }
7062          return Promise.resolve();
7063        }).catch(function (r) {
7064          TransformStreamErrorIfNeeded(transformStream, r);
7065          return Promise.reject(transformStream._storedError);
7066        });
7067      }
7068    }]);
7069    return TransformStreamSink;
7070  }();
7071  var TransformStreamSource = function () {
7072    function TransformStreamSource(transformStream, startPromise) {
7073      _classCallCheck(this, TransformStreamSource);
7074      this._transformStream = transformStream;
7075      this._startPromise = startPromise;
7076    }
7077    _createClass(TransformStreamSource, [{
7078      key: 'start',
7079      value: function start(c) {
7080        var transformStream = this._transformStream;
7081        transformStream._readableController = c;
7082        return this._startPromise.then(function () {
7083          assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
7084          if (transformStream._backpressure === true) {
7085            return Promise.resolve();
7086          }
7087          assert(transformStream._backpressure === false, '_backpressure should have been initialized');
7088          return transformStream._backpressureChangePromise;
7089        });
7090      }
7091    }, {
7092      key: 'pull',
7093      value: function pull() {
7094        var transformStream = this._transformStream;
7095        assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');
7096        assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
7097        TransformStreamSetBackpressure(transformStream, false);
7098        return transformStream._backpressureChangePromise;
7099      }
7100    }, {
7101      key: 'cancel',
7102      value: function cancel() {
7103        var transformStream = this._transformStream;
7104        transformStream._readableClosed = true;
7105        TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));
7106      }
7107    }]);
7108    return TransformStreamSource;
7109  }();
7110  var TransformStreamDefaultController = function () {
7111    function TransformStreamDefaultController(transformStream) {
7112      _classCallCheck(this, TransformStreamDefaultController);
7113      if (IsTransformStream(transformStream) === false) {
7114        throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');
7115      }
7116      if (transformStream._transformStreamController !== undefined) {
7117        throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');
7118      }
7119      this._controlledTransformStream = transformStream;
7120    }
7121    _createClass(TransformStreamDefaultController, [{
7122      key: 'enqueue',
7123      value: function enqueue(chunk) {
7124        if (IsTransformStreamDefaultController(this) === false) {
7125          throw defaultControllerBrandCheckException('enqueue');
7126        }
7127        TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);
7128      }
7129    }, {
7130      key: 'close',
7131      value: function close() {
7132        if (IsTransformStreamDefaultController(this) === false) {
7133          throw defaultControllerBrandCheckException('close');
7134        }
7135        TransformStreamCloseReadable(this._controlledTransformStream);
7136      }
7137    }, {
7138      key: 'error',
7139      value: function error(reason) {
7140        if (IsTransformStreamDefaultController(this) === false) {
7141          throw defaultControllerBrandCheckException('error');
7142        }
7143        TransformStreamError(this._controlledTransformStream, reason);
7144      }
7145    }, {
7146      key: 'desiredSize',
7147      get: function get() {
7148        if (IsTransformStreamDefaultController(this) === false) {
7149          throw defaultControllerBrandCheckException('desiredSize');
7150        }
7151        var transformStream = this._controlledTransformStream;
7152        var readableController = transformStream._readableController;
7153        return ReadableStreamDefaultControllerGetDesiredSize(readableController);
7154      }
7155    }]);
7156    return TransformStreamDefaultController;
7157  }();
7158  var TransformStream = function () {
7159    function TransformStream() {
7160      var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7161      _classCallCheck(this, TransformStream);
7162      this._transformer = transformer;
7163      var readableStrategy = transformer.readableStrategy,
7164          writableStrategy = transformer.writableStrategy;
7165      this._transforming = false;
7166      this._errored = false;
7167      this._storedError = undefined;
7168      this._writableController = undefined;
7169      this._readableController = undefined;
7170      this._transformStreamController = undefined;
7171      this._writableDone = false;
7172      this._readableClosed = false;
7173      this._backpressure = undefined;
7174      this._backpressureChangePromise = undefined;
7175      this._backpressureChangePromise_resolve = undefined;
7176      this._transformStreamController = new TransformStreamDefaultController(this);
7177      var startPromise_resolve = void 0;
7178      var startPromise = new Promise(function (resolve) {
7179        startPromise_resolve = resolve;
7180      });
7181      var source = new TransformStreamSource(this, startPromise);
7182      this._readable = new ReadableStream(source, readableStrategy);
7183      var sink = new TransformStreamSink(this, startPromise);
7184      this._writable = new WritableStream(sink, writableStrategy);
7185      assert(this._writableController !== undefined);
7186      assert(this._readableController !== undefined);
7187      var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);
7188      TransformStreamSetBackpressure(this, desiredSize <= 0);
7189      var transformStream = this;
7190      var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);
7191      startPromise_resolve(startResult);
7192      startPromise.catch(function (e) {
7193        if (transformStream._errored === false) {
7194          transformStream._errored = true;
7195          transformStream._storedError = e;
7196        }
7197      });
7198    }
7199    _createClass(TransformStream, [{
7200      key: 'readable',
7201      get: function get() {
7202        if (IsTransformStream(this) === false) {
7203          throw streamBrandCheckException('readable');
7204        }
7205        return this._readable;
7206      }
7207    }, {
7208      key: 'writable',
7209      get: function get() {
7210        if (IsTransformStream(this) === false) {
7211          throw streamBrandCheckException('writable');
7212        }
7213        return this._writable;
7214      }
7215    }]);
7216    return TransformStream;
7217  }();
7218  module.exports = { TransformStream: TransformStream };
7219  function defaultControllerBrandCheckException(name) {
7220    return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');
7221  }
7222  function streamBrandCheckException(name) {
7223    return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');
7224  }
7225}, function (module, exports, __w_pdfjs_require__) {
7226  module.exports = __w_pdfjs_require__(5);
7227}]));
7228
7229/***/ }),
7230/* 127 */
7231/***/ (function(module, exports, __w_pdfjs_require__) {
7232
7233"use strict";
7234
7235
7236var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
7237
7238{
7239  var isURLSupported = false;
7240  try {
7241    if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) {
7242      var u = new URL('b', 'http://a');
7243      u.pathname = 'c%20d';
7244      isURLSupported = u.href === 'http://a/c%20d';
7245    }
7246  } catch (ex) {}
7247  if (isURLSupported) {
7248    exports.URL = URL;
7249  } else {
7250    var PolyfillURL = __w_pdfjs_require__(128).URL;
7251    var OriginalURL = __w_pdfjs_require__(3).URL;
7252    if (OriginalURL) {
7253      PolyfillURL.createObjectURL = function (blob) {
7254        return OriginalURL.createObjectURL.apply(OriginalURL, arguments);
7255      };
7256      PolyfillURL.revokeObjectURL = function (url) {
7257        OriginalURL.revokeObjectURL(url);
7258      };
7259    }
7260    exports.URL = PolyfillURL;
7261  }
7262}
7263
7264/***/ }),
7265/* 128 */
7266/***/ (function(module, exports, __w_pdfjs_require__) {
7267
7268"use strict";
7269
7270
7271(function URLConstructorClosure() {
7272  'use strict';
7273
7274  var relative = Object.create(null);
7275  relative['ftp'] = 21;
7276  relative['file'] = 0;
7277  relative['gopher'] = 70;
7278  relative['http'] = 80;
7279  relative['https'] = 443;
7280  relative['ws'] = 80;
7281  relative['wss'] = 443;
7282  var relativePathDotMapping = Object.create(null);
7283  relativePathDotMapping['%2e'] = '.';
7284  relativePathDotMapping['.%2e'] = '..';
7285  relativePathDotMapping['%2e.'] = '..';
7286  relativePathDotMapping['%2e%2e'] = '..';
7287  function isRelativeScheme(scheme) {
7288    return relative[scheme] !== undefined;
7289  }
7290  function invalid() {
7291    clear.call(this);
7292    this._isInvalid = true;
7293  }
7294  function IDNAToASCII(h) {
7295    if (h === '') {
7296      invalid.call(this);
7297    }
7298    return h.toLowerCase();
7299  }
7300  function percentEscape(c) {
7301    var unicode = c.charCodeAt(0);
7302    if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) {
7303      return c;
7304    }
7305    return encodeURIComponent(c);
7306  }
7307  function percentEscapeQuery(c) {
7308    var unicode = c.charCodeAt(0);
7309    if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) {
7310      return c;
7311    }
7312    return encodeURIComponent(c);
7313  }
7314  var EOF,
7315      ALPHA = /[a-zA-Z]/,
7316      ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/;
7317  function parse(input, stateOverride, base) {
7318    function err(message) {
7319      errors.push(message);
7320    }
7321    var state = stateOverride || 'scheme start',
7322        cursor = 0,
7323        buffer = '',
7324        seenAt = false,
7325        seenBracket = false,
7326        errors = [];
7327    loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) {
7328      var c = input[cursor];
7329      switch (state) {
7330        case 'scheme start':
7331          if (c && ALPHA.test(c)) {
7332            buffer += c.toLowerCase();
7333            state = 'scheme';
7334          } else if (!stateOverride) {
7335            buffer = '';
7336            state = 'no scheme';
7337            continue;
7338          } else {
7339            err('Invalid scheme.');
7340            break loop;
7341          }
7342          break;
7343        case 'scheme':
7344          if (c && ALPHANUMERIC.test(c)) {
7345            buffer += c.toLowerCase();
7346          } else if (c === ':') {
7347            this._scheme = buffer;
7348            buffer = '';
7349            if (stateOverride) {
7350              break loop;
7351            }
7352            if (isRelativeScheme(this._scheme)) {
7353              this._isRelative = true;
7354            }
7355            if (this._scheme === 'file') {
7356              state = 'relative';
7357            } else if (this._isRelative && base && base._scheme === this._scheme) {
7358              state = 'relative or authority';
7359            } else if (this._isRelative) {
7360              state = 'authority first slash';
7361            } else {
7362              state = 'scheme data';
7363            }
7364          } else if (!stateOverride) {
7365            buffer = '';
7366            cursor = 0;
7367            state = 'no scheme';
7368            continue;
7369          } else if (c === EOF) {
7370            break loop;
7371          } else {
7372            err('Code point not allowed in scheme: ' + c);
7373            break loop;
7374          }
7375          break;
7376        case 'scheme data':
7377          if (c === '?') {
7378            this._query = '?';
7379            state = 'query';
7380          } else if (c === '#') {
7381            this._fragment = '#';
7382            state = 'fragment';
7383          } else {
7384            if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
7385              this._schemeData += percentEscape(c);
7386            }
7387          }
7388          break;
7389        case 'no scheme':
7390          if (!base || !isRelativeScheme(base._scheme)) {
7391            err('Missing scheme.');
7392            invalid.call(this);
7393          } else {
7394            state = 'relative';
7395            continue;
7396          }
7397          break;
7398        case 'relative or authority':
7399          if (c === '/' && input[cursor + 1] === '/') {
7400            state = 'authority ignore slashes';
7401          } else {
7402            err('Expected /, got: ' + c);
7403            state = 'relative';
7404            continue;
7405          }
7406          break;
7407        case 'relative':
7408          this._isRelative = true;
7409          if (this._scheme !== 'file') {
7410            this._scheme = base._scheme;
7411          }
7412          if (c === EOF) {
7413            this._host = base._host;
7414            this._port = base._port;
7415            this._path = base._path.slice();
7416            this._query = base._query;
7417            this._username = base._username;
7418            this._password = base._password;
7419            break loop;
7420          } else if (c === '/' || c === '\\') {
7421            if (c === '\\') {
7422              err('\\ is an invalid code point.');
7423            }
7424            state = 'relative slash';
7425          } else if (c === '?') {
7426            this._host = base._host;
7427            this._port = base._port;
7428            this._path = base._path.slice();
7429            this._query = '?';
7430            this._username = base._username;
7431            this._password = base._password;
7432            state = 'query';
7433          } else if (c === '#') {
7434            this._host = base._host;
7435            this._port = base._port;
7436            this._path = base._path.slice();
7437            this._query = base._query;
7438            this._fragment = '#';
7439            this._username = base._username;
7440            this._password = base._password;
7441            state = 'fragment';
7442          } else {
7443            var nextC = input[cursor + 1];
7444            var nextNextC = input[cursor + 2];
7445            if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') {
7446              this._host = base._host;
7447              this._port = base._port;
7448              this._username = base._username;
7449              this._password = base._password;
7450              this._path = base._path.slice();
7451              this._path.pop();
7452            }
7453            state = 'relative path';
7454            continue;
7455          }
7456          break;
7457        case 'relative slash':
7458          if (c === '/' || c === '\\') {
7459            if (c === '\\') {
7460              err('\\ is an invalid code point.');
7461            }
7462            if (this._scheme === 'file') {
7463              state = 'file host';
7464            } else {
7465              state = 'authority ignore slashes';
7466            }
7467          } else {
7468            if (this._scheme !== 'file') {
7469              this._host = base._host;
7470              this._port = base._port;
7471              this._username = base._username;
7472              this._password = base._password;
7473            }
7474            state = 'relative path';
7475            continue;
7476          }
7477          break;
7478        case 'authority first slash':
7479          if (c === '/') {
7480            state = 'authority second slash';
7481          } else {
7482            err('Expected \'/\', got: ' + c);
7483            state = 'authority ignore slashes';
7484            continue;
7485          }
7486          break;
7487        case 'authority second slash':
7488          state = 'authority ignore slashes';
7489          if (c !== '/') {
7490            err('Expected \'/\', got: ' + c);
7491            continue;
7492          }
7493          break;
7494        case 'authority ignore slashes':
7495          if (c !== '/' && c !== '\\') {
7496            state = 'authority';
7497            continue;
7498          } else {
7499            err('Expected authority, got: ' + c);
7500          }
7501          break;
7502        case 'authority':
7503          if (c === '@') {
7504            if (seenAt) {
7505              err('@ already seen.');
7506              buffer += '%40';
7507            }
7508            seenAt = true;
7509            for (var i = 0; i < buffer.length; i++) {
7510              var cp = buffer[i];
7511              if (cp === '\t' || cp === '\n' || cp === '\r') {
7512                err('Invalid whitespace in authority.');
7513                continue;
7514              }
7515              if (cp === ':' && this._password === null) {
7516                this._password = '';
7517                continue;
7518              }
7519              var tempC = percentEscape(cp);
7520              if (this._password !== null) {
7521                this._password += tempC;
7522              } else {
7523                this._username += tempC;
7524              }
7525            }
7526            buffer = '';
7527          } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
7528            cursor -= buffer.length;
7529            buffer = '';
7530            state = 'host';
7531            continue;
7532          } else {
7533            buffer += c;
7534          }
7535          break;
7536        case 'file host':
7537          if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
7538            if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) {
7539              state = 'relative path';
7540            } else if (buffer.length === 0) {
7541              state = 'relative path start';
7542            } else {
7543              this._host = IDNAToASCII.call(this, buffer);
7544              buffer = '';
7545              state = 'relative path start';
7546            }
7547            continue;
7548          } else if (c === '\t' || c === '\n' || c === '\r') {
7549            err('Invalid whitespace in file host.');
7550          } else {
7551            buffer += c;
7552          }
7553          break;
7554        case 'host':
7555        case 'hostname':
7556          if (c === ':' && !seenBracket) {
7557            this._host = IDNAToASCII.call(this, buffer);
7558            buffer = '';
7559            state = 'port';
7560            if (stateOverride === 'hostname') {
7561              break loop;
7562            }
7563          } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
7564            this._host = IDNAToASCII.call(this, buffer);
7565            buffer = '';
7566            state = 'relative path start';
7567            if (stateOverride) {
7568              break loop;
7569            }
7570            continue;
7571          } else if (c !== '\t' && c !== '\n' && c !== '\r') {
7572            if (c === '[') {
7573              seenBracket = true;
7574            } else if (c === ']') {
7575              seenBracket = false;
7576            }
7577            buffer += c;
7578          } else {
7579            err('Invalid code point in host/hostname: ' + c);
7580          }
7581          break;
7582        case 'port':
7583          if (/[0-9]/.test(c)) {
7584            buffer += c;
7585          } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) {
7586            if (buffer !== '') {
7587              var temp = parseInt(buffer, 10);
7588              if (temp !== relative[this._scheme]) {
7589                this._port = temp + '';
7590              }
7591              buffer = '';
7592            }
7593            if (stateOverride) {
7594              break loop;
7595            }
7596            state = 'relative path start';
7597            continue;
7598          } else if (c === '\t' || c === '\n' || c === '\r') {
7599            err('Invalid code point in port: ' + c);
7600          } else {
7601            invalid.call(this);
7602          }
7603          break;
7604        case 'relative path start':
7605          if (c === '\\') {
7606            err('\'\\\' not allowed in path.');
7607          }
7608          state = 'relative path';
7609          if (c !== '/' && c !== '\\') {
7610            continue;
7611          }
7612          break;
7613        case 'relative path':
7614          if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) {
7615            if (c === '\\') {
7616              err('\\ not allowed in relative path.');
7617            }
7618            var tmp;
7619            if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {
7620              buffer = tmp;
7621            }
7622            if (buffer === '..') {
7623              this._path.pop();
7624              if (c !== '/' && c !== '\\') {
7625                this._path.push('');
7626              }
7627            } else if (buffer === '.' && c !== '/' && c !== '\\') {
7628              this._path.push('');
7629            } else if (buffer !== '.') {
7630              if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') {
7631                buffer = buffer[0] + ':';
7632              }
7633              this._path.push(buffer);
7634            }
7635            buffer = '';
7636            if (c === '?') {
7637              this._query = '?';
7638              state = 'query';
7639            } else if (c === '#') {
7640              this._fragment = '#';
7641              state = 'fragment';
7642            }
7643          } else if (c !== '\t' && c !== '\n' && c !== '\r') {
7644            buffer += percentEscape(c);
7645          }
7646          break;
7647        case 'query':
7648          if (!stateOverride && c === '#') {
7649            this._fragment = '#';
7650            state = 'fragment';
7651          } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
7652            this._query += percentEscapeQuery(c);
7653          }
7654          break;
7655        case 'fragment':
7656          if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
7657            this._fragment += c;
7658          }
7659          break;
7660      }
7661      cursor++;
7662    }
7663  }
7664  function clear() {
7665    this._scheme = '';
7666    this._schemeData = '';
7667    this._username = '';
7668    this._password = null;
7669    this._host = '';
7670    this._port = '';
7671    this._path = [];
7672    this._query = '';
7673    this._fragment = '';
7674    this._isInvalid = false;
7675    this._isRelative = false;
7676  }
7677  function JURL(url, base) {
7678    if (base !== undefined && !(base instanceof JURL)) {
7679      base = new JURL(String(base));
7680    }
7681    this._url = url;
7682    clear.call(this);
7683    var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, '');
7684    parse.call(this, input, null, base);
7685  }
7686  JURL.prototype = {
7687    toString: function toString() {
7688      return this.href;
7689    },
7690
7691    get href() {
7692      if (this._isInvalid) {
7693        return this._url;
7694      }
7695      var authority = '';
7696      if (this._username !== '' || this._password !== null) {
7697        authority = this._username + (this._password !== null ? ':' + this._password : '') + '@';
7698      }
7699      return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment;
7700    },
7701    set href(value) {
7702      clear.call(this);
7703      parse.call(this, value);
7704    },
7705    get protocol() {
7706      return this._scheme + ':';
7707    },
7708    set protocol(value) {
7709      if (this._isInvalid) {
7710        return;
7711      }
7712      parse.call(this, value + ':', 'scheme start');
7713    },
7714    get host() {
7715      return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host;
7716    },
7717    set host(value) {
7718      if (this._isInvalid || !this._isRelative) {
7719        return;
7720      }
7721      parse.call(this, value, 'host');
7722    },
7723    get hostname() {
7724      return this._host;
7725    },
7726    set hostname(value) {
7727      if (this._isInvalid || !this._isRelative) {
7728        return;
7729      }
7730      parse.call(this, value, 'hostname');
7731    },
7732    get port() {
7733      return this._port;
7734    },
7735    set port(value) {
7736      if (this._isInvalid || !this._isRelative) {
7737        return;
7738      }
7739      parse.call(this, value, 'port');
7740    },
7741    get pathname() {
7742      return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData;
7743    },
7744    set pathname(value) {
7745      if (this._isInvalid || !this._isRelative) {
7746        return;
7747      }
7748      this._path = [];
7749      parse.call(this, value, 'relative path start');
7750    },
7751    get search() {
7752      return this._isInvalid || !this._query || this._query === '?' ? '' : this._query;
7753    },
7754    set search(value) {
7755      if (this._isInvalid || !this._isRelative) {
7756        return;
7757      }
7758      this._query = '?';
7759      if (value[0] === '?') {
7760        value = value.slice(1);
7761      }
7762      parse.call(this, value, 'query');
7763    },
7764    get hash() {
7765      return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment;
7766    },
7767    set hash(value) {
7768      if (this._isInvalid) {
7769        return;
7770      }
7771      this._fragment = '#';
7772      if (value[0] === '#') {
7773        value = value.slice(1);
7774      }
7775      parse.call(this, value, 'fragment');
7776    },
7777    get origin() {
7778      var host;
7779      if (this._isInvalid || !this._scheme) {
7780        return '';
7781      }
7782      switch (this._scheme) {
7783        case 'data':
7784        case 'file':
7785        case 'javascript':
7786        case 'mailto':
7787          return 'null';
7788        case 'blob':
7789          try {
7790            return new JURL(this._schemeData).origin || 'null';
7791          } catch (_) {}
7792          return 'null';
7793      }
7794      host = this.host;
7795      if (!host) {
7796        return '';
7797      }
7798      return this._scheme + '://' + host;
7799    }
7800  };
7801  exports.URL = JURL;
7802})();
7803
7804/***/ }),
7805/* 129 */
7806/***/ (function(module, exports, __w_pdfjs_require__) {
7807
7808"use strict";
7809
7810
7811Object.defineProperty(exports, "__esModule", {
7812  value: true
7813});
7814exports.build = exports.version = exports.setPDFNetworkStreamFactory = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.getDocument = undefined;
7815
7816var _slicedToArray = function () { function sliceIterator(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"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); }
7816 else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
7817
7818var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
7819
7820var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
7821
7822var _util = __w_pdfjs_require__(1);
7823
7824var _dom_utils = __w_pdfjs_require__(130);
7825
7826var _font_loader = __w_pdfjs_require__(131);
7827
7828var _api_compatibility = __w_pdfjs_require__(132);
7829
7830var _canvas = __w_pdfjs_require__(133);
7831
7832var _global_scope = __w_pdfjs_require__(3);
7833
7834var _global_scope2 = _interopRequireDefault(_global_scope);
7835
7836var _worker_options = __w_pdfjs_require__(135);
7837
7838var _message_handler = __w_pdfjs_require__(136);
7839
7840var _metadata = __w_pdfjs_require__(141);
7841
7842var _transport_stream = __w_pdfjs_require__(143);
7843
7844var _webgl = __w_pdfjs_require__(144);
7845
7846function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7847
7848function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
7849
7850function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7851
7852var DEFAULT_RANGE_CHUNK_SIZE = 65536;
7853var isWorkerDisabled = false;
7854var fallbackWorkerSrc = void 0;
7855var fakeWorkerFilesLoader = null;
7856{
7857  var useRequireEnsure = false;
7858  if (typeof window === 'undefined') {
7859    isWorkerDisabled = true;
7860    if (typeof require.ensure === 'undefined') {
7861      require.ensure = require('node-ensure');
7862    }
7863    useRequireEnsure = true;
7864  } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') {
7865    useRequireEnsure = true;
7866  }
7867  if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
7868    fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');
7869  }
7870  var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load;
7871  fakeWorkerFilesLoader = useRequireEnsure ? function () {
7872    return new Promise(function (resolve, reject) {
7873      require.ensure([], function () {
7874        try {
7875          var worker = void 0;
7876          worker = require('./pdf.worker.js');
7877          resolve(worker.WorkerMessageHandler);
7878        } catch (ex) {
7879          reject(ex);
7880        }
7881      }, reject, 'pdfjsWorker');
7882    });
7883  } : dynamicLoaderSupported ? function () {
7884    return new Promise(function (resolve, reject) {
7885      requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {
7886        try {
7887          resolve(worker.WorkerMessageHandler);
7888        } catch (ex) {
7889          reject(ex);
7890        }
7891      }, reject);
7892    });
7893  } : null;
7894  if (!fallbackWorkerSrc && typeof document !== 'undefined') {
7895    var pdfjsFilePath = document.currentScript && document.currentScript.src;
7896    if (pdfjsFilePath) {
7897      fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2');
7898    }
7899  }
7900}
7901var createPDFNetworkStream;
7902function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
7903  createPDFNetworkStream = pdfNetworkStreamFactory;
7904}
7905function getDocument(src) {
7906  var task = new PDFDocumentLoadingTask();
7907  var source;
7908  if (typeof src === 'string') {
7909    source = { url: src };
7910  } else if ((0, _util.isArrayBuffer)(src)) {
7911    source = { data: src };
7912  } else if (src instanceof PDFDataRangeTransport) {
7913    source = { range: src };
7914  } else {
7915    if ((typeof src === 'undefined' ? 'undefined' : _typeof(src)) !== 'object') {
7916      throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object');
7917    }
7918    if (!src.url && !src.data && !src.range) {
7919      throw new Error('Invalid parameter object: need either .data, .range or .url');
7920    }
7921    source = src;
7922  }
7923  var params = Object.create(null);
7924  var rangeTransport = null;
7925  var worker = null;
7926  for (var key in source) {
7927    if (key === 'url' && typeof window !== 'undefined') {
7928      params[key] = new _util.URL(source[key], window.location).href;
7929      continue;
7930    } else if (key === 'range') {
7931      rangeTransport = source[key];
7932      continue;
7933    } else if (key === 'worker') {
7934      worker = source[key];
7935      continue;
7936    } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
7937      var pdfBytes = source[key];
7938      if (typeof pdfBytes === 'string') {
7939        params[key] = (0, _util.stringToBytes)(pdfBytes);
7940      } else if ((typeof pdfBytes === 'undefined' ? 'undefined' : _typeof(pdfBytes)) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) {
7941        params[key] = new Uint8Array(pdfBytes);
7942      } else if ((0, _util.isArrayBuffer)(pdfBytes)) {
7943        params[key] = new Uint8Array(pdfBytes);
7944      } else {
7945        throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.');
7946      }
7947      continue;
7948    }
7949    params[key] = source[key];
7950  }
7951  params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
7952  params.CMapReaderFactory = params.CMapReaderFactory || _dom_utils.DOMCMapReaderFactory;
7953  params.ignoreErrors = params.stopAtErrors !== true;
7954  params.pdfBug = params.pdfBug === true;
7955  var NativeImageDecoderValues = Object.values(_util.NativeImageDecoding);
7956  if (params.nativeImageDecoderSupport === undefined || !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {
7957    params.nativeImageDecoderSupport = _api_compatibility.apiCompatibilityParams.nativeImageDecoderSupport || _util.NativeImageDecoding.DECODE;
7958  }
7959  if (!Number.isInteger(params.maxImageSize)) {
7960    params.maxImageSize = -1;
7961  }
7962  if (typeof params.isEvalSupported !== 'boolean') {
7963    params.isEvalSupported = true;
7964  }
7965  if (typeof params.disableFontFace !== 'boolean') {
7966    params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;
7967  }
7968  if (typeof params.disableRange !== 'boolean') {
7969    params.disableRange = false;
7970  }
7971  if (typeof params.disableStream !== 'boolean') {
7972    params.disableStream = false;
7973  }
7974  if (typeof params.disableAutoFetch !== 'boolean') {
7975    params.disableAutoFetch = false;
7976  }
7977  if (typeof params.disableCreateObjectURL !== 'boolean') {
7978    params.disableCreateObjectURL = _api_compatibility.apiCompatibilityParams.disableCreateObjectURL || false;
7979  }
7980  (0, _util.setVerbosityLevel)(params.verbosity);
7981  if (!worker) {
7982    var workerParams = {
7983      postMessageTransfers: params.postMessageTransfers,
7984      verbosity: params.verbosity
7985    };
7986    var workerPort = _worker_options.GlobalWorkerOptions.workerPort;
7987    if (workerPort) {
7988      workerParams.port = workerPort;
7989      worker = PDFWorker.fromPort(workerParams);
7990    } else {
7991      worker = new PDFWorker(workerParams);
7992    }
7993    task._worker = worker;
7994  }
7995  var docId = task.docId;
7996  worker.promise.then(function () {
7997    if (task.destroyed) {
7998      throw new Error('Loading aborted');
7999    }
8000    return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) {
8001      if (task.destroyed) {
8002        throw new Error('Loading aborted');
8003      }
8004      var networkStream = void 0;
8005      if (rangeTransport) {
8006        networkStream = new _transport_stream.PDFDataTransportStream({
8007          length: params.length,
8008          initialData: params.initialData,
8009          disableRange: params.disableRange,
8010          disableStream: params.disableStream
8011        }, rangeTransport);
8012      } else if (!params.data) {
8013        networkStream = createPDFNetworkStream({
8014          url: params.url,
8015          length: params.length,
8016          httpHeaders: params.httpHeaders,
8017          withCredentials: params.withCredentials,
8018          rangeChunkSize: params.rangeChunkSize,
8019          disableRange: params.disableRange,
8020          disableStream: params.disableStream
8021        });
8022      }
8023      var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
8024      messageHandler.postMessageTransfers = worker.postMessageTransfers;
8025      var transport = new WorkerTransport(messageHandler, task, networkStream, params);
8026      task._transport = transport;
8027      messageHandler.send('Ready', null);
8028    });
8029  }).catch(task._capability.reject);
8030  return task;
8031}
8032function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
8033  if (worker.destroyed) {
8034    return Promise.reject(new Error('Worker was destroyed'));
8035  }
8036  if (pdfDataRangeTransport) {
8037    source.length = pdfDataRangeTransport.length;
8038    source.initialData = pdfDataRangeTransport.initialData;
8039  }
8040  return worker.messageHandler.sendWithPromise('GetDocRequest', {
8041    docId: docId,
8042    apiVersion: '2.0.943',
8043    source: {
8044      data: source.data,
8045      url: source.url,
8046      password: source.password,
8047      disableAutoFetch: source.disableAutoFetch,
8048      rangeChunkSize: source.rangeChunkSize,
8049      length: source.length
8050    },
8051    maxImageSize: source.maxImageSize,
8052    disableFontFace: source.disableFontFace,
8053    disableCreateObjectURL: source.disableCreateObjectURL,
8054    postMessageTransfers: worker.postMessageTransfers,
8055    docBaseUrl: source.docBaseUrl,
8056    nativeImageDecoderSupport: source.nativeImageDecoderSupport,
8057    ignoreErrors: source.ignoreErrors,
8058    isEvalSupported: source.isEvalSupported
8059  }).then(function (workerId) {
8060    if (worker.destroyed) {
8061      throw new Error('Worker was destroyed');
8062    }
8063    return workerId;
8064  });
8065}
8066var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
8067  var nextDocumentId = 0;
8068  function PDFDocumentLoadingTask() {
8069    this._capability = (0, _util.createPromiseCapability)();
8070    this._transport = null;
8071    this._worker = null;
8072    this.docId = 'd' + nextDocumentId++;
8073    this.destroyed = false;
8074    this.onPassword = null;
8075    this.onProgress = null;
8076    this.onUnsupportedFeature = null;
8077  }
8078  PDFDocumentLoadingTask.prototype = {
8079    get promise() {
8080      return this._capability.promise;
8081    },
8082    destroy: function destroy() {
8083      var _this = this;
8084
8085      this.destroyed = true;
8086      var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
8087      return transportDestroyed.then(function () {
8088        _this._transport = null;
8089        if (_this._worker) {
8090          _this._worker.destroy();
8091          _this._worker = null;
8092        }
8093      });
8094    },
8095
8096    then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {
8097      return this.promise.then.apply(this.promise, arguments);
8098    }
8099  };
8100  return PDFDocumentLoadingTask;
8101}();
8102
8103var PDFDataRangeTransport = function () {
8104  function PDFDataRangeTransport(length, initialData) {
8105    _classCallCheck(this, PDFDataRangeTransport);
8106
8107    this.length = length;
8108    this.initialData = initialData;
8109    this._rangeListeners = [];
8110    this._progressListeners = [];
8111    this._progressiveReadListeners = [];
8112    this._readyCapability = (0, _util.createPromiseCapability)();
8113  }
8114
8115  _createClass(PDFDataRangeTransport, [{
8116    key: 'addRangeListener',
8117    value: function addRangeListener(listener) {
8118      this._rangeListeners.push(listener);
8119    }
8120  }, {
8121    key: 'addProgressListener',
8122    value: function addProgressListener(listener) {
8123      this._progressListeners.push(listener);
8124    }
8125  }, {
8126    key: 'addProgressiveReadListener',
8127    value: function addProgressiveReadListener(listener) {
8128      this._progressiveReadListeners.push(listener);
8129    }
8130  }, {
8131    key: 'onDataRange',
8132    value: function onDataRange(begin, chunk) {
8133      var _iteratorNormalCompletion = true;
8134      var _didIteratorError = false;
8135      var _iteratorError = undefined;
8136
8137      try {
8138        for (var _iterator = this._rangeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
8139          var listener = _step.value;
8140
8141          listener(begin, chunk);
8142        }
8143      } catch (err) {
8144        _didIteratorError = true;
8145        _iteratorError = err;
8146      } finally {
8147        try {
8148          if (!_iteratorNormalCompletion && _iterator.return) {
8149            _iterator.return();
8150          }
8151        } finally {
8152          if (_didIteratorError) {
8153            throw _iteratorError;
8154          }
8155        }
8156      }
8157    }
8158  }, {
8159    key: 'onDataProgress',
8160    value: function onDataProgress(loaded) {
8161      var _this2 = this;
8162
8163      this._readyCapability.promise.then(function () {
8164        var _iteratorNormalCompletion2 = true;
8165        var _didIteratorError2 = false;
8166        var _iteratorError2 = undefined;
8167
8168        try {
8169          for (var _iterator2 = _this2._progressListeners[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
8170            var listener = _step2.value;
8171
8172            listener(loaded);
8173          }
8174        } catch (err) {
8175          _didIteratorError2 = true;
8176          _iteratorError2 = err;
8177        } finally {
8178          try {
8179            if (!_iteratorNormalCompletion2 && _iterator2.return) {
8180              _iterator2.return();
8181            }
8182          } finally {
8183            if (_didIteratorError2) {
8184              throw _iteratorError2;
8185            }
8186          }
8187        }
8188      });
8189    }
8190  }, {
8191    key: 'onDataProgressiveRead',
8192    value: function onDataProgressiveRead(chunk) {
8193      var _this3 = this;
8194
8195      this._readyCapability.promise.then(function () {
8196        var _iteratorNormalCompletion3 = true;
8197        var _didIteratorError3 = false;
8198        var _iteratorError3 = undefined;
8199
8200        try {
8201          for (var _iterator3 = _this3._progressiveReadListeners[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
8202            var listener = _step3.value;
8203
8204            listener(chunk);
8205          }
8206        } catch (err) {
8207          _didIteratorError3 = true;
8208          _iteratorError3 = err;
8209        } finally {
8210          try {
8211            if (!_iteratorNormalCompletion3 && _iterator3.return) {
8212              _iterator3.return();
8213            }
8214          } finally {
8215            if (_didIteratorError3) {
8216              throw _iteratorError3;
8217            }
8218          }
8219        }
8220      });
8221    }
8222  }, {
8223    key: 'transportReady',
8224    value: function transportReady() {
8225      this._readyCapability.resolve();
8226    }
8227  }, {
8228    key: 'requestDataRange',
8229    value: function requestDataRange(begin, end) {
8230      (0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange');
8231    }
8232  }, {
8233    key: 'abort',
8234    value: function abort() {}
8235  }]);
8236
8237  return PDFDataRangeTransport;
8238}();
8239
8240var PDFDocumentProxy = function () {
8241  function PDFDocumentProxy(pdfInfo, transport, loadingTask) {
8242    _classCallCheck(this, PDFDocumentProxy);
8243
8244    this.loadingTask = loadingTask;
8245    this._pdfInfo = pdfInfo;
8246    this._transport = transport;
8247  }
8248
8249  _createClass(PDFDocumentProxy, [{
8250    key: 'getPage',
8251    value: function getPage(pageNumber) {
8252      return this._transport.getPage(pageNumber);
8253    }
8254  }, {
8255    key: 'getPageIndex',
8256    value: function getPageIndex(ref) {
8257      return this._transport.getPageIndex(ref);
8258    }
8259  }, {
8260    key: 'getDestinations',
8261    value: function getDestinations() {
8262      return this._transport.getDestinations();
8263    }
8264  }, {
8265    key: 'getDestination',
8266    value: function getDestination(id) {
8267      return this._transport.getDestination(id);
8268    }
8269  }, {
8270    key: 'getPageLabels',
8271    value: function getPageLabels() {
8272      return this._transport.getPageLabels();
8273    }
8274  }, {
8275    key: 'getPageMode',
8276    value: function getPageMode() {
8277      return this._transport.getPageMode();
8278    }
8279  }, {
8280    key: 'getAttachments',
8281    value: function getAttachments() {
8282      return this._transport.getAttachments();
8283    }
8284  }, {
8285    key: 'getJavaScript',
8286    value: function getJavaScript() {
8287      return this._transport.getJavaScript();
8288    }
8289  }, {
8290    key: 'getOutline',
8291    value: function getOutline() {
8292      return this._transport.getOutline();
8293    }
8294  }, {
8295    key: 'getPermissions',
8296    value: function getPermissions() {
8297      return this._transport.getPermissions();
8298    }
8299  }, {
8300    key: 'getMetadata',
8301    value: function getMetadata() {
8302      return this._transport.getMetadata();
8303    }
8304  }, {
8305    key: 'getData',
8306    value: function getData() {
8307      return this._transport.getData();
8308    }
8309  }, {
8310    key: 'getDownloadInfo',
8311    value: function getDownloadInfo() {
8312      return this._transport.downloadInfoCapability.promise;
8313    }
8314  }, {
8315    key: 'getStats',
8316    value: function getStats() {
8317      return this._transport.getStats();
8318    }
8319  }, {
8320    key: 'cleanup',
8321    value: function cleanup() {
8322      this._transport.startCleanup();
8323    }
8324  }, {
8325    key: 'destroy',
8326    value: function destroy() {
8327      return this.loadingTask.destroy();
8328    }
8329  }, {
8330    key: 'numPages',
8331    get: function get() {
8332      return this._pdfInfo.numPages;
8333    }
8334  }, {
8335    key: 'fingerprint',
8336    get: function get() {
8337      return this._pdfInfo.fingerprint;
8338    }
8339  }, {
8340    key: 'loadingParams',
8341    get: function get() {
8342      return this._transport.loadingParams;
8343    }
8344  }]);
8345
8346  return PDFDocumentProxy;
8347}();
8348
8349var PDFPageProxy = function PDFPageProxyClosure() {
8350  function PDFPageProxy(pageIndex, pageInfo, transport) {
8351    var pdfBug = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
8352
8353    this.pageIndex = pageIndex;
8354    this._pageInfo = pageInfo;
8355    this.transport = transport;
8356    this._stats = pdfBug ? new _dom_utils.StatTimer() : _dom_utils.DummyStatTimer;
8357    this._pdfBug = pdfBug;
8358    this.commonObjs = transport.commonObjs;
8359    this.objs = new PDFObjects();
8360    this.cleanupAfterRender = false;
8361    this.pendingCleanup = false;
8362    this.intentStates = Object.create(null);
8363    this.destroyed = false;
8364  }
8365  PDFPageProxy.prototype = {
8366    get pageNumber() {
8367      return this.pageIndex + 1;
8368    },
8369    get rotate() {
8370      return this._pageInfo.rotate;
8371    },
8372    get ref() {
8373      return this._pageInfo.ref;
8374    },
8375    get userUnit() {
8376      return this._pageInfo.userUnit;
8377    },
8378    get view() {
8379      return this._pageInfo.view;
8380    },
8381    getViewport: function getViewport(scale) {
8382      var rotate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.rotate;
8383      var dontFlip = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
8384
8385      return new _dom_utils.PageViewport({
8386        viewBox: this.view,
8387        scale: scale,
8388        rotation: rotate,
8389        dontFlip: dontFlip
8390      });
8391    },
8392
8393    getAnnotations: function PDFPageProxy_getAnnotations(params) {
8394      var intent = params && params.intent || null;
8395      if (!this.annotationsPromise || this.annotationsIntent !== intent) {
8396        this.annotationsPromise = this.transport.getAnnotations(this.pageIndex, intent);
8397        this.annotationsIntent = intent;
8398      }
8399      return this.annotationsPromise;
8400    },
8401    render: function PDFPageProxy_render(params) {
8402      var _this4 = this;
8403
8404      var stats = this._stats;
8405      stats.time('Overall');
8406      this.pendingCleanup = false;
8407      var renderingIntent = params.intent === 'print' ? 'print' : 'display';
8408      var canvasFactory = params.canvasFactory || new _dom_utils.DOMCanvasFactory();
8409      var webGLContext = new _webgl.WebGLContext({ enable: params.enableWebGL });
8410      if (!this.intentStates[renderingIntent]) {
8411        this.intentStates[renderingIntent] = Object.create(null);
8412      }
8413      var intentState = this.intentStates[renderingIntent];
8414      if (!intentState.displayReadyCapability) {
8415        intentState.receivingOperatorList = true;
8416        intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
8417        intentState.operatorList = {
8418          fnArray: [],
8419          argsArray: [],
8420          lastChunk: false
8421        };
8422        stats.time('Page Request');
8423        this.transport.messageHandler.send('RenderPageRequest', {
8424          pageIndex: this.pageNumber - 1,
8425          intent: renderingIntent,
8426          renderInteractiveForms: params.renderInteractiveForms === true
8427        });
8428      }
8429      var complete = function complete(error) {
8430        var i = intentState.renderTasks.indexOf(internalRenderTask);
8431        if (i >= 0) {
8432          intentState.renderTasks.splice(i, 1);
8433        }
8434        if (_this4.cleanupAfterRender) {
8435          _this4.pendingCleanup = true;
8436        }
8437        _this4._tryCleanup();
8438        if (error) {
8439          internalRenderTask.capability.reject(error);
8440        } else {
8441          internalRenderTask.capability.resolve();
8442        }
8443        stats.timeEnd('Rendering');
8444        stats.timeEnd('Overall');
8445      };
8446      var internalRenderTask = new InternalRenderTask(complete, params, this.objs, this.commonObjs, intentState.operatorList, this.pageNumber, canvasFactory, webGLContext, this._pdfBug);
8447      internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';
8448      if (!intentState.renderTasks) {
8449        intentState.renderTasks = [];
8450      }
8451      intentState.renderTasks.push(internalRenderTask);
8452      var renderTask = internalRenderTask.task;
8453      intentState.displayReadyCapability.promise.then(function (transparency) {
8454        if (_this4.pendingCleanup) {
8455          complete();
8456          return;
8457        }
8458        stats.time('Rendering');
8459        internalRenderTask.initializeGraphics(transparency);
8460        internalRenderTask.operatorListChanged();
8461      }).catch(complete);
8462      return renderTask;
8463    },
8464    getOperatorList: function PDFPageProxy_getOperatorList() {
8465      function operatorListChanged() {
8466        if (intentState.operatorList.lastChunk) {
8467          intentState.opListReadCapability.resolve(intentState.operatorList);
8468          var i = intentState.renderTasks.indexOf(opListTask);
8469          if (i >= 0) {
8470            intentState.renderTasks.splice(i, 1);
8471          }
8472        }
8473      }
8474      var renderingIntent = 'oplist';
8475      if (!this.intentStates[renderingIntent]) {
8476        this.intentStates[renderingIntent] = Object.create(null);
8477      }
8478      var intentState = this.intentStates[renderingIntent];
8479      var opListTask;
8480      if (!intentState.opListReadCapability) {
8481        opListTask = {};
8482        opListTask.operatorListChanged = operatorListChanged;
8483        intentState.receivingOperatorList = true;
8484        intentState.opListReadCapability = (0, _util.createPromiseCapability)();
8485        intentState.renderTasks = [];
8486        intentState.renderTasks.push(opListTask);
8487        intentState.operatorList = {
8488          fnArray: [],
8489          argsArray: [],
8490          lastChunk: false
8491        };
8492        this._stats.time('Page Request');
8493        this.transport.messageHandler.send('RenderPageRequest', {
8494          pageIndex: this.pageIndex,
8495          intent: renderingIntent
8496        });
8497      }
8498      return intentState.opListReadCapability.promise;
8499    },
8500    streamTextContent: function streamTextContent() {
8501      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8502
8503      var TEXT_CONTENT_CHUNK_SIZE = 100;
8504      return this.transport.messageHandler.sendWithStream('GetTextContent', {
8505        pageIndex: this.pageNumber - 1,
8506        normalizeWhitespace: params.normalizeWhitespace === true,
8507        combineTextItems: params.disableCombineTextItems !== true
8508      }, {
8509        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
8510        size: function size(textContent) {
8511          return textContent.items.length;
8512        }
8513      });
8514    },
8515
8516    getTextContent: function PDFPageProxy_getTextContent(params) {
8517      params = params || {};
8518      var readableStream = this.streamTextContent(params);
8519      return new Promise(function (resolve, reject) {
8520        function pump() {
8521          reader.read().then(function (_ref) {
8522            var _textContent$items;
8523
8524            var value = _ref.value,
8525                done = _ref.done;
8526
8527            if (done) {
8528              resolve(textContent);
8529              return;
8530            }
8531            Object.assign(textContent.styles, value.styles);
8532            (_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items));
8533            pump();
8534          }, reject);
8535        }
8536        var reader = readableStream.getReader();
8537        var textContent = {
8538          items: [],
8539          styles: Object.create(null)
8540        };
8541        pump();
8542      });
8543    },
8544    _destroy: function PDFPageProxy_destroy() {
8545      this.destroyed = true;
8546      this.transport.pageCache[this.pageIndex] = null;
8547      var waitOn = [];
8548      Object.keys(this.intentStates).forEach(function (intent) {
8549        if (intent === 'oplist') {
8550          return;
8551        }
8552        var intentState = this.intentStates[intent];
8553        intentState.renderTasks.forEach(function (renderTask) {
8554          var renderCompleted = renderTask.capability.promise.catch(function () {});
8555          waitOn.push(renderCompleted);
8556          renderTask.cancel();
8557        });
8558      }, this);
8559      this.objs.clear();
8560      this.annotationsPromise = null;
8561      this.pendingCleanup = false;
8562      return Promise.all(waitOn);
8563    },
8564    cleanup: function cleanup() {
8565      var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
8566
8567      this.pendingCleanup = true;
8568      this._tryCleanup(resetStats);
8569    },
8570    _tryCleanup: function _tryCleanup() {
8571      var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
8572
8573      if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {
8574        var intentState = this.intentStates[intent];
8575        return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;
8576      }, this)) {
8577        return;
8578      }
8579      Object.keys(this.intentStates).forEach(function (intent) {
8580        delete this.intentStates[intent];
8581      }, this);
8582      this.objs.clear();
8583      this.annotationsPromise = null;
8584      if (resetStats && this._stats instanceof _dom_utils.StatTimer) {
8585        this._stats = new _dom_utils.StatTimer();
8586      }
8587      this.pendingCleanup = false;
8588    },
8589
8590    _startRenderPage: function PDFPageProxy_startRenderPage(transparency, intent) {
8591      var intentState = this.intentStates[intent];
8592      if (intentState.displayReadyCapability) {
8593        intentState.displayReadyCapability.resolve(transparency);
8594      }
8595    },
8596    _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk, intent) {
8597      var intentState = this.intentStates[intent];
8598      var i, ii;
8599      for (i = 0, ii = operatorListChunk.length; i < ii; i++) {
8600        intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
8601        intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
8602      }
8603      intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
8604      for (i = 0; i < intentState.renderTasks.length; i++) {
8605        intentState.renderTasks[i].operatorListChanged();
8606      }
8607      if (operatorListChunk.lastChunk) {
8608        intentState.receivingOperatorList = false;
8609        this._tryCleanup();
8610      }
8611    },
8612    get stats() {
8613      return this._stats instanceof _dom_utils.StatTimer ? this._stats : null;
8614    }
8615  };
8616  return PDFPageProxy;
8617}();
8618
8619var LoopbackPort = function () {
8620  function LoopbackPort() {
8621    var defer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
8622
8623    _classCallCheck(this, LoopbackPort);
8624
8625    this._listeners = [];
8626    this._defer = defer;
8627    this._deferred = Promise.resolve(undefined);
8628  }
8629
8630  _createClass(LoopbackPort, [{
8631    key: 'postMessage',
8632    value: function postMessage(obj, transfers) {
8633      var _this5 = this;
8634
8635      function cloneValue(value) {
8636        if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object' || value === null) {
8637          return value;
8638        }
8639        if (cloned.has(value)) {
8640          return cloned.get(value);
8641        }
8642        var result;
8643        var buffer;
8644        if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
8645          var transferable = transfers && transfers.includes(buffer);
8646          if (value === buffer) {
8647            result = value;
8648          } else if (transferable) {
8649            result = new value.constructor(buffer, value.byteOffset, value.byteLength);
8650          } else {
8651            result = new value.constructor(value);
8652          }
8653          cloned.set(value, result);
8654          return result;
8655        }
8656        result = Array.isArray(value) ? [] : {};
8657        cloned.set(value, result);
8658        for (var i in value) {
8659          var desc,
8660              p = value;
8661          while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
8662            p = Object.getPrototypeOf(p);
8663          }
8664          if (typeof desc.value === 'undefined' || typeof desc.value === 'function') {
8665            continue;
8666          }
8667          result[i] = cloneValue(desc.value);
8668        }
8669        return result;
8670      }
8671      if (!this._defer) {
8672        this._listeners.forEach(function (listener) {
8673          listener.call(this, { data: obj });
8674        }, this);
8675        return;
8676      }
8677      var cloned = new WeakMap();
8678      var e = { data: cloneValue(obj) };
8679      this._deferred.then(function () {
8680        _this5._listeners.forEach(function (listener) {
8681          listener.call(this, e);
8682        }, _this5);
8683      });
8684    }
8685  }, {
8686    key: 'addEventListener',
8687    value: function addEventListener(name, listener) {
8688      this._listeners.push(listener);
8689    }
8690  }, {
8691    key: 'removeEventListener',
8692    value: function removeEventListener(name, listener) {
8693      var i = this._listeners.indexOf(listener);
8694      this._listeners.splice(i, 1);
8695    }
8696  }, {
8697    key: 'terminate',
8698    value: function terminate() {
8699      this._listeners = [];
8700    }
8701  }]);
8702
8703  return LoopbackPort;
8704}();
8705
8706var PDFWorker = function PDFWorkerClosure() {
8707  var nextFakeWorkerId = 0;
8708  function getWorkerSrc() {
8709    if (_worker_options.GlobalWorkerOptions.workerSrc) {
8710      return _worker_options.GlobalWorkerOptions.workerSrc;
8711    }
8712    if (typeof fallbackWorkerSrc !== 'undefined') {
8713      return fallbackWorkerSrc;
8714    }
8715    throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
8716  }
8717  function getMainThreadWorkerMessageHandler() {
8718    try {
8719      if (typeof window !== 'undefined') {
8720        return window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler;
8721      }
8722    } catch (ex) {}
8723    return null;
8724  }
8725  var fakeWorkerFilesLoadedCapability = void 0;
8726  function setupFakeWorkerGlobal() {
8727    if (fakeWorkerFilesLoadedCapability) {
8728      return fakeWorkerFilesLoadedCapability.promise;
8729    }
8730    fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)();
8731    var mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
8732    if (mainWorkerMessageHandler) {
8733      fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);
8734      return fakeWorkerFilesLoadedCapability.promise;
8735    }
8736    var loader = fakeWorkerFilesLoader || function () {
8737      return (0, _dom_utils.loadScript)(getWorkerSrc()).then(function () {
8738        return window.pdfjsWorker.WorkerMessageHandler;
8739      });
8740    };
8741    loader().then(fakeWorkerFilesLoadedCapability.resolve, fakeWorkerFilesLoadedCapability.reject);
8742    return fakeWorkerFilesLoadedCapability.promise;
8743  }
8744  function createCDNWrapper(url) {
8745    var wrapper = 'importScripts(\'' + url + '\');';
8746    return _util.URL.createObjectURL(new Blob([wrapper]));
8747  }
8748  var pdfWorkerPorts = new WeakMap();
8749  function PDFWorker() {
8750    var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
8751        _ref2$name = _ref2.name,
8752        name = _ref2$name === undefined ? null : _ref2$name,
8753        _ref2$port = _ref2.port,
8754        port = _ref2$port === undefined ? null : _ref2$port,
8755        _ref2$postMessageTran = _ref2.postMessageTransfers,
8756        postMessageTransfers = _ref2$postMessageTran === undefined ? true : _ref2$postMessageTran,
8757        _ref2$verbosity = _ref2.verbosity,
8758        verbosity = _ref2$verbosity === undefined ? (0, _util.getVerbosityLevel)() : _ref2$verbosity;
8759
8760    if (port && pdfWorkerPorts.has(port)) {
8761      throw new Error('Cannot use more than one PDFWorker per port');
8762    }
8763    this.name = name;
8764    this.destroyed = false;
8765    this.postMessageTransfers = postMessageTransfers !== false;
8766    this.verbosity = verbosity;
8767    this._readyCapability = (0, _util.createPromiseCapability)();
8768    this._port = null;
8769    this._webWorker = null;
8770    this._messageHandler = null;
8771    if (port) {
8772      pdfWorkerPorts.set(port, this);
8773      this._initializeFromPort(port);
8774      return;
8775    }
8776    this._initialize();
8777  }
8778  PDFWorker.prototype = {
8779    get promise() {
8780      return this._readyCapability.promise;
8781    },
8782    get port() {
8783      return this._port;
8784    },
8785    get messageHandler() {
8786      return this._messageHandler;
8787    },
8788    _initializeFromPort: function PDFWorker_initializeFromPort(port) {
8789      this._port = port;
8790      this._messageHandler = new _message_handler.MessageHandler('main', 'worker', port);
8791      this._messageHandler.on('ready', function () {});
8792      this._readyCapability.resolve();
8793    },
8794    _initialize: function PDFWorker_initialize() {
8795      var _this6 = this;
8796
8797      if (typeof Worker !== 'undefined' && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
8798        var workerSrc = getWorkerSrc();
8799        try {
8800          if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
8801            workerSrc = createCDNWrapper(new _util.URL(workerSrc, window.location).href);
8802          }
8803          var worker = new Worker(workerSrc);
8804          var messageHandler = new _message_handler.MessageHandler('main', 'worker', worker);
8805          var terminateEarly = function terminateEarly() {
8806            worker.removeEventListener('error', onWorkerError);
8807            messageHandler.destroy();
8808            worker.terminate();
8809            if (_this6.destroyed) {
8810              _this6._readyCapability.reject(new Error('Worker was destroyed'));
8811            } else {
8812              _this6._setupFakeWorker();
8813            }
8814          };
8815          var onWorkerError = function onWorkerError() {
8816            if (!_this6._webWorker) {
8817              terminateEarly();
8818            }
8819          };
8820          worker.addEventListener('error', onWorkerError);
8821          messageHandler.on('test', function (data) {
8822            worker.removeEventListener('error', onWorkerError);
8823            if (_this6.destroyed) {
8824              terminateEarly();
8825              return;
8826            }
8827            if (data && data.supportTypedArray) {
8828              _this6._messageHandler = messageHandler;
8829              _this6._port = worker;
8830              _this6._webWorker = worker;
8831              if (!data.supportTransfers) {
8832                _this6.postMessageTransfers = false;
8833              }
8834              _this6._readyCapability.resolve();
8835              messageHandler.send('configure', { verbosity: _this6.verbosity });
8836            } else {
8837              _this6._setupFakeWorker();
8838              messageHandler.destroy();
8839              worker.terminate();
8840            }
8841          });
8842          messageHandler.on('ready', function (data) {
8843            worker.removeEventListener('error', onWorkerError);
8844            if (_this6.destroyed) {
8845              terminateEarly();
8846              return;
8847            }
8848            try {
8849              sendTest();
8850            } catch (e) {
8851              _this6._setupFakeWorker();
8852            }
8853          });
8854          var sendTest = function sendTest() {
8855            var testObj = new Uint8Array([_this6.postMessageTransfers ? 255 : 0]);
8856            try {
8857              messageHandler.send('test', testObj, [testObj.buffer]);
8858            } catch (ex) {
8859              (0, _util.info)('Cannot use postMessage transfers');
8860              testObj[0] = 0;
8861              messageHandler.send('test', testObj);
8862            }
8863          };
8864          sendTest();
8865          return;
8866        } catch (e) {
8867          (0, _util.info)('The worker has been disabled.');
8868        }
8869      }
8870      this._setupFakeWorker();
8871    },
8872    _setupFakeWorker: function PDFWorker_setupFakeWorker() {
8873      var _this7 = this;
8874
8875      if (!isWorkerDisabled) {
8876        (0, _util.warn)('Setting up fake worker.');
8877        isWorkerDisabled = true;
8878      }
8879      setupFakeWorkerGlobal().then(function (WorkerMessageHandler) {
8880        if (_this7.destroyed) {
8881          _this7._readyCapability.reject(new Error('Worker was destroyed'));
8882          return;
8883        }
8884        var port = new LoopbackPort();
8885        _this7._port = port;
8886        var id = 'fake' + nextFakeWorkerId++;
8887        var workerHandler = new _message_handler.MessageHandler(id + '_worker', id, port);
8888        WorkerMessageHandler.setup(workerHandler, port);
8889        var messageHandler = new _message_handler.MessageHandler(id, id + '_worker', port);
8890        _this7._messageHandler = messageHandler;
8891        _this7._readyCapability.resolve();
8892      }).catch(function (reason) {
8893        _this7._readyCapability.reject(new Error('Setting up fake worker failed: "' + reason.message + '".'));
8894      });
8895    },
8896    destroy: function PDFWorker_destroy() {
8897      this.destroyed = true;
8898      if (this._webWorker) {
8899        this._webWorker.terminate();
8900        this._webWorker = null;
8901      }
8902      pdfWorkerPorts.delete(this._port);
8903      this._port = null;
8904      if (this._messageHandler) {
8905        this._messageHandler.destroy();
8906        this._messageHandler = null;
8907      }
8908    }
8909  };
8910  PDFWorker.fromPort = function (params) {
8911    if (!params || !params.port) {
8912      throw new Error('PDFWorker.fromPort - invalid method signature.');
8913    }
8914    if (pdfWorkerPorts.has(params.port)) {
8915      return pdfWorkerPorts.get(params.port);
8916    }
8917    return new PDFWorker(params);
8918  };
8919  PDFWorker.getWorkerSrc = function () {
8920    return getWorkerSrc();
8921  };
8922  return PDFWorker;
8923}();
8924
8925var WorkerTransport = function () {
8926  function WorkerTransport(messageHandler, loadingTask, networkStream, params) {
8927    _classCallCheck(this, WorkerTransport);
8928
8929    this.messageHandler = messageHandler;
8930    this.loadingTask = loadingTask;
8931    this.commonObjs = new PDFObjects();
8932    this.fontLoader = new _font_loader.FontLoader(loadingTask.docId);
8933    this._params = params;
8934    this.CMapReaderFactory = new params.CMapReaderFactory({
8935      baseUrl: params.cMapUrl,
8936      isCompressed: params.cMapPacked
8937    });
8938    this.destroyed = false;
8939    this.destroyCapability = null;
8940    this._passwordCapability = null;
8941    this._networkStream = networkStream;
8942    this._fullReader = null;
8943    this._lastProgress = null;
8944    this.pageCache = [];
8945    this.pagePromises = [];
8946    this.downloadInfoCapability = (0, _util.createPromiseCapability)();
8947    this.setupMessageHandler();
8948  }
8949
8950  _createClass(WorkerTransport, [{
8951    key: 'destroy',
8952    value: function destroy() {
8953      var _this8 = this;
8954
8955      if (this.destroyCapability) {
8956        return this.destroyCapability.promise;
8957      }
8958      this.destroyed = true;
8959      this.destroyCapability = (0, _util.createPromiseCapability)();
8960      if (this._passwordCapability) {
8961        this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback'));
8962      }
8963      var waitOn = [];
8964      this.pageCache.forEach(function (page) {
8965        if (page) {
8966          waitOn.push(page._destroy());
8967        }
8968      });
8969      this.pageCache = [];
8970      this.pagePromises = [];
8971      var terminated = this.messageHandler.sendWithPromise('Terminate', null);
8972      waitOn.push(terminated);
8973      Promise.all(waitOn).then(function () {
8974        _this8.fontLoader.clear();
8975        if (_this8._networkStream) {
8976          _this8._networkStream.cancelAllRequests();
8977        }
8978        if (_this8.messageHandler) {
8979          _this8.messageHandler.destroy();
8980          _this8.messageHandler = null;
8981        }
8982        _this8.destroyCapability.resolve();
8983      }, this.destroyCapability.reject);
8984      return this.destroyCapability.promise;
8985    }
8986  }, {
8987    key: 'setupMessageHandler',
8988    value: function setupMessageHandler() {
8989      var messageHandler = this.messageHandler,
8990          loadingTask = this.loadingTask;
8991
8992      messageHandler.on('GetReader', function (data, sink) {
8993        var _this9 = this;
8994
8995        (0, _util.assert)(this._networkStream);
8996        this._fullReader = this._networkStream.getFullReader();
8997        this._fullReader.onProgress = function (evt) {
8998          _this9._lastProgress = {
8999            loaded: evt.loaded,
9000            total: evt.total
9001          };
9002        };
9003        sink.onPull = function () {
9004          _this9._fullReader.read().then(function (_ref3) {
9005            var value = _ref3.value,
9006                done = _ref3.done;
9007
9008            if (done) {
9009              sink.close();
9010              return;
9011            }
9012            (0, _util.assert)((0, _util.isArrayBuffer)(value));
9013            sink.enqueue(new Uint8Array(value), 1, [value]);
9014          }).catch(function (reason) {
9015            sink.error(reason);
9016          });
9017        };
9018        sink.onCancel = function (reason) {
9019          _this9._fullReader.cancel(reason);
9020        };
9021      }, this);
9022      messageHandler.on('ReaderHeadersReady', function (data) {
9023        var _this10 = this;
9024
9025        var headersCapability = (0, _util.createPromiseCapability)();
9026        var fullReader = this._fullReader;
9027        fullReader.headersReady.then(function () {
9028          if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
9029            if (_this10._lastProgress && loadingTask.onProgress) {
9030              loadingTask.onProgress(_this10._lastProgress);
9031            }
9032            fullReader.onProgress = function (evt) {
9033              if (loadingTask.onProgress) {
9034                loadingTask.onProgress({
9035                  loaded: evt.loaded,
9036                  total: evt.total
9037                });
9038              }
9039            };
9040          }
9041          headersCapability.resolve({
9042            isStreamingSupported: fullReader.isStreamingSupported,
9043            isRangeSupported: fullReader.isRangeSupported,
9044            contentLength: fullReader.contentLength
9045          });
9046        }, headersCapability.reject);
9047        return headersCapability.promise;
9048      }, this);
9049      messageHandler.on('GetRangeReader', function (data, sink) {
9050        (0, _util.assert)(this._networkStream);
9051        var rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
9052        sink.onPull = function () {
9053          rangeReader.read().then(function (_ref4) {
9054            var value = _ref4.value,
9055                done = _ref4.done;
9056
9057            if (done) {
9058              sink.close();
9059              return;
9060            }
9061            (0, _util.assert)((0, _util.isArrayBuffer)(value));
9062            sink.enqueue(new Uint8Array(value), 1, [value]);
9063          }).catch(function (reason) {
9064            sink.error(reason);
9065          });
9066        };
9067        sink.onCancel = function (reason) {
9068          rangeReader.cancel(reason);
9069        };
9070      }, this);
9071      messageHandler.on('GetDoc', function (_ref5) {
9072        var pdfInfo = _ref5.pdfInfo;
9073
9074        this.numPages = pdfInfo.numPages;
9075        this.pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);
9076        loadingTask._capability.resolve(this.pdfDocument);
9077      }, this);
9078      messageHandler.on('PasswordRequest', function (exception) {
9079        var _this11 = this;
9080
9081        this._passwordCapability = (0, _util.createPromiseCapability)();
9082        if (loadingTask.onPassword) {
9083          var updatePassword = function updatePassword(password) {
9084            _this11._passwordCapability.resolve({ password: password });
9085          };
9086          try {
9087            loadingTask.onPassword(updatePassword, exception.code);
9088          } catch (ex) {
9089            this._passwordCapability.reject(ex);
9090          }
9091        } else {
9092          this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
9093        }
9094        return this._passwordCapability.promise;
9095      }, this);
9096      messageHandler.on('PasswordException', function (exception) {
9097        loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code));
9098      }, this);
9099      messageHandler.on('InvalidPDF', function (exception) {
9100        loadingTask._capability.reject(new _util.InvalidPDFException(exception.message));
9101      }, this);
9102      messageHandler.on('MissingPDF', function (exception) {
9103        loadingTask._capability.reject(new _util.MissingPDFException(exception.message));
9104      }, this);
9105      messageHandler.on('UnexpectedResponse', function (exception) {
9106        loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status));
9107      }, this);
9108      messageHandler.on('UnknownError', function (exception) {
9109        loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details));
9110      }, this);
9111      messageHandler.on('DataLoaded', function (data) {
9112        if (loadingTask.onProgress) {
9113          loadingTask.onProgress({
9114            loaded: data.length,
9115            total: data.length
9116          });
9117        }
9118        this.downloadInfoCapability.resolve(data);
9119      }, this);
9120      messageHandler.on('StartRenderPage', function (data) {
9121        if (this.destroyed) {
9122          return;
9123        }
9124        var page = this.pageCache[data.pageIndex];
9125        page._stats.timeEnd('Page Request');
9126        page._startRenderPage(data.transparency, data.intent);
9127      }, this);
9128      messageHandler.on('RenderPageChunk', function (data) {
9129        if (this.destroyed) {
9130          return;
9131        }
9132        var page = this.pageCache[data.pageIndex];
9133        page._renderPageChunk(data.operatorList, data.intent);
9134      }, this);
9135      messageHandler.on('commonobj', function (data) {
9136        var _this12 = this;
9137
9138        if (this.destroyed) {
9139          return;
9140        }
9141
9142        var _data = _slicedToArray(data, 3),
9143            id = _data[0],
9144            type = _data[1],
9145            exportedData = _data[2];
9146
9147        if (this.commonObjs.hasData(id)) {
9148          return;
9149        }
9150        switch (type) {
9151          case 'Font':
9152            var params = this._params;
9153            if ('error' in exportedData) {
9154              var exportedError = exportedData.error;
9155              (0, _util.warn)('Error during font loading: ' + exportedError);
9156              this.commonObjs.resolve(id, exportedError);
9157              break;
9158            }
9159            var fontRegistry = null;
9160            if (params.pdfBug && _global_scope2.default.FontInspector && _global_scope2.default.FontInspector.enabled) {
9161              fontRegistry = {
9162                registerFont: function registerFont(font, url) {
9163                  _global_scope2.default['FontInspector'].fontAdded(font, url);
9164                }
9165              };
9166            }
9167            var font = new _font_loader.FontFaceObject(exportedData, {
9168              isEvalSupported: params.isEvalSupported,
9169              disableFontFace: params.disableFontFace,
9170              ignoreErrors: params.ignoreErrors,
9171              onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
9172              fontRegistry: fontRegistry
9173            });
9174            var fontReady = function fontReady(fontObjs) {
9175              _this12.commonObjs.resolve(id, font);
9176            };
9177            this.fontLoader.bind([font], fontReady);
9178            break;
9179          case 'FontPath':
9180            this.commonObjs.resolve(id, exportedData);
9181            break;
9182          default:
9183            throw new Error('Got unknown common object type ' + type);
9184        }
9185      }, this);
9186      messageHandler.on('obj', function (data) {
9187        if (this.destroyed) {
9188          return;
9189        }
9190
9191        var _data2 = _slicedToArray(data, 4),
9192            id = _data2[0],
9193            pageIndex = _data2[1],
9194            type = _data2[2],
9195            imageData = _data2[3];
9196
9197        var pageProxy = this.pageCache[pageIndex];
9198        if (pageProxy.objs.hasData(id)) {
9199          return;
9200        }
9201        switch (type) {
9202          case 'JpegStream':
9203            return new Promise(function (resolve, reject) {
9204              var img = new Image();
9205              img.onload = function () {
9206                resolve(img);
9207              };
9208              img.onerror = function () {
9209                reject(new Error('Error during JPEG image loading'));
9210              };
9211              img.src = imageData;
9212            }).then(function (img) {
9213              pageProxy.objs.resolve(id, img);
9214            });
9215          case 'Image':
9216            pageProxy.objs.resolve(id, imageData);
9217            var MAX_IMAGE_SIZE_TO_STORE = 8000000;
9218            if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
9219              pageProxy.cleanupAfterRender = true;
9220            }
9221            break;
9222          default:
9223            throw new Error('Got unknown object type ' + type);
9224        }
9225      }, this);
9226      messageHandler.on('DocProgress', function (data) {
9227        if (this.destroyed) {
9228          return;
9229        }
9230        if (loadingTask.onProgress) {
9231          loadingTask.onProgress({
9232            loaded: data.loaded,
9233            total: data.total
9234          });
9235        }
9236      }, this);
9237      messageHandler.on('PageError', function (data) {
9238        if (this.destroyed) {
9239          return;
9240        }
9241        var page = this.pageCache[data.pageNum - 1];
9242        var intentState = page.intentStates[data.intent];
9243        if (intentState.displayReadyCapability) {
9244          intentState.displayReadyCapability.reject(data.error);
9245        } else {
9246          throw new Error(data.error);
9247        }
9248        if (intentState.operatorList) {
9249          intentState.operatorList.lastChunk = true;
9250          for (var i = 0; i < intentState.renderTasks.length; i++) {
9251            intentState.renderTasks[i].operatorListChanged();
9252          }
9253        }
9254      }, this);
9255      messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);
9256      messageHandler.on('JpegDecode', function (data) {
9257        if (this.destroyed) {
9258          return Promise.reject(new Error('Worker was destroyed'));
9259        }
9260        if (typeof document === 'undefined') {
9261          return Promise.reject(new Error('"document" is not defined.'));
9262        }
9263
9264        var _data3 = _slicedToArray(data, 2),
9265            imageUrl = _data3[0],
9266            components = _data3[1];
9267
9268        if (components !== 3 && components !== 1) {
9269          return Promise.reject(new Error('Only 3 components or 1 component can be returned'));
9270        }
9271        return new Promise(function (resolve, reject) {
9272          var img = new Image();
9273          img.onload = function () {
9274            var width = img.width;
9275            var height = img.height;
9276            var size = width * height;
9277            var rgbaLength = size * 4;
9278            var buf = new Uint8ClampedArray(size * components);
9279            var tmpCanvas = document.createElement('canvas');
9280            tmpCanvas.width = width;
9281            tmpCanvas.height = height;
9282            var tmpCtx = tmpCanvas.getContext('2d');
9283            tmpCtx.drawImage(img, 0, 0);
9284            var data = tmpCtx.getImageData(0, 0, width, height).data;
9285            if (components === 3) {
9286              for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
9287                buf[j] = data[i];
9288                buf[j + 1] = data[i + 1];
9289                buf[j + 2] = data[i + 2];
9290              }
9291            } else if (components === 1) {
9292              for (var _i = 0, _j = 0; _i < rgbaLength; _i += 4, _j++) {
9293                buf[_j] = data[_i];
9294              }
9295            }
9296            resolve({
9297              data: buf,
9298              width: width,
9299              height: height
9300            });
9301          };
9302          img.onerror = function () {
9303            reject(new Error('JpegDecode failed to load image'));
9304          };
9305          img.src = imageUrl;
9306        });
9307      }, this);
9308      messageHandler.on('FetchBuiltInCMap', function (data) {
9309        if (this.destroyed) {
9310          return Promise.reject(new Error('Worker was destroyed'));
9311        }
9312        return this.CMapReaderFactory.fetch({ name: data.name });
9313      }, this);
9314    }
9315  }, {
9316    key: '_onUnsupportedFeature',
9317    value: function _onUnsupportedFeature(_ref6) {
9318      var featureId = _ref6.featureId;
9319
9320      if (this.destroyed) {
9321        return;
9322      }
9323      if (this.loadingTask.onUnsupportedFeature) {
9324        this.loadingTask.onUnsupportedFeature(featureId);
9325      }
9326    }
9327  }, {
9328    key: 'getData',
9329    value: function getData() {
9330      return this.messageHandler.sendWithPromise('GetData', null);
9331    }
9332  }, {
9333    key: 'getPage',
9334    value: function getPage(pageNumber) {
9335      var _this13 = this;
9336
9337      if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) {
9338        return Promise.reject(new Error('Invalid page request'));
9339      }
9340      var pageIndex = pageNumber - 1;
9341      if (pageIndex in this.pagePromises) {
9342        return this.pagePromises[pageIndex];
9343      }
9344      var promise = this.messageHandler.sendWithPromise('GetPage', { pageIndex: pageIndex }).then(function (pageInfo) {
9345        if (_this13.destroyed) {
9346          throw new Error('Transport destroyed');
9347        }
9348        var page = new PDFPageProxy(pageIndex, pageInfo, _this13, _this13._params.pdfBug);
9349        _this13.pageCache[pageIndex] = page;
9350        return page;
9351      });
9352      this.pagePromises[pageIndex] = promise;
9353      return promise;
9354    }
9355  }, {
9356    key: 'getPageIndex',
9357    value: function getPageIndex(ref) {
9358      return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref }).catch(function (reason) {
9359        return Promise.reject(new Error(reason));
9360      });
9361    }
9362  }, {
9363    key: 'getAnnotations',
9364    value: function getAnnotations(pageIndex, intent) {
9365      return this.messageHandler.sendWithPromise('GetAnnotations', {
9366        pageIndex: pageIndex,
9367        intent: intent
9368      });
9369    }
9370  }, {
9371    key: 'getDestinations',
9372    value: function getDestinations() {
9373      return this.messageHandler.sendWithPromise('GetDestinations', null);
9374    }
9375  }, {
9376    key: 'getDestination',
9377    value: function getDestination(id) {
9378      if (typeof id !== 'string') {
9379        return Promise.reject(new Error('Invalid destination request.'));
9380      }
9381      return this.messageHandler.sendWithPromise('GetDestination', { id: id });
9382    }
9383  }, {
9384    key: 'getPageLabels',
9385    value: function getPageLabels() {
9386      return this.messageHandler.sendWithPromise('GetPageLabels', null);
9387    }
9388  }, {
9389    key: 'getPageMode',
9390    value: function getPageMode() {
9391      return this.messageHandler.sendWithPromise('GetPageMode', null);
9392    }
9393  }, {
9394    key: 'getAttachments',
9395    value: function getAttachments() {
9396      return this.messageHandler.sendWithPromise('GetAttachments', null);
9397    }
9398  }, {
9399    key: 'getJavaScript',
9400    value: function getJavaScript() {
9401      return this.messageHandler.sendWithPromise('GetJavaScript', null);
9402    }
9403  }, {
9404    key: 'getOutline',
9405    value: function getOutline() {
9406      return this.messageHandler.sendWithPromise('GetOutline', null);
9407    }
9408  }, {
9409    key: 'getPermissions',
9410    value: function getPermissions() {
9411      return this.messageHandler.sendWithPromise('GetPermissions', null);
9412    }
9413  }, {
9414    key: 'getMetadata',
9415    value: function getMetadata() {
9416      var _this14 = this;
9417
9418      return this.messageHandler.sendWithPromise('GetMetadata', null).then(function (results) {
9419        return {
9420          info: results[0],
9421          metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
9422          contentDispositionFilename: _this14._fullReader ? _this14._fullReader.filename : null
9423        };
9424      });
9425    }
9426  }, {
9427    key: 'getStats',
9428    value: function getStats() {
9429      return this.messageHandler.sendWithPromise('GetStats', null);
9430    }
9431  }, {
9432    key: 'startCleanup',
9433    value: function startCleanup() {
9434      var _this15 = this;
9435
9436      this.messageHandler.sendWithPromise('Cleanup', null).then(function () {
9437        for (var i = 0, ii = _this15.pageCache.length; i < ii; i++) {
9438          var page = _this15.pageCache[i];
9439          if (page) {
9440            page.cleanup();
9441          }
9442        }
9443        _this15.commonObjs.clear();
9444        _this15.fontLoader.clear();
9445      });
9446    }
9447  }, {
9448    key: 'loadingParams',
9449    get: function get() {
9450      var params = this._params;
9451      return (0, _util.shadow)(this, 'loadingParams', {
9452        disableAutoFetch: params.disableAutoFetch,
9453        disableCreateObjectURL: params.disableCreateObjectURL,
9454        disableFontFace: params.disableFontFace,
9455        nativeImageDecoderSupport: params.nativeImageDecoderSupport
9456      });
9457    }
9458  }]);
9459
9460  return WorkerTransport;
9461}();
9462
9463var PDFObjects = function PDFObjectsClosure() {
9464  function PDFObjects() {
9465    this.objs = Object.create(null);
9466  }
9467  PDFObjects.prototype = {
9468    ensureObj: function PDFObjects_ensureObj(objId) {
9469      if (this.objs[objId]) {
9470        return this.objs[objId];
9471      }
9472      var obj = {
9473        capability: (0, _util.createPromiseCapability)(),
9474        data: null,
9475        resolved: false
9476      };
9477      this.objs[objId] = obj;
9478      return obj;
9479    },
9480    get: function PDFObjects_get(objId, callback) {
9481      if (callback) {
9482        this.ensureObj(objId).capability.promise.then(callback);
9483        return null;
9484      }
9485      var obj = this.objs[objId];
9486      if (!obj || !obj.resolved) {
9487        throw new Error('Requesting object that isn\'t resolved yet ' + objId);
9488      }
9489      return obj.data;
9490    },
9491    resolve: function PDFObjects_resolve(objId, data) {
9492      var obj = this.ensureObj(objId);
9493      obj.resolved = true;
9494      obj.data = data;
9495      obj.capability.resolve(data);
9496    },
9497    isResolved: function PDFObjects_isResolved(objId) {
9498      var objs = this.objs;
9499      if (!objs[objId]) {
9500        return false;
9501      }
9502      return objs[objId].resolved;
9503    },
9504    hasData: function PDFObjects_hasData(objId) {
9505      return this.isResolved(objId);
9506    },
9507    getData: function PDFObjects_getData(objId) {
9508      var objs = this.objs;
9509      if (!objs[objId] || !objs[objId].resolved) {
9510        return null;
9511      }
9512      return objs[objId].data;
9513    },
9514    clear: function PDFObjects_clear() {
9515      this.objs = Object.create(null);
9516    }
9517  };
9518  return PDFObjects;
9519}();
9520var RenderTask = function RenderTaskClosure() {
9521  function RenderTask(internalRenderTask) {
9522    this._internalRenderTask = internalRenderTask;
9523    this.onContinue = null;
9524  }
9525  RenderTask.prototype = {
9526    get promise() {
9527      return this._internalRenderTask.capability.promise;
9528    },
9529    cancel: function RenderTask_cancel() {
9530      this._internalRenderTask.cancel();
9531    },
9532    then: function RenderTask_then(onFulfilled, onRejected) {
9533      return this.promise.then.apply(this.promise, arguments);
9534    }
9535  };
9536  return RenderTask;
9537}();
9538var InternalRenderTask = function InternalRenderTaskClosure() {
9539  var canvasInRendering = new WeakMap();
9540  function InternalRenderTask(callback, params, objs, commonObjs, operatorList, pageNumber, canvasFactory, webGLContext) {
9541    var pdfBug = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;
9542
9543    this.callback = callback;
9544    this.params = params;
9545    this.objs = objs;
9546    this.commonObjs = commonObjs;
9547    this.operatorListIdx = null;
9548    this.operatorList = operatorList;
9549    this.pageNumber = pageNumber;
9550    this.canvasFactory = canvasFactory;
9551    this.webGLContext = webGLContext;
9552    this._pdfBug = pdfBug;
9553    this.running = false;
9554    this.graphicsReadyCallback = null;
9555    this.graphicsReady = false;
9556    this.useRequestAnimationFrame = false;
9557    this.cancelled = false;
9558    this.capability = (0, _util.createPromiseCapability)();
9559    this.task = new RenderTask(this);
9560    this._continueBound = this._continue.bind(this);
9561    this._scheduleNextBound = this._scheduleNext.bind(this);
9562    this._nextBound = this._next.bind(this);
9563    this._canvas = params.canvasContext.canvas;
9564  }
9565  InternalRenderTask.prototype = {
9566    initializeGraphics: function initializeGraphics(transparency) {
9567      if (this.cancelled) {
9568        return;
9569      }
9570      if (this._canvas) {
9571        if (canvasInRendering.has(this._canvas)) {
9572          throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.');
9573        }
9574        canvasInRendering.set(this._canvas, this);
9575      }
9576      if (this._pdfBug && _global_scope2.default.StepperManager && _global_scope2.default.StepperManager.enabled) {
9577        this.stepper = _global_scope2.default.StepperManager.create(this.pageNumber - 1);
9578        this.stepper.init(this.operatorList);
9579        this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
9580      }
9581      var params = this.params;
9582      this.gfx = new _canvas.CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, params.imageLayer);
9583      this.gfx.beginDrawing({
9584        transform: params.transform,
9585        viewport: params.viewport,
9586        transparency: transparency,
9587        background: params.background
9588      });
9589      this.operatorListIdx = 0;
9590      this.graphicsReady = true;
9591      if (this.graphicsReadyCallback) {
9592        this.graphicsReadyCallback();
9593      }
9594    },
9595
9596    cancel: function InternalRenderTask_cancel() {
9597      this.running = false;
9598      this.cancelled = true;
9599      if (this._canvas) {
9600        canvasInRendering.delete(this._canvas);
9601      }
9602      this.callback(new _dom_utils.RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas'));
9603    },
9604    operatorListChanged: function InternalRenderTask_operatorListChanged() {
9605      if (!this.graphicsReady) {
9606        if (!this.graphicsReadyCallback) {
9607          this.graphicsReadyCallback = this._continueBound;
9608        }
9609        return;
9610      }
9611      if (this.stepper) {
9612        this.stepper.updateOperatorList(this.operatorList);
9613      }
9614      if (this.running) {
9615        return;
9616      }
9617      this._continue();
9618    },
9619    _continue: function InternalRenderTask__continue() {
9620      this.running = true;
9621      if (this.cancelled) {
9622        return;
9623      }
9624      if (this.task.onContinue) {
9625        this.task.onContinue(this._scheduleNextBound);
9626      } else {
9627        this._scheduleNext();
9628      }
9629    },
9630    _scheduleNext: function InternalRenderTask__scheduleNext() {
9631      var _this16 = this;
9632
9633      if (this.useRequestAnimationFrame && typeof window !== 'undefined') {
9634        window.requestAnimationFrame(function () {
9635          _this16._nextBound().catch(_this16.callback);
9636        });
9637      } else {
9638        Promise.resolve().then(this._nextBound).catch(this.callback);
9639      }
9640    },
9641    _next: function InternalRenderTask__next() {
9642      var _this17 = this;
9643
9644      return new Promise(function () {
9645        if (_this17.cancelled) {
9646          return;
9647        }
9648        _this17.operatorListIdx = _this17.gfx.executeOperatorList(_this17.operatorList, _this17.operatorListIdx, _this17._continueBound, _this17.stepper);
9649        if (_this17.operatorListIdx === _this17.operatorList.argsArray.length) {
9650          _this17.running = false;
9651          if (_this17.operatorList.lastChunk) {
9652            _this17.gfx.endDrawing();
9653            if (_this17._canvas) {
9654              canvasInRendering.delete(_this17._canvas);
9655            }
9656            _this17.callback();
9657          }
9658        }
9659      });
9660    }
9661  };
9662  return InternalRenderTask;
9663}();
9664var version, build;
9665{
9666  exports.version = version = '2.0.943';
9667  exports.build = build = 'dc98bf76';
9668}
9669exports.getDocument = getDocument;
9670exports.LoopbackPort = LoopbackPort;
9671exports.PDFDataRangeTransport = PDFDataRangeTransport;
9672exports.PDFWorker = PDFWorker;
9673exports.PDFDocumentProxy = PDFDocumentProxy;
9674exports.PDFPageProxy = PDFPageProxy;
9675exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
9676exports.version = version;
9677exports.build = build;
9678
9679/***/ }),
9680/* 130 */
9681/***/ (function(module, exports, __w_pdfjs_require__) {
9682
9683"use strict";
9684
9685
9686Object.defineProperty(exports, "__esModule", {
9687  value: true
9688});
9689exports.loadScript = exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exp
9689orts.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.getFilenameFromUrl = exports.addLinkAttributes = exports.RenderingCancelledException = exports.PageViewport = undefined;
9690
9691var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
9692
9693var _util = __w_pdfjs_require__(1);
9694
9695function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9696
9697var DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
9698var SVG_NS = 'http://www.w3.org/2000/svg';
9699
9700var DOMCanvasFactory = function () {
9701  function DOMCanvasFactory() {
9702    _classCallCheck(this, DOMCanvasFactory);
9703  }
9704
9705  _createClass(DOMCanvasFactory, [{
9706    key: 'create',
9707    value: function create(width, height) {
9708      if (width <= 0 || height <= 0) {
9709        throw new Error('invalid canvas size');
9710      }
9711      var canvas = document.createElement('canvas');
9712      var context = canvas.getContext('2d');
9713      canvas.width = width;
9714      canvas.height = height;
9715      return {
9716        canvas: canvas,
9717        context: context
9718      };
9719    }
9720  }, {
9721    key: 'reset',
9722    value: function reset(canvasAndContext, width, height) {
9723      if (!canvasAndContext.canvas) {
9724        throw new Error('canvas is not specified');
9725      }
9726      if (width <= 0 || height <= 0) {
9727        throw new Error('invalid canvas size');
9728      }
9729      canvasAndContext.canvas.width = width;
9730      canvasAndContext.canvas.height = height;
9731    }
9732  }, {
9733    key: 'destroy',
9734    value: function destroy(canvasAndContext) {
9735      if (!canvasAndContext.canvas) {
9736        throw new Error('canvas is not specified');
9737      }
9738      canvasAndContext.canvas.width = 0;
9739      canvasAndContext.canvas.height = 0;
9740      canvasAndContext.canvas = null;
9741      canvasAndContext.context = null;
9742    }
9743  }]);
9744
9745  return DOMCanvasFactory;
9746}();
9747
9748var DOMCMapReaderFactory = function () {
9749  function DOMCMapReaderFactory(_ref) {
9750    var _ref$baseUrl = _ref.baseUrl,
9751        baseUrl = _ref$baseUrl === undefined ? null : _ref$baseUrl,
9752        _ref$isCompressed = _ref.isCompressed,
9753        isCompressed = _ref$isCompressed === undefined ? false : _ref$isCompressed;
9754
9755    _classCallCheck(this, DOMCMapReaderFactory);
9756
9757    this.baseUrl = baseUrl;
9758    this.isCompressed = isCompressed;
9759  }
9760
9761  _createClass(DOMCMapReaderFactory, [{
9762    key: 'fetch',
9763    value: function fetch(_ref2) {
9764      var _this = this;
9765
9766      var name = _ref2.name;
9767
9768      if (!this.baseUrl) {
9769        return Promise.reject(new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'));
9770      }
9771      if (!name) {
9772        return Promise.reject(new Error('CMap name must be specified.'));
9773      }
9774      return new Promise(function (resolve, reject) {
9775        var url = _this.baseUrl + name + (_this.isCompressed ? '.bcmap' : '');
9776        var request = new XMLHttpRequest();
9777        request.open('GET', url, true);
9778        if (_this.isCompressed) {
9779          request.responseType = 'arraybuffer';
9780        }
9781        request.onreadystatechange = function () {
9782          if (request.readyState !== XMLHttpRequest.DONE) {
9783            return;
9784          }
9785          if (request.status === 200 || request.status === 0) {
9786            var data = void 0;
9787            if (_this.isCompressed && request.response) {
9788              data = new Uint8Array(request.response);
9789            } else if (!_this.isCompressed && request.responseText) {
9790              data = (0, _util.stringToBytes)(request.responseText);
9791            }
9792            if (data) {
9793              resolve({
9794                cMapData: data,
9795                compressionType: _this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE
9796              });
9797              return;
9798            }
9799          }
9800          reject(new Error('Unable to load ' + (_this.isCompressed ? 'binary ' : '') + 'CMap at: ' + url));
9801        };
9802        request.send(null);
9803      });
9804    }
9805  }]);
9806
9807  return DOMCMapReaderFactory;
9808}();
9809
9810var DOMSVGFactory = function () {
9811  function DOMSVGFactory() {
9812    _classCallCheck(this, DOMSVGFactory);
9813  }
9814
9815  _createClass(DOMSVGFactory, [{
9816    key: 'create',
9817    value: function create(width, height) {
9818      (0, _util.assert)(width > 0 && height > 0, 'Invalid SVG dimensions');
9819      var svg = document.createElementNS(SVG_NS, 'svg:svg');
9820      svg.setAttribute('version', '1.1');
9821      svg.setAttribute('width', width + 'px');
9822      svg.setAttribute('height', height + 'px');
9823      svg.setAttribute('preserveAspectRatio', 'none');
9824      svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
9825      return svg;
9826    }
9827  }, {
9828    key: 'createElement',
9829    value: function createElement(type) {
9830      (0, _util.assert)(typeof type === 'string', 'Invalid SVG element type');
9831      return document.createElementNS(SVG_NS, type);
9832    }
9833  }]);
9834
9835  return DOMSVGFactory;
9836}();
9837
9838var PageViewport = function () {
9839  function PageViewport(_ref3) {
9840    var viewBox = _ref3.viewBox,
9841        scale = _ref3.scale,
9842        rotation = _ref3.rotation,
9843        _ref3$offsetX = _ref3.offsetX,
9844        offsetX = _ref3$offsetX === undefined ? 0 : _ref3$offsetX,
9845        _ref3$offsetY = _ref3.offsetY,
9846        offsetY = _ref3$offsetY === undefined ? 0 : _ref3$offsetY,
9847        _ref3$dontFlip = _ref3.dontFlip,
9848        dontFlip = _ref3$dontFlip === undefined ? false : _ref3$dontFlip;
9849
9850    _classCallCheck(this, PageViewport);
9851
9852    this.viewBox = viewBox;
9853    this.scale = scale;
9854    this.rotation = rotation;
9855    this.offsetX = offsetX;
9856    this.offsetY = offsetY;
9857    var centerX = (viewBox[2] + viewBox[0]) / 2;
9858    var centerY = (viewBox[3] + viewBox[1]) / 2;
9859    var rotateA = void 0,
9860        rotateB = void 0,
9861        rotateC = void 0,
9862        rotateD = void 0;
9863    rotation = rotation % 360;
9864    rotation = rotation < 0 ? rotation + 360 : rotation;
9865    switch (rotation) {
9866      case 180:
9867        rotateA = -1;
9868        rotateB = 0;
9869        rotateC = 0;
9870        rotateD = 1;
9871        break;
9872      case 90:
9873        rotateA = 0;
9874        rotateB = 1;
9875        rotateC = 1;
9876        rotateD = 0;
9877        break;
9878      case 270:
9879        rotateA = 0;
9880        rotateB = -1;
9881        rotateC = -1;
9882        rotateD = 0;
9883        break;
9884      default:
9885        rotateA = 1;
9886        rotateB = 0;
9887        rotateC = 0;
9888        rotateD = -1;
9889        break;
9890    }
9891    if (dontFlip) {
9892      rotateC = -rotateC;
9893      rotateD = -rotateD;
9894    }
9895    var offsetCanvasX = void 0,
9896        offsetCanvasY = void 0;
9897    var width = void 0,
9898        height = void 0;
9899    if (rotateA === 0) {
9900      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
9901      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
9902      width = Math.abs(viewBox[3] - viewBox[1]) * scale;
9903      height = Math.abs(viewBox[2] - viewBox[0]) * scale;
9904    } else {
9905      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
9906      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
9907      width = Math.abs(viewBox[2] - viewBox[0]) * scale;
9908      height = Math.abs(viewBox[3] - viewBox[1]) * scale;
9909    }
9910    this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
9911    this.width = width;
9912    this.height = height;
9913  }
9914
9915  _createClass(PageViewport, [{
9916    key: 'clone',
9917    value: function clone() {
9918      var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9919          _ref4$scale = _ref4.scale,
9920          scale = _ref4$scale === undefined ? this.scale : _ref4$scale,
9921          _ref4$rotation = _ref4.rotation,
9922          rotation = _ref4$rotation === undefined ? this.rotation : _ref4$rotation,
9923          _ref4$dontFlip = _ref4.dontFlip,
9924          dontFlip = _ref4$dontFlip === undefined ? false : _ref4$dontFlip;
9925
9926      return new PageViewport({
9927        viewBox: this.viewBox.slice(),
9928        scale: scale,
9929        rotation: rotation,
9930        offsetX: this.offsetX,
9931        offsetY: this.offsetY,
9932        dontFlip: dontFlip
9933      });
9934    }
9935  }, {
9936    key: 'convertToViewportPoint',
9937    value: function convertToViewportPoint(x, y) {
9938      return _util.Util.applyTransform([x, y], this.transform);
9939    }
9940  }, {
9941    key: 'convertToViewportRectangle',
9942    value: function convertToViewportRectangle(rect) {
9943      var tl = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
9944      var br = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
9945      return [tl[0], tl[1], br[0], br[1]];
9946    }
9947  }, {
9948    key: 'convertToPdfPoint',
9949    value: function convertToPdfPoint(x, y) {
9950      return _util.Util.applyInverseTransform([x, y], this.transform);
9951    }
9952  }]);
9953
9954  return PageViewport;
9955}();
9956
9957var RenderingCancelledException = function RenderingCancelledException() {
9958  function RenderingCancelledException(msg, type) {
9959    this.message = msg;
9960    this.type = type;
9961  }
9962  RenderingCancelledException.prototype = new Error();
9963  RenderingCancelledException.prototype.name = 'RenderingCancelledException';
9964  RenderingCancelledException.constructor = RenderingCancelledException;
9965  return RenderingCancelledException;
9966}();
9967var LinkTarget = {
9968  NONE: 0,
9969  SELF: 1,
9970  BLANK: 2,
9971  PARENT: 3,
9972  TOP: 4
9973};
9974var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top'];
9975function addLinkAttributes(link) {
9976  var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
9977      url = _ref5.url,
9978      target = _ref5.target,
9979      rel = _ref5.rel;
9980
9981  link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : '';
9982  if (url) {
9983    var LinkTargetValues = Object.values(LinkTarget);
9984    var targetIndex = LinkTargetValues.includes(target) ? target : LinkTarget.NONE;
9985    link.target = LinkTargetStringMap[targetIndex];
9986    link.rel = typeof rel === 'string' ? rel : DEFAULT_LINK_REL;
9987  }
9988}
9989function getFilenameFromUrl(url) {
9990  var anchor = url.indexOf('#');
9991  var query = url.indexOf('?');
9992  var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
9993  return url.substring(url.lastIndexOf('/', end) + 1, end);
9994}
9995
9996var StatTimer = function () {
9997  function StatTimer() {
9998    var enable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
9999
10000    _classCallCheck(this, StatTimer);
10001
10002    this.enabled = !!enable;
10003    this.started = Object.create(null);
10004    this.times = [];
10005  }
10006
10007  _createClass(StatTimer, [{
10008    key: 'time',
10009    value: function time(name) {
10010      if (!this.enabled) {
10011        return;
10012      }
10013      if (name in this.started) {
10014        (0, _util.warn)('Timer is already running for ' + name);
10015      }
10016      this.started[name] = Date.now();
10017    }
10018  }, {
10019    key: 'timeEnd',
10020    value: function timeEnd(name) {
10021      if (!this.enabled) {
10022        return;
10023      }
10024      if (!(name in this.started)) {
10025        (0, _util.warn)('Timer has not been started for ' + name);
10026      }
10027      this.times.push({
10028        'name': name,
10029        'start': this.started[name],
10030        'end': Date.now()
10031      });
10032      delete this.started[name];
10033    }
10034  }, {
10035    key: 'toString',
10036    value: function toString() {
10037      var times = this.times;
10038      var out = '',
10039          longest = 0;
10040      for (var i = 0, ii = times.length; i < ii; ++i) {
10041        var name = times[i]['name'];
10042        if (name.length > longest) {
10043          longest = name.length;
10044        }
10045      }
10046      for (var _i = 0, _ii = times.length; _i < _ii; ++_i) {
10047        var span = times[_i];
10048        var duration = span.end - span.start;
10049        out += span['name'].padEnd(longest) + ' ' + duration + 'ms\n';
10050      }
10051      return out;
10052    }
10053  }]);
10054
10055  return StatTimer;
10056}();
10057
10058var DummyStatTimer = function () {
10059  function DummyStatTimer() {
10060    _classCallCheck(this, DummyStatTimer);
10061
10062    (0, _util.unreachable)('Cannot initialize DummyStatTimer.');
10063  }
10064
10065  _createClass(DummyStatTimer, null, [{
10066    key: 'time',
10067    value: function time(name) {}
10068  }, {
10069    key: 'timeEnd',
10070    value: function timeEnd(name) {}
10071  }, {
10072    key: 'toString',
10073    value: function toString() {
10074      return '';
10075    }
10076  }]);
10077
10078  return DummyStatTimer;
10079}();
10080
10081function loadScript(src) {
10082  return new Promise(function (resolve, reject) {
10083    var script = document.createElement('script');
10084    script.src = src;
10085    script.onload = resolve;
10086    script.onerror = function () {
10087      reject(new Error('Cannot load script at: ' + script.src));
10088    };
10089    (document.head || document.documentElement).appendChild(script);
10090  });
10091}
10092exports.PageViewport = PageViewport;
10093exports.RenderingCancelledException = RenderingCancelledException;
10094exports.addLinkAttributes = addLinkAttributes;
10095exports.getFilenameFromUrl = getFilenameFromUrl;
10096exports.LinkTarget = LinkTarget;
10097exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
10098exports.DOMCanvasFactory = DOMCanvasFactory;
10099exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
10100exports.DOMSVGFactory = DOMSVGFactory;
10101exports.StatTimer = StatTimer;
10102exports.DummyStatTimer = DummyStatTimer;
10103exports.loadScript = loadScript;
10104
10105/***/ }),
10106/* 131 */
10107/***/ (function(module, exports, __w_pdfjs_require__) {
10108
10109"use strict";
10110
10111
10112Object.defineProperty(exports, "__esModule", {
10113  value: true
10114});
10115exports.FontLoader = exports.FontFaceObject = undefined;
10116
10117var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
10118
10119var _util = __w_pdfjs_require__(1);
10120
10121function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
10122
10123function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
10124
10125function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10126
10127var BaseFontLoader = function () {
10128  function BaseFontLoader(docId) {
10129    _classCallCheck(this, BaseFontLoader);
10130
10131    if (this.constructor === BaseFontLoader) {
10132      (0, _util.unreachable)('Cannot initialize BaseFontLoader.');
10133    }
10134    this.docId = docId;
10135    this.nativeFontFaces = [];
10136    this.styleElement = null;
10137    this.loadingContext = {
10138      requests: [],
10139      nextRequestId: 0
10140    };
10141  }
10142
10143  _createClass(BaseFontLoader, [{
10144    key: 'addNativeFontFace',
10145    value: function addNativeFontFace(nativeFontFace) {
10146      this.nativeFontFaces.push(nativeFontFace);
10147      document.fonts.add(nativeFontFace);
10148    }
10149  }, {
10150    key: 'insertRule',
10151    value: function insertRule(rule) {
10152      var styleElement = this.styleElement;
10153      if (!styleElement) {
10154        styleElement = this.styleElement = document.createElement('style');
10155        styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId;
10156        document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement);
10157      }
10158      var styleSheet = styleElement.sheet;
10159      styleSheet.insertRule(rule, styleSheet.cssRules.length);
10160    }
10161  }, {
10162    key: 'clear',
10163    value: function clear() {
10164      this.nativeFontFaces.forEach(function (nativeFontFace) {
10165        document.fonts.delete(nativeFontFace);
10166      });
10167      this.nativeFontFaces.length = 0;
10168      if (this.styleElement) {
10169        this.styleElement.remove();
10170        this.styleElement = null;
10171      }
10172    }
10173  }, {
10174    key: 'bind',
10175    value: function bind(fonts, callback) {
10176      var rules = [];
10177      var fontsToLoad = [];
10178      var fontLoadPromises = [];
10179      var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) {
10180        return nativeFontFace.loaded.catch(function (reason) {
10181          (0, _util.warn)('Failed to load font "' + nativeFontFace.family + '": ' + reason);
10182        });
10183      };
10184      var _iteratorNormalCompletion = true;
10185      var _didIteratorError = false;
10186      var _iteratorError = undefined;
10187
10188      try {
10189        for (var _iterator = fonts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
10190          var font = _step.value;
10191
10192          if (font.attached || font.missingFile) {
10193            continue;
10194          }
10195          font.attached = true;
10196          if (this.isFontLoadingAPISupported) {
10197            var nativeFontFace = font.createNativeFontFace();
10198            if (nativeFontFace) {
10199              this.addNativeFontFace(nativeFontFace);
10200              fontLoadPromises.push(getNativeFontPromise(nativeFontFace));
10201            }
10202          } else {
10203            var rule = font.createFontFaceRule();
10204            if (rule) {
10205              this.insertRule(rule);
10206              rules.push(rule);
10207              fontsToLoad.push(font);
10208            }
10209          }
10210        }
10211      } catch (err) {
10212        _didIteratorError = true;
10213        _iteratorError = err;
10214      } finally {
10215        try {
10216          if (!_iteratorNormalCompletion && _iterator.return) {
10217            _iterator.return();
10218          }
10219        } finally {
10220          if (_didIteratorError) {
10221            throw _iteratorError;
10222          }
10223        }
10224      }
10225
10226      var request = this._queueLoadingCallback(callback);
10227      if (this.isFontLoadingAPISupported) {
10228        Promise.all(fontLoadPromises).then(request.complete);
10229      } else if (rules.length > 0 && !this.isSyncFontLoadingSupported) {
10230        this._prepareFontLoadEvent(rules, fontsToLoad, request);
10231      } else {
10232        request.complete();
10233      }
10234    }
10235  }, {
10236    key: '_queueLoadingCallback',
10237    value: function _queueLoadingCallback(callback) {
10238      function completeRequest() {
10239        (0, _util.assert)(!request.done, 'completeRequest() cannot be called twice.');
10240        request.done = true;
10241        while (context.requests.length > 0 && context.requests[0].done) {
10242          var otherRequest = context.requests.shift();
10243          setTimeout(otherRequest.callback, 0);
10244        }
10245      }
10246      var context = this.loadingContext;
10247      var request = {
10248        id: 'pdfjs-font-loading-' + context.nextRequestId++,
10249        done: false,
10250        complete: completeRequest,
10251        callback: callback
10252      };
10253      context.requests.push(request);
10254      return request;
10255    }
10256  }, {
10257    key: '_prepareFontLoadEvent',
10258    value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {
10259      (0, _util.unreachable)('Abstract method `_prepareFontLoadEvent`.');
10260    }
10261  }, {
10262    key: 'isFontLoadingAPISupported',
10263    get: function get() {
10264      (0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.');
10265    }
10266  }, {
10267    key: 'isSyncFontLoadingSupported',
10268    get: function get() {
10269      (0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.');
10270    }
10271  }, {
10272    key: '_loadTestFont',
10273    get: function get() {
10274      (0, _util.unreachable)('Abstract method `_loadTestFont`.');
10275    }
10276  }]);
10277
10278  return BaseFontLoader;
10279}();
10280
10281var FontLoader = void 0;
10282{
10283  exports.FontLoader = FontLoader = function (_BaseFontLoader) {
10284    _inherits(GenericFontLoader, _BaseFontLoader);
10285
10286    function GenericFontLoader(docId) {
10287      _classCallCheck(this, GenericFontLoader);
10288
10289      var _this = _possibleConstructorReturn(this, (GenericFontLoader.__proto__ || Object.getPrototypeOf(GenericFontLoader)).call(this, docId));
10290
10291      _this.loadTestFontId = 0;
10292      return _this;
10293    }
10294
10295    _createClass(GenericFontLoader, [{
10296      key: '_prepareFontLoadEvent',
10297      value: function _prepareFontLoadEvent(rules, fonts, request) {
10298        function int32(data, offset) {
10299          return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
10300        }
10301        function spliceString(s, offset, remove, insert) {
10302          var chunk1 = s.substring(0, offset);
10303          var chunk2 = s.substring(offset + remove);
10304          return chunk1 + insert + chunk2;
10305        }
10306        var i = void 0,
10307            ii = void 0;
10308        var canvas = document.createElement('canvas');
10309        canvas.width = 1;
10310        canvas.height = 1;
10311        var ctx = canvas.getContext('2d');
10312        var called = 0;
10313        function isFontReady(name, callback) {
10314          called++;
10315          if (called > 30) {
10316            (0, _util.warn)('Load test font never loaded.');
10317            callback();
10318            return;
10319          }
10320          ctx.font = '30px ' + name;
10321          ctx.fillText('.', 0, 20);
10322          var imageData = ctx.getImageData(0, 0, 1, 1);
10323          if (imageData.data[3] > 0) {
10324            callback();
10325            return;
10326          }
10327          setTimeout(isFontReady.bind(null, name, callback));
10328        }
10329        var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++;
10330        var data = this._loadTestFont;
10331        var COMMENT_OFFSET = 976;
10332        data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
10333        var CFF_CHECKSUM_OFFSET = 16;
10334        var XXXX_VALUE = 0x58585858;
10335        var checksum = int32(data, CFF_CHECKSUM_OFFSET);
10336        for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
10337          checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
10338        }
10339        if (i < loadTestFontId.length) {
10340          checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0;
10341        }
10342        data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
10343        var url = 'url(data:font/opentype;base64,' + btoa(data) + ');';
10344        var rule = '@font-face {font-family:"' + loadTestFontId + '";src:' + url + '}';
10345        this.insertRule(rule);
10346        var names = [];
10347        for (i = 0, ii = fonts.length; i < ii; i++) {
10348          names.push(fonts[i].loadedName);
10349        }
10350        names.push(loadTestFontId);
10351        var div = document.createElement('div');
10352        div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;');
10353        for (i = 0, ii = names.length; i < ii; ++i) {
10354          var span = document.createElement('span');
10355          span.textContent = 'Hi';
10356          span.style.fontFamily = names[i];
10357          div.appendChild(span);
10358        }
10359        document.body.appendChild(div);
10360        isFontReady(loadTestFontId, function () {
10361          document.body.removeChild(div);
10362          request.complete();
10363        });
10364      }
10365    }, {
10366      key: 'isFontLoadingAPISupported',
10367      get: function get() {
10368        var supported = typeof document !== 'undefined' && !!document.fonts;
10369        if (supported && typeof navigator !== 'undefined') {
10370          var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
10371          if (m && m[1] < 63) {
10372            supported = false;
10373          }
10374        }
10375        return (0, _util.shadow)(this, 'isFontLoadingAPISupported', supported);
10376      }
10377    }, {
10378      key: 'isSyncFontLoadingSupported',
10379      get: function get() {
10380        var supported = false;
10381        if (typeof navigator === 'undefined') {
10382          supported = true;
10383        } else {
10384          var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
10385          if (m && m[1] >= 14) {
10386            supported = true;
10387          }
10388        }
10389        return (0, _util.shadow)(this, 'isSyncFontLoadingSupported', supported);
10390      }
10391    }, {
10392      key: '_loadTestFont',
10393      get: function get() {
10394        var getLoadTestFont = function getLoadTestFont() {
10395          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==');
10396        };
10397        return (0, _util.shadow)(this, '_loadTestFont', getLoadTestFont());
10398      }
10399    }]);
10400
10401    return GenericFontLoader;
10402  }(BaseFontLoader);
10403}
10404var IsEvalSupportedCached = {
10405  get value() {
10406    return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
10407  }
10408};
10409
10410var FontFaceObject = function () {
10411  function FontFaceObject(translatedData, _ref) {
10412    var _ref$isEvalSupported = _ref.isEvalSupported,
10413        isEvalSupported = _ref$isEvalSupported === undefined ? true : _ref$isEvalSupported,
10414        _ref$disableFontFace = _ref.disableFontFace,
10415        disableFontFace = _ref$disableFontFace === undefined ? false : _ref$disableFontFace,
10416        _ref$ignoreErrors = _ref.ignoreErrors,
10417        ignoreErrors = _ref$ignoreErrors === undefined ? false : _ref$ignoreErrors,
10418        _ref$onUnsupportedFea = _ref.onUnsupportedFeature,
10419        onUnsupportedFeature = _ref$onUnsupportedFea === undefined ? null : _ref$onUnsupportedFea,
10420        _ref$fontRegistry = _ref.fontRegistry,
10421        fontRegistry = _ref$fontRegistry === undefined ? null : _ref$fontRegistry;
10422
10423    _classCallCheck(this, FontFaceObject);
10424
10425    this.compiledGlyphs = Object.create(null);
10426    for (var i in translatedData) {
10427      this[i] = translatedData[i];
10428    }
10429    this.isEvalSupported = isEvalSupported !== false;
10430    this.disableFontFace = disableFontFace === true;
10431    this.ignoreErrors = ignoreErrors === true;
10432    this._onUnsupportedFeature = onUnsupportedFeature;
10433    this.fontRegistry = fontRegistry;
10434  }
10435
10436  _createClass(FontFaceObject, [{
10437    key: 'createNativeFontFace',
10438    value: function createNativeFontFace() {
10439      if (!this.data || this.disableFontFace) {
10440        return null;
10441      }
10442      var nativeFontFace = new FontFace(this.loadedName, this.data, {});
10443      if (this.fontRegistry) {
10444        this.fontRegistry.registerFont(this);
10445      }
10446      return nativeFontFace;
10447    }
10448  }, {
10449    key: 'createFontFaceRule',
10450    value: function createFontFaceRule() {
10451      if (!this.data || this.disableFontFace) {
10452        return null;
10453      }
10454      var data = (0, _util.bytesToString)(new Uint8Array(this.data));
10455      var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');';
10456      var rule = '@font-face {font-family:"' + this.loadedName + '";src:' + url + '}';
10457      if (this.fontRegistry) {
10458        this.fontRegistry.registerFont(this, url);
10459      }
10460      return rule;
10461    }
10462  }, {
10463    key: 'getPathGenerator',
10464    value: function getPathGenerator(objs, character) {
10465      if (this.compiledGlyphs[character] !== undefined) {
10466        return this.compiledGlyphs[character];
10467      }
10468      var cmds = void 0,
10469          current = void 0;
10470      try {
10471        cmds = objs.get(this.loadedName + '_path_' + character);
10472      } catch (ex) {
10473        if (!this.ignoreErrors) {
10474          throw ex;
10475        }
10476        if (this._onUnsupportedFeature) {
10477          this._onUnsupportedFeature({ featureId: _util.UNSUPPORTED_FEATURES.font });
10478        }
10479        (0, _util.warn)('getPathGenerator - ignoring character: "' + ex + '".');
10480        return this.compiledGlyphs[character] = function (c, size) {};
10481      }
10482      if (this.isEvalSupported && IsEvalSupportedCached.value) {
10483        var args = void 0,
10484            js = '';
10485        for (var i = 0, ii = cmds.length; i < ii; i++) {
10486          current = cmds[i];
10487          if (current.args !== undefined) {
10488            args = current.args.join(',');
10489          } else {
10490            args = '';
10491          }
10492          js += 'c.' + current.cmd + '(' + args + ');\n';
10493        }
10494        return this.compiledGlyphs[character] = new Function('c', 'size', js);
10495      }
10496      return this.compiledGlyphs[character] = function (c, size) {
10497        for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) {
10498          current = cmds[_i];
10499          if (current.cmd === 'scale') {
10500            current.args = [size, -size];
10501          }
10502          c[current.cmd].apply(c, current.args);
10503        }
10504      };
10505    }
10506  }]);
10507
10508  return FontFaceObject;
10509}();
10510
10511exports.FontFaceObject = FontFaceObject;
10512exports.FontLoader = FontLoader;
10513
10514/***/ }),
10515/* 132 */
10516/***/ (function(module, exports, __w_pdfjs_require__) {
10517
10518"use strict";
10519
10520
10521var compatibilityParams = Object.create(null);
10522{
10523  var isNodeJS = __w_pdfjs_require__(4);
10524  var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || '';
10525  var isIE = /Trident/.test(userAgent);
10526  var isIOSChrome = /CriOS/.test(userAgent);
10527  (function checkOnBlobSupport() {
10528    if (isIE || isIOSChrome) {
10529      compatibilityParams.disableCreateObjectURL = true;
10530    }
10531  })();
10532  (function checkFontFaceAndImage() {
10533    if (isNodeJS()) {
10534      compatibilityParams.disableFontFace = true;
10535      compatibilityParams.nativeImageDecoderSupport = 'none';
10536    }
10537  })();
10538}
10539exports.apiCompatibilityParams = Object.freeze(compatibilityParams);
10540
10541/***/ }),
10542/* 133 */
10543/***/ (function(module, exports, __w_pdfjs_require__) {
10544
10545"use strict";
10546
10547
10548Object.defineProperty(exports, "__esModule", {
10549  value: true
10550});
10551exports.CanvasGraphics = undefined;
10552
10553var _util = __w_pdfjs_require__(1);
10554
10555var _pattern_helper = __w_pdfjs_require__(134);
10556
10557var MIN_FONT_SIZE = 16;
10558var MAX_FONT_SIZE = 100;
10559var MAX_GROUP_SIZE = 4096;
10560var MIN_WIDTH_FACTOR = 0.65;
10561var COMPILE_TYPE3_GLYPHS = true;
10562var MAX_SIZE_TO_COMPILE = 1000;
10563var FULL_CHUNK_HEIGHT = 16;
10564var IsLittleEndianCached = {
10565  get value() {
10566    return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)());
10567  }
10568};
10569function addContextCurrentTransform(ctx) {
10570  if (!ctx.mozCurrentTransform) {
10571    ctx._originalSave = ctx.save;
10572    ctx._originalRestore = ctx.restore;
10573    ctx._originalRotate = ctx.rotate;
10574    ctx._originalScale = ctx.scale;
10575    ctx._originalTranslate = ctx.translate;
10576    ctx._originalTransform = ctx.transform;
10577    ctx._originalSetTransform = ctx.setTransform;
10578    ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];
10579    ctx._transformStack = [];
10580    Object.defineProperty(ctx, 'mozCurrentTransform', {
10581      get: function getCurrentTransform() {
10582        return this._transformMatrix;
10583      }
10584    });
10585    Object.defineProperty(ctx, 'mozCurrentTransformInverse', {
10586      get: function getCurrentTransformInverse() {
10587        var m = this._transformMatrix;
10588        var a = m[0],
10589            b = m[1],
10590            c = m[2],
10591            d = m[3],
10592            e = m[4],
10593            f = m[5];
10594        var ad_bc = a * d - b * c;
10595        var bc_ad = b * c - a * d;
10596        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];
10597      }
10598    });
10599    ctx.save = function ctxSave() {
10600      var old = this._transformMatrix;
10601      this._transformStack.push(old);
10602      this._transformMatrix = old.slice(0, 6);
10603      this._originalSave();
10604    };
10605    ctx.restore = function ctxRestore() {
10606      var prev = this._transformStack.pop();
10607      if (prev) {
10608        this._transformMatrix = prev;
10609        this._originalRestore();
10610      }
10611    };
10612    ctx.translate = function ctxTranslate(x, y) {
10613      var m = this._transformMatrix;
10614      m[4] = m[0] * x + m[2] * y + m[4];
10615      m[5] = m[1] * x + m[3] * y + m[5];
10616      this._originalTranslate(x, y);
10617    };
10618    ctx.scale = function ctxScale(x, y) {
10619      var m = this._transformMatrix;
10620      m[0] = m[0] * x;
10621      m[1] = m[1] * x;
10622      m[2] = m[2] * y;
10623      m[3] = m[3] * y;
10624      this._originalScale(x, y);
10625    };
10626    ctx.transform = function ctxTransform(a, b, c, d, e, f) {
10627      var m = this._transformMatrix;
10628      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]];
10629      ctx._originalTransform(a, b, c, d, e, f);
10630    };
10631    ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
10632      this._transformMatrix = [a, b, c, d, e, f];
10633      ctx._originalSetTransform(a, b, c, d, e, f);
10634    };
10635    ctx.rotate = function ctxRotate(angle) {
10636      var cosValue = Math.cos(angle);
10637      var sinValue = Math.sin(angle);
10638      var m = this._transformMatrix;
10639      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]];
10640      this._originalRotate(angle);
10641    };
10642  }
10643}
10644var CachedCanvases = function CachedCanvasesClosure() {
10645  function CachedCanvases(canvasFactory) {
10646    this.canvasFactory = canvasFactory;
10647    this.cache = Object.create(null);
10648  }
10649  CachedCanvases.prototype = {
10650    getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {
10651      var canvasEntry;
10652      if (this.cache[id] !== undefined) {
10653        canvasEntry = this.cache[id];
10654        this.canvasFactory.reset(canvasEntry, width, height);
10655        canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);
10656      } else {
10657        canvasEntry = this.canvasFactory.create(width, height);
10658        this.cache[id] = canvasEntry;
10659      }
10660      if (trackTransform) {
10661        addContextCurrentTransform(canvasEntry.context);
10662      }
10663      return canvasEntry;
10664    },
10665    clear: function clear() {
10666      for (var id in this.cache) {
10667        var canvasEntry = this.cache[id];
10668        this.canvasFactory.destroy(canvasEntry);
10669        delete this.cache[id];
10670      }
10671    }
10672  };
10673  return CachedCanvases;
10674}();
10675function compileType3Glyph(imgData) {
10676  var POINT_TO_PROCESS_LIMIT = 1000;
10677  var width = imgData.width,
10678      height = imgData.height;
10679  var i,
10680      j,
10681      j0,
10682      width1 = width + 1;
10683  var points = new Uint8Array(width1 * (height + 1));
10684  var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
10685  var lineSize = width + 7 & ~7,
10686      data0 = imgData.data;
10687  var data = new Uint8Array(lineSize * height),
10688      pos = 0,
10689      ii;
10690  for (i = 0, ii = data0.length; i < ii; i++) {
10691    var mask = 128,
10692        elem = data0[i];
10693    while (mask > 0) {
10694      data[pos++] = elem & mask ? 0 : 255;
10695      mask >>= 1;
10696    }
10697  }
10698  var count = 0;
10699  pos = 0;
10700  if (data[pos] !== 0) {
10701    points[0] = 1;
10702    ++count;
10703  }
10704  for (j = 1; j < width; j++) {
10705    if (data[pos] !== data[pos + 1]) {
10706      points[j] = data[pos] ? 2 : 1;
10707      ++count;
10708    }
10709    pos++;
10710  }
10711  if (data[pos] !== 0) {
10712    points[j] = 2;
10713    ++count;
10714  }
10715  for (i = 1; i < height; i++) {
10716    pos = i * lineSize;
10717    j0 = i * width1;
10718    if (data[pos - lineSize] !== data[pos]) {
10719      points[j0] = data[pos] ? 1 : 8;
10720      ++count;
10721    }
10722    var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
10723    for (j = 1; j < width; j++) {
10724      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
10725      if (POINT_TYPES[sum]) {
10726        points[j0 + j] = POINT_TYPES[sum];
10727        ++count;
10728      }
10729      pos++;
10730    }
10731    if (data[pos - lineSize] !== data[pos]) {
10732      points[j0 + j] = data[pos] ? 2 : 4;
10733      ++count;
10734    }
10735    if (count > POINT_TO_PROCESS_LIMIT) {
10736      return null;
10737    }
10738  }
10739  pos = lineSize * (height - 1);
10740  j0 = i * width1;
10741  if (data[pos] !== 0) {
10742    points[j0] = 8;
10743    ++count;
10744  }
10745  for (j = 1; j < width; j++) {
10746    if (data[pos] !== data[pos + 1]) {
10747      points[j0 + j] = data[pos] ? 4 : 8;
10748      ++count;
10749    }
10750    pos++;
10751  }
10752  if (data[pos] !== 0) {
10753    points[j0 + j] = 4;
10754    ++count;
10755  }
10756  if (count > POINT_TO_PROCESS_LIMIT) {
10757    return null;
10758  }
10759  var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
10760  var outlines = [];
10761  for (i = 0; count && i <= height; i++) {
10762    var p = i * width1;
10763    var end = p + width;
10764    while (p < end && !points[p]) {
10765      p++;
10766    }
10767    if (p === end) {
10768      continue;
10769    }
10770    var coords = [p % width1, i];
10771    var type = points[p],
10772        p0 = p,
10773        pp;
10774    do {
10775      var step = steps[type];
10776      do {
10777        p += step;
10778      } while (!points[p]);
10779      pp = points[p];
10780      if (pp !== 5 && pp !== 10) {
10781        type = pp;
10782        points[p] = 0;
10783      } else {
10784        type = pp & 0x33 * type >> 4;
10785        points[p] &= type >> 2 | type << 2;
10786      }
10787      coords.push(p % width1);
10788      coords.push(p / width1 | 0);
10789      --count;
10790    } while (p0 !== p);
10791    outlines.push(coords);
10792    --i;
10793  }
10794  var drawOutline = function drawOutline(c) {
10795    c.save();
10796    c.scale(1 / width, -1 / height);
10797    c.translate(0, -height);
10798    c.beginPath();
10799    for (var i = 0, ii = outlines.length; i < ii; i++) {
10800      var o = outlines[i];
10801      c.moveTo(o[0], o[1]);
10802      for (var j = 2, jj = o.length; j < jj; j += 2) {
10803        c.lineTo(o[j], o[j + 1]);
10804      }
10805    }
10806    c.fill();
10807    c.beginPath();
10808    c.restore();
10809  };
10810  return drawOutline;
10811}
10812var CanvasExtraState = function CanvasExtraStateClosure() {
10813  function CanvasExtraState() {
10814    this.alphaIsShape = false;
10815    this.fontSize = 0;
10816    this.fontSizeScale = 1;
10817    this.textMatrix = _util.IDENTITY_MATRIX;
10818    this.textMatrixScale = 1;
10819    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
10820    this.leading = 0;
10821    this.x = 0;
10822    this.y = 0;
10823    this.lineX = 0;
10824    this.lineY = 0;
10825    this.charSpacing = 0;
10826    this.wordSpacing = 0;
10827    this.textHScale = 1;
10828    this.textRenderingMode = _util.TextRenderingMode.FILL;
10829    this.textRise = 0;
10830    this.fillColor = '#000000';
10831    this.strokeColor = '#000000';
10832    this.patternFill = false;
10833    this.fillAlpha = 1;
10834    this.strokeAlpha = 1;
10835    this.lineWidth = 1;
10836    this.activeSMask = null;
10837    this.resumeSMaskCtx = null;
10838  }
10839  CanvasExtraState.prototype = {
10840    clone: function CanvasExtraState_clone() {
10841      return Object.create(this);
10842    },
10843    setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {
10844      this.x = x;
10845      this.y = y;
10846    }
10847  };
10848  return CanvasExtraState;
10849}();
10850var CanvasGraphics = function CanvasGraphicsClosure() {
10851  var EXECUTION_TIME = 15;
10852  var EXECUTION_STEPS = 10;
10853  function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer) {
10854    this.ctx = canvasCtx;
10855    this.current = new CanvasExtraState();
10856    this.stateStack = [];
10857    this.pendingClip = null;
10858    this.pendingEOFill = false;
10859    this.res = null;
10860    this.xobjs = null;
10861    this.commonObjs = commonObjs;
10862    this.objs = objs;
10863    this.canvasFactory = canvasFactory;
10864    this.webGLContext = webGLContext;
10865    this.imageLayer = imageLayer;
10866    this.groupStack = [];
10867    this.processingType3 = null;
10868    this.baseTransform = null;
10869    this.baseTransformStack = [];
10870    this.groupLevel = 0;
10871    this.smaskStack = [];
10872    this.smaskCounter = 0;
10873    this.tempSMask = null;
10874    this.cachedCanvases = new CachedCanvases(this.canvasFactory);
10875    if (canvasCtx) {
10876      addContextCurrentTransform(canvasCtx);
10877    }
10878    this._cachedGetSinglePixelWidth = null;
10879  }
10880  function putBinaryImageData(ctx, imgData) {
10881    if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {
10882      ctx.putImageData(imgData, 0, 0);
10883      return;
10884    }
10885    var height = imgData.height,
10886        width = imgData.width;
10887    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
10888    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
10889    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
10890    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
10891    var srcPos = 0,
10892        destPos;
10893    var src = imgData.data;
10894    var dest = chunkImgData.data;
10895    var i, j, thisChunkHeight, elemsInThisChunk;
10896    if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
10897      var srcLength = src.byteLength;
10898      var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
10899      var dest32DataLength = dest32.length;
10900      var fullSrcDiff = width + 7 >> 3;
10901      var white = 0xFFFFFFFF;
10902      var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF;
10903      for (i = 0; i < totalChunks; i++) {
10904        thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
10905        destPos = 0;
10906        for (j = 0; j < thisChunkHeight; j++) {
10907          var srcDiff = srcLength - srcPos;
10908          var k = 0;
10909          var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
10910          var kEndUnrolled = kEnd & ~7;
10911          var mask = 0;
10912          var srcByte = 0;
10913          for (; k < kEndUnrolled; k += 8) {
10914            srcByte = src[srcPos++];
10915            dest32[destPos++] = srcByte & 128 ? white : black;
10916            dest32[destPos++] = srcByte & 64 ? white : black;
10917            dest32[destPos++] = srcByte & 32 ? white : black;
10918            dest32[destPos++] = srcByte & 16 ? white : black;
10919            dest32[destPos++] = srcByte & 8 ? white : black;
10920            dest32[destPos++] = srcByte & 4 ? white : black;
10921            dest32[destPos++] = srcByte & 2 ? white : black;
10922            dest32[destPos++] = srcByte & 1 ? white : black;
10923          }
10924          for (; k < kEnd; k++) {
10925            if (mask === 0) {
10926              srcByte = src[srcPos++];
10927              mask = 128;
10928            }
10929            dest32[destPos++] = srcByte & mask ? white : black;
10930            mask >>= 1;
10931          }
10932        }
10933        while (destPos < dest32DataLength) {
10934          dest32[destPos++] = 0;
10935        }
10936        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
10937      }
10938    } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {
10939      j = 0;
10940      elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
10941      for (i = 0; i < fullChunks; i++) {
10942        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
10943        srcPos += elemsInThisChunk;
10944        ctx.putImageData(chunkImgData, 0, j);
10945        j += FULL_CHUNK_HEIGHT;
10946      }
10947      if (i < totalChunks) {
10948        elemsInThisChunk = width * partialChunkHeight * 4;
10949        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
10950        ctx.putImageData(chunkImgData, 0, j);
10951      }
10952    } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {
10953      thisChunkHeight = FULL_CHUNK_HEIGHT;
10954      elemsInThisChunk = width * thisChunkHeight;
10955      for (i = 0; i < totalChunks; i++) {
10956        if (i >= fullChunks) {
10957          thisChunkHeight = partialChunkHeight;
10958          elemsInThisChunk = width * thisChunkHeight;
10959        }
10960        destPos = 0;
10961        for (j = elemsInThisChunk; j--;) {
10962          dest[destPos++] = src[srcPos++];
10963          dest[destPos++] = src[srcPos++];
10964          dest[destPos++] = src[srcPos++];
10965          dest[destPos++] = 255;
10966        }
10967        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
10968      }
10969    } else {
10970      throw new Error('bad image kind: ' + imgData.kind);
10971    }
10972  }
10973  function putBinaryImageMask(ctx, imgData) {
10974    var height = imgData.height,
10975        width = imgData.width;
10976    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
10977    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
10978    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
10979    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
10980    var srcPos = 0;
10981    var src = imgData.data;
10982    var dest = chunkImgData.data;
10983    for (var i = 0; i < totalChunks; i++) {
10984      var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
10985      var destPos = 3;
10986      for (var j = 0; j < thisChunkHeight; j++) {
10987        var mask = 0;
10988        for (var k = 0; k < width; k++) {
10989          if (!mask) {
10990            var elem = src[srcPos++];
10991            mask = 128;
10992          }
10993          dest[destPos] = elem & mask ? 0 : 255;
10994          destPos += 4;
10995          mask >>= 1;
10996        }
10997      }
10998      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
10999    }
11000  }
11001  function copyCtxState(sourceCtx, destCtx) {
11002    var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha', 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', 'globalCompositeOperation', 'font'];
11003    for (var i = 0, ii = properties.length; i < ii; i++) {
11004      var property = properties[i];
11005      if (sourceCtx[property] !== undefined) {
11006        destCtx[property] = sourceCtx[property];
11007      }
11008    }
11009    if (sourceCtx.setLineDash !== undefined) {
11010      destCtx.setLineDash(sourceCtx.getLineDash());
11011      destCtx.lineDashOffset = sourceCtx.lineDashOffset;
11012    }
11013  }
11014  function resetCtxToDefault(ctx) {
11015    ctx.strokeStyle = '#000000';
11016    ctx.fillStyle = '#000000';
11017    ctx.fillRule = 'nonzero';
11018    ctx.globalAlpha = 1;
11019    ctx.lineWidth = 1;
11020    ctx.lineCap = 'butt';
11021    ctx.lineJoin = 'miter';
11022    ctx.miterLimit = 10;
11023    ctx.globalCompositeOperation = 'source-over';
11024    ctx.font = '10px sans-serif';
11025    if (ctx.setLineDash !== undefined) {
11026      ctx.setLineDash([]);
11027      ctx.lineDashOffset = 0;
11028    }
11029  }
11030  function composeSMaskBackdrop(bytes, r0, g0, b0) {
11031    var length = bytes.length;
11032    for (var i = 3; i < length; i += 4) {
11033      var alpha = bytes[i];
11034      if (alpha === 0) {
11035        bytes[i - 3] = r0;
11036        bytes[i - 2] = g0;
11037        bytes[i - 1] = b0;
11038      } else if (alpha < 255) {
11039        var alpha_ = 255 - alpha;
11040        bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
11041        bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
11042        bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
11043      }
11044    }
11045  }
11046  function composeSMaskAlpha(maskData, layerData, transferMap) {
11047    var length = maskData.length;
11048    var scale = 1 / 255;
11049    for (var i = 3; i < length; i += 4) {
11050      var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
11051      layerData[i] = layerData[i] * alpha * scale | 0;
11052    }
11053  }
11054  function composeSMaskLuminosity(maskData, layerData, transferMap) {
11055    var length = maskData.length;
11056    for (var i = 3; i < length; i += 4) {
11057      var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
11058      layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
11059    }
11060  }
11061  function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {
11062    var hasBackdrop = !!backdrop;
11063    var r0 = hasBackdrop ? backdrop[0] : 0;
11064    var g0 = hasBackdrop ? backdrop[1] : 0;
11065    var b0 = hasBackdrop ? backdrop[2] : 0;
11066    var composeFn;
11067    if (subtype === 'Luminosity') {
11068      composeFn = composeSMaskLuminosity;
11069    } else {
11070      composeFn = composeSMaskAlpha;
11071    }
11072    var PIXELS_TO_PROCESS = 1048576;
11073    var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
11074    for (var row = 0; row < height; row += chunkSize) {
11075      var chunkHeight = Math.min(chunkSize, height - row);
11076      var maskData = maskCtx.getImageData(0, row, width, chunkHeight);
11077      var layerData = layerCtx.getImageData(0, row, width, chunkHeight);
11078      if (hasBackdrop) {
11079        composeSMaskBackdrop(maskData.data, r0, g0, b0);
11080      }
11081      composeFn(maskData.data, layerData.data, transferMap);
11082      maskCtx.putImageData(layerData, 0, row);
11083    }
11084  }
11085  function composeSMask(ctx, smask, layerCtx, webGLContext) {
11086    var mask = smask.canvas;
11087    var maskCtx = smask.context;
11088    ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);
11089    var backdrop = smask.backdrop || null;
11090    if (!smask.transferMap && webGLContext.isEnabled) {
11091      var composed = webGLContext.composeSMask({
11092        layer: layerCtx.canvas,
11093        mask: mask,
11094        properties: {
11095          subtype: smask.subtype,
11096          backdrop: backdrop
11097        }
11098      });
11099      ctx.setTransform(1, 0, 0, 1, 0, 0);
11100      ctx.drawImage(composed, smask.offsetX, smask.offsetY);
11101      return;
11102    }
11103    genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap);
11104    ctx.drawImage(mask, 0, 0);
11105  }
11106  var LINE_CAP_STYLES = ['butt', 'round', 'square'];
11107  var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
11108  var NORMAL_CLIP = {};
11109  var EO_CLIP = {};
11110  CanvasGraphics.prototype = {
11111    beginDrawing: function beginDrawing(_ref) {
11112      var transform = _ref.transform,
11113          viewport = _ref.viewport,
11114          transparency = _ref.transparency,
11115          _ref$background = _ref.background,
11116          background = _ref$background === undefined ? null : _ref$background;
11117
11118      var width = this.ctx.canvas.width;
11119      var height = this.ctx.canvas.height;
11120      this.ctx.save();
11121      this.ctx.fillStyle = background || 'rgb(255, 255, 255)';
11122      this.ctx.fillRect(0, 0, width, height);
11123      this.ctx.restore();
11124      if (transparency) {
11125        var transparentCanvas = this.cachedCanvases.getCanvas('transparent', width, height, true);
11126        this.compositeCtx = this.ctx;
11127        this.transparentCanvas = transparentCanvas.canvas;
11128        this.ctx = transparentCanvas.context;
11129        this.ctx.save();
11130        this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);
11131      }
11132      this.ctx.save();
11133      resetCtxToDefault(this.ctx);
11134      if (transform) {
11135        this.ctx.transform.apply(this.ctx, transform);
11136      }
11137      this.ctx.transform.apply(this.ctx, viewport.transform);
11138      this.baseTransform = this.ctx.mozCurrentTransform.slice();
11139      if (this.imageLayer) {
11140        this.imageLayer.beginLayout();
11141      }
11142    },
11143
11144    executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
11145      var argsArray = operatorList.argsArray;
11146      var fnArray = operatorList.fnArray;
11147      var i = executionStartIdx || 0;
11148      var argsArrayLen = argsArray.length;
11149      if (argsArrayLen === i) {
11150        return i;
11151      }
11152      var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === 'function';
11153      var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
11154      var steps = 0;
11155      var commonObjs = this.commonObjs;
11156      var objs = this.objs;
11157      var fnId;
11158      while (true) {
11159        if (stepper !== undefined && i === stepper.nextBreakPoint) {
11160          stepper.breakIt(i, continueCallback);
11161          return i;
11162        }
11163        fnId = fnArray[i];
11164        if (fnId !== _util.OPS.dependency) {
11165          this[fnId].apply(this, argsArray[i]);
11166        } else {
11167          var deps = argsArray[i];
11168          for (var n = 0, nn = deps.length; n < nn; n++) {
11169            var depObjId = deps[n];
11170            var common = depObjId[0] === 'g' && depObjId[1] === '_';
11171            var objsPool = common ? commonObjs : objs;
11172            if (!objsPool.isResolved(depObjId)) {
11173              objsPool.get(depObjId, continueCallback);
11174              return i;
11175            }
11176          }
11177        }
11178        i++;
11179        if (i === argsArrayLen) {
11180          return i;
11181        }
11182        if (chunkOperations && ++steps > EXECUTION_STEPS) {
11183          if (Date.now() > endTime) {
11184            continueCallback();
11185            return i;
11186          }
11187          steps = 0;
11188        }
11189      }
11190    },
11191    endDrawing: function CanvasGraphics_endDrawing() {
11192      if (this.current.activeSMask !== null) {
11193        this.endSMaskGroup();
11194      }
11195      this.ctx.restore();
11196      if (this.transparentCanvas) {
11197        this.ctx = this.compositeCtx;
11198        this.ctx.save();
11199        this.ctx.setTransform(1, 0, 0, 1, 0, 0);
11200        this.ctx.drawImage(this.transparentCanvas, 0, 0);
11201        this.ctx.restore();
11202        this.transparentCanvas = null;
11203      }
11204      this.cachedCanvases.clear();
11205      this.webGLContext.clear();
11206      if (this.imageLayer) {
11207        this.imageLayer.endLayout();
11208      }
11209    },
11210    setLineWidth: function CanvasGraphics_setLineWidth(width) {
11211      this.current.lineWidth = width;
11212      this.ctx.lineWidth = width;
11213    },
11214    setLineCap: function CanvasGraphics_setLineCap(style) {
11215      this.ctx.lineCap = LINE_CAP_STYLES[style];
11216    },
11217    setLineJoin: function CanvasGraphics_setLineJoin(style) {
11218      this.ctx.lineJoin = LINE_JOIN_STYLES[style];
11219    },
11220    setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {
11221      this.ctx.miterLimit = limit;
11222    },
11223    setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
11224      var ctx = this.ctx;
11225      if (ctx.setLineDash !== undefined) {
11226        ctx.setLineDash(dashArray);
11227        ctx.lineDashOffset = dashPhase;
11228      }
11229    },
11230    setRenderingIntent: function CanvasGraphics_setRenderingIntent
vendor: 4,102 bytes, lines 11230-11336
11230(intent) {},
11231    setFlatness: function CanvasGraphics_setFlatness(flatness) {},
11232    setGState: function CanvasGraphics_setGState(states) {
11233      for (var i = 0, ii = states.length; i < ii; i++) {
11234        var state = states[i];
11235        var key = state[0];
11236        var value = state[1];
11237        switch (key) {
11238          case 'LW':
11239            this.setLineWidth(value);
11240            break;
11241          case 'LC':
11242            this.setLineCap(value);
11243            break;
11244          case 'LJ':
11245            this.setLineJoin(value);
11246            break;
11247          case 'ML':
11248            this.setMiterLimit(value);
11249            break;
11250          case 'D':
11251            this.setDash(value[0], value[1]);
11252            break;
11253          case 'RI':
11254            this.setRenderingIntent(value);
11255            break;
11256          case 'FL':
11257            this.setFlatness(value);
11258            break;
11259          case 'Font':
11260            this.setFont(value[0], value[1]);
11261            break;
11262          case 'CA':
11263            this.current.strokeAlpha = state[1];
11264            break;
11265          case 'ca':
11266            this.current.fillAlpha = state[1];
11267            this.ctx.globalAlpha = state[1];
11268            break;
11269          case 'BM':
11270            this.ctx.globalCompositeOperation = value;
11271            break;
11272          case 'SMask':
11273            if (this.current.activeSMask) {
11274              if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) {
11275                this.suspendSMaskGroup();
11276              } else {
11277                this.endSMaskGroup();
11278              }
11279            }
11280            this.current.activeSMask = value ? this.tempSMask : null;
11281            if (this.current.activeSMask) {
11282              this.beginSMaskGroup();
11283            }
11284            this.tempSMask = null;
11285            break;
11286        }
11287      }
11288    },
11289    beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {
11290      var activeSMask = this.current.activeSMask;
11291      var drawnWidth = activeSMask.canvas.width;
11292      var drawnHeight = activeSMask.canvas.height;
11293      var cacheId = 'smaskGroupAt' + this.groupLevel;
11294      var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
11295      var currentCtx = this.ctx;
11296      var currentTransform = currentCtx.mozCurrentTransform;
11297      this.ctx.save();
11298      var groupCtx = scratchCanvas.context;
11299      groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
11300      groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
11301      groupCtx.transform.apply(groupCtx, currentTransform);
11302      activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;
11303      copyCtxState(currentCtx, groupCtx);
11304      this.ctx = groupCtx;
11305      this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]);
11306      this.groupStack.push(currentCtx);
11307      this.groupLevel++;
11308    },
11309    suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {
11310      var groupCtx = this.ctx;
11311      this.groupLevel--;
11312      this.ctx = this.groupStack.pop();
11313      composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
11314      this.ctx.restore();
11315      this.ctx.save();
11316      copyCtxState(groupCtx, this.ctx);
11317      this.current.resumeSMaskCtx = groupCtx;
11318      var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
11319      this.ctx.transform.apply(this.ctx, deltaTransform);
11320      groupCtx.save();
11321      groupCtx.setTransform(1, 0, 0, 1, 0, 0);
11322      groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
11323      groupCtx.restore();
11324    },
11325    resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {
11326      var groupCtx = this.current.resumeSMaskCtx;
11327      var currentCtx = this.ctx;
11328      this.ctx = groupCtx;
11329      this.groupStack.push(currentCtx);
11330      this.groupLevel++;
11331    },
11332    endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
11333      var groupCtx = this.ctx;
11334      this.groupLevel--;
11335      this.ctx = this.groupStack.pop();
11336      composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
11337      this.ctx.restore();
11338      copyCtxState(groupCtx, this.ctx);
11339      var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
11340      this.ctx.transform.apply(this.ctx, deltaTransform);
11341    },
11342    save: function CanvasGraphics_save() {
11343      this.ctx.save();
11344      var old = this.current;
11345      this.stateStack.push(old);
11346      this.current = old.clone();
11347      this.current.resumeSMaskCtx = null;
11348    },
11349    restore: function CanvasGraphics_restore() {
11350      if (this.current.resumeSMaskCtx) {
11351        this.resumeSMaskGroup();
11352      }
11353      if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {
11354        this.endSMaskGroup();
11355      }
11356      if (this.stateStack.length !== 0) {
11357        this.current = this.stateStack.pop();
11358        this.ctx.restore();
11359        this.pendingClip = null;
11360        this._cachedGetSinglePixelWidth = null;
11361      }
11362    },
11363    transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
11364      this.ctx.transform(a, b, c, d, e, f);
11365      this._cachedGetSinglePixelWidth = null;
11366    },
11367    constructPath: function CanvasGraphics_constructPath(ops, args) {
11368      var ctx = this.ctx;
11369      var current = this.current;
11370      var x = current.x,
11371          y = current.y;
11372      for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {
11373        switch (ops[i] | 0) {
11374          case _util.OPS.rectangle:
11375            x = args[j++];
11376            y = args[j++];
11377            var width = args[j++];
11378            var height = args[j++];
11379            if (width === 0) {
11380              width = this.getSinglePixelWidth();
11381            }
11382            if (height === 0) {
11383              height = this.getSinglePixelWidth();
11384            }
11385            var xw = x + width;
11386            var yh = y + height;
11387            this.ctx.moveTo(x, y);
11388            this.ctx.lineTo(xw, y);
11389            this.ctx.lineTo(xw, yh);
11390            this.ctx.lineTo(x, yh);
11391            this.ctx.lineTo(x, y);
11392            this.ctx.closePath();
11393            break;
11394          case _util.OPS.moveTo:
11395            x = args[j++];
11396            y = args[j++];
11397            ctx.moveTo(x, y);
11398            break;
11399          case _util.OPS.lineTo:
11400            x = args[j++];
11401            y = args[j++];
11402            ctx.lineTo(x, y);
11403            break;
11404          case _util.OPS.curveTo:
11405            x = args[j + 4];
11406            y = args[j + 5];
11407            ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
11408            j += 6;
11409            break;
11410          case _util.OPS.curveTo2:
11411            ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
11412            x = args[j + 2];
11413            y = args[j + 3];
11414            j += 4;
11415            break;
11416          case _util.OPS.curveTo3:
11417            x = args[j + 2];
11418            y = args[j + 3];
11419            ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
11420            j += 4;
11421            break;
11422          case _util.OPS.closePath:
11423            ctx.closePath();
11424            break;
11425        }
11426      }
11427      current.setCurrentPoint(x, y);
11428    },
11429    closePath: function CanvasGraphics_closePath() {
11430      this.ctx.closePath();
11431    },
11432    stroke: function CanvasGraphics_stroke(consumePath) {
11433      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
11434      var ctx = this.ctx;
11435      var strokeColor = this.current.strokeColor;
11436      ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);
11437      ctx.globalAlpha = this.current.strokeAlpha;
11438      if (strokeColor && strokeColor.hasOwnProperty('type') && strokeColor.type === 'Pattern') {
11439        ctx.save();
11440        ctx.strokeStyle = strokeColor.getPattern(ctx, this);
11441        ctx.stroke();
11442        ctx.restore();
11443      } else {
11444        ctx.stroke();
11445      }
11446      if (consumePath) {
11447        this.consumePath();
11448      }
11449      ctx.globalAlpha = this.current.fillAlpha;
11450    },
11451    closeStroke: function CanvasGraphics_closeStroke() {
11452      this.closePath();
11453      this.stroke();
11454    },
11455    fill: function CanvasGraphics_fill(consumePath) {
11456      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
11457      var ctx = this.ctx;
11458      var fillColor = this.current.fillColor;
11459      var isPatternFill = this.current.patternFill;
11460      var needRestore = false;
11461      if (isPatternFill) {
11462        ctx.save();
11463        if (this.baseTransform) {
11464          ctx.setTransform.apply(ctx, this.baseTransform);
11465        }
11466        ctx.fillStyle = fillColor.getPattern(ctx, this);
11467        needRestore = true;
11468      }
11469      if (this.pendingEOFill) {
11470        ctx.fill('evenodd');
11471        this.pendingEOFill = false;
11472      } else {
11473        ctx.fill();
11474      }
11475      if (needRestore) {
11476        ctx.restore();
11477      }
11478      if (consumePath) {
11479        this.consumePath();
11480      }
11481    },
11482    eoFill: function CanvasGraphics_eoFill() {
11483      this.pendingEOFill = true;
11484      this.fill();
11485    },
11486    fillStroke: function CanvasGraphics_fillStroke() {
11487      this.fill(false);
11488      this.stroke(false);
11489      this.consumePath();
11490    },
11491    eoFillStroke: function CanvasGraphics_eoFillStroke() {
11492      this.pendingEOFill = true;
11493      this.fillStroke();
11494    },
11495    closeFillStroke: function CanvasGraphics_closeFillStroke() {
11496      this.closePath();
11497      this.fillStroke();
11498    },
11499    closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
11500      this.pendingEOFill = true;
11501      this.closePath();
11502      this.fillStroke();
11503    },
11504    endPath: function CanvasGraphics_endPath() {
11505      this.consumePath();
11506    },
11507    clip: function CanvasGraphics_clip() {
11508      this.pendingClip = NORMAL_CLIP;
11509    },
11510    eoClip: function CanvasGraphics_eoClip() {
11511      this.pendingClip = EO_CLIP;
11512    },
11513    beginText: function CanvasGraphics_beginText() {
11514      this.current.textMatrix = _util.IDENTITY_MATRIX;
11515      this.current.textMatrixScale = 1;
11516      this.current.x = this.current.lineX = 0;
11517      this.current.y = this.current.lineY = 0;
11518    },
11519    endText: function CanvasGraphics_endText() {
11520      var paths = this.pendingTextPaths;
11521      var ctx = this.ctx;
11522      if (paths === undefined) {
11523        ctx.beginPath();
11524        return;
11525      }
11526      ctx.save();
11527      ctx.beginPath();
11528      for (var i = 0; i < paths.length; i++) {
11529        var path = paths[i];
11530        ctx.setTransform.apply(ctx, path.transform);
11531        ctx.translate(path.x, path.y);
11532        path.addToPath(ctx, path.fontSize);
11533      }
11534      ctx.restore();
11535      ctx.clip();
11536      ctx.beginPath();
11537      delete this.pendingTextPaths;
11538    },
11539    setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {
11540      this.current.charSpacing = spacing;
11541    },
11542    setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {
11543      this.current.wordSpacing = spacing;
11544    },
11545    setHScale: function CanvasGraphics_setHScale(scale) {
11546      this.current.textHScale = scale / 100;
11547    },
11548    setLeading: function CanvasGraphics_setLeading(leading) {
11549      this.current.leading = -leading;
11550    },
11551    setFont: function CanvasGraphics_setFont(fontRefName, size) {
11552      var fontObj = this.commonObjs.get(fontRefName);
11553      var current = this.current;
11554      if (!fontObj) {
11555        throw new Error('Can\'t find font for ' + fontRefName);
11556      }
11557      current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
11558      if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
11559        (0, _util.warn)('Invalid font matrix for font ' + fontRefName);
11560      }
11561      if (size < 0) {
11562        size = -size;
11563        current.fontDirection = -1;
11564      } else {
11565        current.fontDirection = 1;
11566      }
11567      this.current.font = fontObj;
11568      this.current.fontSize = size;
11569      if (fontObj.isType3Font) {
11570        return;
11571      }
11572      var name = fontObj.loadedName || 'sans-serif';
11573      var bold = fontObj.black ? '900' : fontObj.bold ? 'bold' : 'normal';
11574      var italic = fontObj.italic ? 'italic' : 'normal';
11575      var typeface = '"' + name + '", ' + fontObj.fallbackName;
11576      var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;
11577      this.current.fontSizeScale = size / browserFontSize;
11578      var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;
11579      this.ctx.font = rule;
11580    },
11581    setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {
11582      this.current.textRenderingMode = mode;
11583    },
11584    setTextRise: function CanvasGraphics_setTextRise(rise) {
11585      this.current.textRise = rise;
11586    },
11587    moveText: function CanvasGraphics_moveText(x, y) {
11588      this.current.x = this.current.lineX += x;
11589      this.current.y = this.current.lineY += y;
11590    },
11591    setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {
11592      this.setLeading(-y);
11593      this.moveText(x, y);
11594    },
11595    setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {
11596      this.current.textMatrix = [a, b, c, d, e, f];
11597      this.current.textMatrixScale = Math.sqrt(a * a + b * b);
11598      this.current.x = this.current.lineX = 0;
11599      this.current.y = this.current.lineY = 0;
11600    },
11601    nextLine: function CanvasGraphics_nextLine() {
11602      this.moveText(0, this.current.leading);
11603    },
11604    paintChar: function paintChar(character, x, y, patternTransform) {
11605      var ctx = this.ctx;
11606      var current = this.current;
11607      var font = current.font;
11608      var textRenderingMode = current.textRenderingMode;
11609      var fontSize = current.fontSize / current.fontSizeScale;
11610      var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
11611      var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
11612      var patternFill = current.patternFill && font.data;
11613      var addToPath;
11614      if (font.disableFontFace || isAddToPathSet || patternFill) {
11615        addToPath = font.getPathGenerator(this.commonObjs, character);
11616      }
11617      if (font.disableFontFace || patternFill) {
11618        ctx.save();
11619        ctx.translate(x, y);
11620        ctx.beginPath();
11621        addToPath(ctx, fontSize);
11622        if (patternTransform) {
11623          ctx.setTransform.apply(ctx, patternTransform);
11624        }
11625        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
11626          ctx.fill();
11627        }
11628        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
11629          ctx.stroke();
11630        }
11631        ctx.restore();
11632      } else {
11633        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
11634          ctx.fillText(character, x, y);
11635        }
11636        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
11637          ctx.strokeText(character, x, y);
11638        }
11639      }
11640      if (isAddToPathSet) {
11641        var paths = this.pendingTextPaths || (this.pendingTextPaths = []);
11642        paths.push({
11643          transform: ctx.mozCurrentTransform,
11644          x: x,
11645          y: y,
11646          fontSize: fontSize,
11647          addToPath: addToPath
11648        });
11649      }
11650    },
11651
11652    get isFontSubpixelAAEnabled() {
11653      var ctx = this.canvasFactory.create(10, 10).context;
11654      ctx.scale(1.5, 1);
11655      ctx.fillText('I', 0, 10);
11656      var data = ctx.getImageData(0, 0, 10, 10).data;
11657      var enabled = false;
11658      for (var i = 3; i < data.length; i += 4) {
11659        if (data[i] > 0 && data[i] < 255) {
11660          enabled = true;
11661          break;
11662        }
11663      }
11664      return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled);
11665    },
11666    showText: function CanvasGraphics_showText(glyphs) {
11667      var current = this.current;
11668      var font = current.font;
11669      if (font.isType3Font) {
11670        return this.showType3Text(glyphs);
11671      }
11672      var fontSize = current.fontSize;
11673      if (fontSize === 0) {
11674        return;
11675      }
11676      var ctx = this.ctx;
11677      var fontSizeScale = current.fontSizeScale;
11678      var charSpacing = current.charSpacing;
11679      var wordSpacing = current.wordSpacing;
11680      var fontDirection = current.fontDirection;
11681      var textHScale = current.textHScale * fontDirection;
11682      var glyphsLength = glyphs.length;
11683      var vertical = font.vertical;
11684      var spacingDir = vertical ? 1 : -1;
11685      var defaultVMetrics = font.defaultVMetrics;
11686      var widthAdvanceScale = fontSize * current.fontMatrix[0];
11687      var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;
11688      ctx.save();
11689      var patternTransform = void 0;
11690      if (current.patternFill) {
11691        ctx.save();
11692        var pattern = current.fillColor.getPattern(ctx, this);
11693        patternTransform = ctx.mozCurrentTransform;
11694        ctx.restore();
11695        ctx.fillStyle = pattern;
11696      }
11697      ctx.transform.apply(ctx, current.textMatrix);
11698      ctx.translate(current.x, current.y + current.textRise);
11699      if (fontDirection > 0) {
11700        ctx.scale(textHScale, -1);
11701      } else {
11702        ctx.scale(textHScale, 1);
11703      }
11704      var lineWidth = current.lineWidth;
11705      var scale = current.textMatrixScale;
11706      if (scale === 0 || lineWidth === 0) {
11707        var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
11708        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
11709          this._cachedGetSinglePixelWidth = null;
11710          lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;
11711        }
11712      } else {
11713        lineWidth /= scale;
11714      }
11715      if (fontSizeScale !== 1.0) {
11716        ctx.scale(fontSizeScale, fontSizeScale);
11717        lineWidth /= fontSizeScale;
11718      }
11719      ctx.lineWidth = lineWidth;
11720      var x = 0,
11721          i;
11722      for (i = 0; i < glyphsLength; ++i) {
11723        var glyph = glyphs[i];
11724        if ((0, _util.isNum)(glyph)) {
11725          x += spacingDir * glyph * fontSize / 1000;
11726          continue;
11727        }
11728        var restoreNeeded = false;
11729        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
11730        var character = glyph.fontChar;
11731        var accent = glyph.accent;
11732        var scaledX, scaledY, scaledAccentX, scaledAccentY;
11733        var width = glyph.width;
11734        if (vertical) {
11735          var vmetric, vx, vy;
11736          vmetric = glyph.vmetric || defaultVMetrics;
11737          vx = glyph.vmetric ? vmetric[1] : width * 0.5;
11738          vx = -vx * widthAdvanceScale;
11739          vy = vmetric[2] * widthAdvanceScale;
11740          width = vmetric ? -vmetric[0] : width;
11741          scaledX = vx / fontSizeScale;
11742          scaledY = (x + vy) / fontSizeScale;
11743        } else {
11744          scaledX = x / fontSizeScale;
11745          scaledY = 0;
11746        }
11747        if (font.remeasure && width > 0) {
11748          var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
11749          if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
11750            var characterScaleX = width / measuredWidth;
11751            restoreNeeded = true;
11752            ctx.save();
11753            ctx.scale(characterScaleX, 1);
11754            scaledX /= characterScaleX;
11755          } else if (width !== measuredWidth) {
11756            scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
11757          }
11758        }
11759        if (glyph.isInFont || font.missingFile) {
11760          if (simpleFillText && !accent) {
11761            ctx.fillText(character, scaledX, scaledY);
11762          } else {
11763            this.paintChar(character, scaledX, scaledY, patternTransform);
11764            if (accent) {
11765              scaledAccentX = scaledX + accent.offset.x / fontSizeScale;
11766              scaledAccentY = scaledY - accent.offset.y / fontSizeScale;
11767              this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);
11768            }
11769          }
11770        }
11771        var charWidth = width * widthAdvanceScale + spacing * fontDirection;
11772        x += charWidth;
11773        if (restoreNeeded) {
11774          ctx.restore();
11775        }
11776      }
11777      if (vertical) {
11778        current.y -= x * textHScale;
11779      } else {
11780        current.x += x * textHScale;
11781      }
11782      ctx.restore();
11783    },
11784    showType3Text: function CanvasGraphics_showType3Text(glyphs) {
11785      var ctx = this.ctx;
11786      var current = this.current;
11787      var font = current.font;
11788      var fontSize = current.fontSize;
11789      var fontDirection = current.fontDirection;
11790      var spacingDir = font.vertical ? 1 : -1;
11791      var charSpacing = current.charSpacing;
11792      var wordSpacing = current.wordSpacing;
11793      var textHScale = current.textHScale * fontDirection;
11794      var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
11795      var glyphsLength = glyphs.length;
11796      var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
11797      var i, glyph, width, spacingLength;
11798      if (isTextInvisible || fontSize === 0) {
11799        return;
11800      }
11801      this._cachedGetSinglePixelWidth = null;
11802      ctx.save();
11803      ctx.transform.apply(ctx, current.textMatrix);
11804      ctx.translate(current.x, current.y);
11805      ctx.scale(textHScale, fontDirection);
11806      for (i = 0; i < glyphsLength; ++i) {
11807        glyph = glyphs[i];
11808        if ((0, _util.isNum)(glyph)) {
11809          spacingLength = spacingDir * glyph * fontSize / 1000;
11810          this.ctx.translate(spacingLength, 0);
11811          current.x += spacingLength * textHScale;
11812          continue;
11813        }
11814        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
11815        var operatorList = font.charProcOperatorList[glyph.operatorListId];
11816        if (!operatorList) {
11817          (0, _util.warn)('Type3 character "' + glyph.operatorListId + '" is not available.');
11818          continue;
11819        }
11820        this.processingType3 = glyph;
11821        this.save();
11822        ctx.scale(fontSize, fontSize);
11823        ctx.transform.apply(ctx, fontMatrix);
11824        this.executeOperatorList(operatorList);
11825        this.restore();
11826        var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
11827        width = transformed[0] * fontSize + spacing;
11828        ctx.translate(width, 0);
11829        current.x += width * textHScale;
11830      }
11831      ctx.restore();
11832      this.processingType3 = null;
11833    },
11834    setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {},
11835    setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
11836      this.ctx.rect(llx, lly, urx - llx, ury - lly);
11837      this.clip();
11838      this.endPath();
11839    },
11840    getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {
11841      var _this = this;
11842
11843      var pattern;
11844      if (IR[0] === 'TilingPattern') {
11845        var color = IR[1];
11846        var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
11847        var canvasGraphicsFactory = {
11848          createCanvasGraphics: function createCanvasGraphics(ctx) {
11849            return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory, _this.webGLContext);
11850          }
11851        };
11852        pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);
11853      } else {
11854        pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR);
11855      }
11856      return pattern;
11857    },
11858    setStrokeColorN: function CanvasGraphics_setStrokeColorN() {
11859      this.current.strokeColor = this.getColorN_Pattern(arguments);
11860    },
11861    setFillColorN: function CanvasGraphics_setFillColorN() {
11862      this.current.fillColor = this.getColorN_Pattern(arguments);
11863      this.current.patternFill = true;
11864    },
11865    setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
11866      var color = _util.Util.makeCssRgb(r, g, b);
11867      this.ctx.strokeStyle = color;
11868      this.current.strokeColor = color;
11869    },
11870    setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
11871      var color = _util.Util.makeCssRgb(r, g, b);
11872      this.ctx.fillStyle = color;
11873      this.current.fillColor = color;
11874      this.current.patternFill = false;
11875    },
11876    shadingFill: function CanvasGraphics_shadingFill(patternIR) {
11877      var ctx = this.ctx;
11878      this.save();
11879      var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);
11880      ctx.fillStyle = pattern.getPattern(ctx, this, true);
11881      var inv = ctx.mozCurrentTransformInverse;
11882      if (inv) {
11883        var canvas = ctx.canvas;
11884        var width = canvas.width;
11885        var height = canvas.height;
11886        var bl = _util.Util.applyTransform([0, 0], inv);
11887        var br = _util.Util.applyTransform([0, height], inv);
11888        var ul = _util.Util.applyTransform([width, 0], inv);
11889        var ur = _util.Util.applyTransform([width, height], inv);
11890        var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
11891        var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
11892        var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
11893        var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
11894        this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
11895      } else {
11896        this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
11897      }
11898      this.restore();
11899    },
11900    beginInlineImage: function CanvasGraphics_beginInlineImage() {
11901      (0, _util.unreachable)('Should not call beginInlineImage');
11902    },
11903    beginImageData: function CanvasGraphics_beginImageData() {
11904      (0, _util.unreachable)('Should not call beginImageData');
11905    },
11906    paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) {
11907      this.save();
11908      this.baseTransformStack.push(this.baseTransform);
11909      if (Array.isArray(matrix) && matrix.length === 6) {
11910        this.transform.apply(this, matrix);
11911      }
11912      this.baseTransform = this.ctx.mozCurrentTransform;
11913      if (Array.isArray(bbox) && bbox.length === 4) {
11914        var width = bbox[2] - bbox[0];
11915        var height = bbox[3] - bbox[1];
11916        this.ctx.rect(bbox[0], bbox[1], width, height);
11917        this.clip();
11918        this.endPath();
11919      }
11920    },
11921    paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
11922      this.restore();
11923      this.baseTransform = this.baseTransformStack.pop();
11924    },
11925    beginGroup: function CanvasGraphics_beginGroup(group) {
11926      this.save();
11927      var currentCtx = this.ctx;
11928      if (!group.isolated) {
11929        (0, _util.info)('TODO: Support non-isolated groups.');
11930      }
11931      if (group.knockout) {
11932        (0, _util.warn)('Knockout groups not supported.');
11933      }
11934      var currentTransform = currentCtx.mozCurrentTransform;
11935      if (group.matrix) {
11936        currentCtx.transform.apply(currentCtx, group.matrix);
11937      }
11938      if (!group.bbox) {
11939        throw new Error('Bounding box is required.');
11940      }
11941      var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
11942      var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
11943      bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
11944      var offsetX = Math.floor(bounds[0]);
11945      var offsetY = Math.floor(bounds[1]);
11946      var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
11947      var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
11948      var scaleX = 1,
11949          scaleY = 1;
11950      if (drawnWidth > MAX_GROUP_SIZE) {
11951        scaleX = drawnWidth / MAX_GROUP_SIZE;
11952        drawnWidth = MAX_GROUP_SIZE;
11953      }
11954      if (drawnHeight > MAX_GROUP_SIZE) {
11955        scaleY = drawnHeight / MAX_GROUP_SIZE;
11956        drawnHeight = MAX_GROUP_SIZE;
11957      }
11958      var cacheId = 'groupAt' + this.groupLevel;
11959      if (group.smask) {
11960        cacheId += '_smask_' + this.smaskCounter++ % 2;
11961      }
11962      var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
11963      var groupCtx = scratchCanvas.context;
11964      groupCtx.scale(1 / scaleX, 1 / scaleY);
11965      groupCtx.translate(-offsetX, -offsetY);
11966      groupCtx.transform.apply(groupCtx, currentTransform);
11967      if (group.smask) {
11968        this.smaskStack.push({
11969          canvas: scratchCanvas.canvas,
11970          context: groupCtx,
11971          offsetX: offsetX,
11972          offsetY: offsetY,
11973          scaleX: scaleX,
11974          scaleY: scaleY,
11975          subtype: group.smask.subtype,
11976          backdrop: group.smask.backdrop,
11977          transferMap: group.smask.transferMap || null,
11978          startTransformInverse: null
11979        });
11980      } else {
11981        currentCtx.setTransform(1, 0, 0, 1, 0, 0);
11982        currentCtx.translate(offsetX, offsetY);
11983        currentCtx.scale(scaleX, scaleY);
11984      }
11985      copyCtxState(currentCtx, groupCtx);
11986      this.ctx = groupCtx;
11987      this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]);
11988      this.groupStack.push(currentCtx);
11989      this.groupLevel++;
11990      this.current.activeSMask = null;
11991    },
11992    endGroup: function CanvasGraphics_endGroup(group) {
11993      this.groupLevel--;
11994      var groupCtx = this.ctx;
11995      this.ctx = this.groupStack.pop();
11996      if (this.ctx.imageSmoothingEnabled !== undefined) {
11997        this.ctx.imageSmoothingEnabled = false;
11998      } else {
11999        this.ctx.mozImageSmoothingEnabled = false;
12000      }
12001      if (group.smask) {
12002        this.tempSMask = this.smaskStack.pop();
12003      } else {
12004        this.ctx.drawImage(groupCtx.canvas, 0, 0);
12005      }
12006      this.restore();
12007    },
12008    beginAnnotations: function CanvasGraphics_beginAnnotations() {
12009      this.save();
12010      if (this.baseTransform) {
12011        this.ctx.setTransform.apply(this.ctx, this.baseTransform);
12012      }
12013    },
12014    endAnnotations: function CanvasGraphics_endAnnotations() {
12015      this.restore();
12016    },
12017    beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) {
12018      this.save();
12019      resetCtxToDefault(this.ctx);
12020      this.current = new CanvasExtraState();
12021      if (Array.isArray(rect) && rect.length === 4) {
12022        var width = rect[2] - rect[0];
12023        var height = rect[3] - rect[1];
12024        this.ctx.rect(rect[0], rect[1], width, height);
12025        this.clip();
12026        this.endPath();
12027      }
12028      this.transform.apply(this, transform);
12029      this.transform.apply(this, matrix);
12030    },
12031    endAnnotation: function CanvasGraphics_endAnnotation() {
vendor: 6,303 bytes, lines 12032-12191
12032      this.restore();
12033    },
12034    paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {
12035      var domImage = this.objs.get(objId);
12036      if (!domImage) {
12037        (0, _util.warn)('Dependent image isn\'t ready yet');
12038        return;
12039      }
12040      this.save();
12041      var ctx = this.ctx;
12042      ctx.scale(1 / w, -1 / h);
12043      ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, 0, -h, w, h);
12044      if (this.imageLayer) {
12045        var currentTransform = ctx.mozCurrentTransformInverse;
12046        var position = this.getCanvasPosition(0, 0);
12047        this.imageLayer.appendImage({
12048          objId: objId,
12049          left: position[0],
12050          top: position[1],
12051          width: w / currentTransform[0],
12052          height: h / currentTransform[3]
12053        });
12054      }
12055      this.restore();
12056    },
12057    paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {
12058      var ctx = this.ctx;
12059      var width = img.width,
12060          height = img.height;
12061      var fillColor = this.current.fillColor;
12062      var isPatternFill = this.current.patternFill;
12063      var glyph = this.processingType3;
12064      if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
12065        if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
12066          glyph.compiled = compileType3Glyph({
12067            data: img.data,
12068            width: width,
12069            height: height
12070          });
12071        } else {
12072          glyph.compiled = null;
12073        }
12074      }
12075      if (glyph && glyph.compiled) {
12076        glyph.compiled(ctx);
12077        return;
12078      }
12079      var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
12080      var maskCtx = maskCanvas.context;
12081      maskCtx.save();
12082      putBinaryImageMask(maskCtx, img);
12083      maskCtx.globalCompositeOperation = 'source-in';
12084      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
12085      maskCtx.fillRect(0, 0, width, height);
12086      maskCtx.restore();
12087      this.paintInlineImageXObject(maskCanvas.canvas);
12088    },
12089    paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) {
12090      var width = imgData.width;
12091      var height = imgData.height;
12092      var fillColor = this.current.fillColor;
12093      var isPatternFill = this.current.patternFill;
12094      var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
12095      var maskCtx = maskCanvas.context;
12096      maskCtx.save();
12097      putBinaryImageMask(maskCtx, imgData);
12098      maskCtx.globalCompositeOperation = 'source-in';
12099      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
12100      maskCtx.fillRect(0, 0, width, height);
12101      maskCtx.restore();
12102      var ctx = this.ctx;
12103      for (var i = 0, ii = positions.length; i < ii; i += 2) {
12104        ctx.save();
12105        ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);
12106        ctx.scale(1, -1);
12107        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
12108        ctx.restore();
12109      }
12110    },
12111    paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) {
12112      var ctx = this.ctx;
12113      var fillColor = this.current.fillColor;
12114      var isPatternFill = this.current.patternFill;
12115      for (var i = 0, ii = images.length; i < ii; i++) {
12116        var image = images[i];
12117        var width = image.width,
12118            height = image.height;
12119        var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
12120        var maskCtx = maskCanvas.context;
12121        maskCtx.save();
12122        putBinaryImageMask(maskCtx, image);
12123        maskCtx.globalCompositeOperation = 'source-in';
12124        maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
12125        maskCtx.fillRect(0, 0, width, height);
12126        maskCtx.restore();
12127        ctx.save();
12128        ctx.transform.apply(ctx, image.transform);
12129        ctx.scale(1, -1);
12130        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
12131        ctx.restore();
12132      }
12133    },
12134    paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {
12135      var imgData = this.objs.get(objId);
12136      if (!imgData) {
12137        (0, _util.warn)('Dependent image isn\'t ready yet');
12138        return;
12139      }
12140      this.paintInlineImageXObject(imgData);
12141    },
12142    paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {
12143      var imgData = this.objs.get(objId);
12144      if (!imgData) {
12145        (0, _util.warn)('Dependent image isn\'t ready yet');
12146        return;
12147      }
12148      var width = imgData.width;
12149      var height = imgData.height;
12150      var map = [];
12151      for (var i = 0, ii = positions.length; i < ii; i += 2) {
12152        map.push({
12153          transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
12154          x: 0,
12155          y: 0,
12156          w: width,
12157          h: height
12158        });
12159      }
12160      this.paintInlineImageXObjectGroup(imgData, map);
12161    },
12162    paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) {
12163      var width = imgData.width;
12164      var height = imgData.height;
12165      var ctx = this.ctx;
12166      this.save();
12167      ctx.scale(1 / width, -1 / height);
12168      var currentTransform = ctx.mozCurrentTransformInverse;
12169      var a = currentTransform[0],
12170          b = currentTransform[1];
12171      var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
12172      var c = currentTransform[2],
12173          d = currentTransform[3];
12174      var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
12175      var imgToPaint, tmpCanvas;
12176      if (typeof HTMLElement === 'function' && imgData instanceof HTMLElement || !imgData.data) {
12177        imgToPaint = imgData;
12178      } else {
12179        tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', width, height);
12180        var tmpCtx = tmpCanvas.context;
12181        putBinaryImageData(tmpCtx, imgData);
12182        imgToPaint = tmpCanvas.canvas;
12183      }
12184      var paintWidth = width,
12185          paintHeight = height;
12186      var tmpCanvasId = 'prescale1';
12187      while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
12188        var newWidth = paintWidth,
12189            newHeight = paintHeight;
12190        if (widthScale > 2 && paintWidth > 1) {
12191          newWidth = Math.ceil(paintWidth / 2);
12192          widthScale /= paintWidth / newWidth;
12193        }
12194        if (heightScale > 2 && paintHeight > 1) {
12195          newHeight = Math.ceil(paintHeight / 2);
12196          heightScale /= paintHeight / newHeight;
12197        }
12198        tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
12199        tmpCtx = tmpCanvas.context;
12200        tmpCtx.clearRect(0, 0, newWidth, newHeight);
12201        tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
12202        imgToPaint = tmpCanvas.canvas;
12203        paintWidth = newWidth;
12204        paintHeight = newHeight;
12205        tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';
12206      }
12207      ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);
12208      if (this.imageLayer) {
12209        var position = this.getCanvasPosition(0, -height);
12210        this.imageLayer.appendImage({
12211          imgData: imgData,
12212          left: position[0],
12213          top: position[1],
12214          width: width / currentTransform[0],
12215          height: height / currentTransform[3]
12216        });
12217      }
12218      this.restore();
12219    },
12220    paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {
12221      var ctx = this.ctx;
12222      var w = imgData.width;
12223      var h = imgData.height;
12224      var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);
12225      var tmpCtx = tmpCanvas.context;
12226      putBinaryImageData(tmpCtx, imgData);
12227      for (var i = 0, ii = map.length; i < ii; i++) {
12228        var entry = map[i];
12229        ctx.save();
12230        ctx.transform.apply(ctx, entry.transform);
12231        ctx.scale(1, -1);
12232        ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
12233        if (this.imageLayer) {
12234          var position = this.getCanvasPosition(entry.x, entry.y);
12235          this.imageLayer.appendImage({
12236            imgData: imgData,
12237            left: position[0],
12238            top: position[1],
12239            width: w,
12240            height: h
12241          });
12242        }
12243        ctx.restore();
12244      }
12245    },
12246    paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {
12247      this.ctx.fillRect(0, 0, 1, 1);
12248    },
12249    paintXObject: function CanvasGraphics_paintXObject() {
12250      (0, _util.warn)('Unsupported \'paintXObject\' command.');
12251    },
12252    markPoint: function CanvasGraphics_markPoint(tag) {},
12253    markPointProps: function CanvasGraphics_markPointProps(tag, properties) {},
12254    beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {},
12255    beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {},
12256    endMarkedContent: function CanvasGraphics_endMarkedContent() {},
12257    beginCompat: function CanvasGraphics_beginCompat() {},
12258    endCompat: function CanvasGraphics_endCompat() {},
12259    consumePath: function CanvasGraphics_consumePath() {
12260      var ctx = this.ctx;
12261      if (this.pendingClip) {
12262        if (this.pendingClip === EO_CLIP) {
12263          ctx.clip('evenodd');
12264        } else {
12265          ctx.clip();
12266        }
12267        this.pendingClip = null;
12268      }
12269      ctx.beginPath();
12270    },
12271    getSinglePixelWidth: function getSinglePixelWidth(scale) {
12272      if (this._cachedGetSinglePixelWidth === null) {
12273        var inverse = this.ctx.mozCurrentTransformInverse;
12274        this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3]));
12275      }
12276      return this._cachedGetSinglePixelWidth;
12277    },
12278
12279    getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {
12280      var transform = this.ctx.mozCurrentTransform;
12281      return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];
12282    }
12283  };
12284  for (var op in _util.OPS) {
12285    CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
12286  }
12287  return CanvasGraphics;
12288}();
12289exports.CanvasGraphics = CanvasGraphics;
12290
12291/***/ }),
12292/* 134 */
12293/***/ (function(module, exports, __w_pdfjs_require__) {
12294
12295"use strict";
12296
12297
12298Object.defineProperty(exports, "__esModule", {
12299  value: true
12300});
12301exports.TilingPattern = exports.getShadingPatternFromIR = undefined;
12302
12303var _util = __w_pdfjs_require__(1);
12304
12305var ShadingIRs = {};
12306ShadingIRs.RadialAxial = {
12307  fromIR: function RadialAxial_fromIR(raw) {
12308    var type = raw[1];
12309    var colorStops = raw[2];
12310    var p0 = raw[3];
12311    var p1 = raw[4];
12312    var r0 = raw[5];
12313    var r1 = raw[6];
12314    return {
12315      type: 'Pattern',
12316      getPattern: function RadialAxial_getPattern(ctx) {
12317        var grad;
12318        if (type === 'axial') {
12319          grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
12320        } else if (type === 'radial') {
12321          grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
12322        }
12323        for (var i = 0, ii = colorStops.length; i < ii; ++i) {
12324          var c = colorStops[i];
vendor: 4,110 bytes, lines 12325-12450
12325          grad.addColorStop(c[0], c[1]);
12326        }
12327        return grad;
12328      }
12329    };
12330  }
12331};
12332var createMeshCanvas = function createMeshCanvasClosure() {
12333  function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
12334    var coords = context.coords,
12335        colors = context.colors;
12336    var bytes = data.data,
12337        rowSize = data.width * 4;
12338    var tmp;
12339    if (coords[p1 + 1] > coords[p2 + 1]) {
12340      tmp = p1;
12341      p1 = p2;
12342      p2 = tmp;
12343      tmp = c1;
12344      c1 = c2;
12345      c2 = tmp;
12346    }
12347    if (coords[p2 + 1] > coords[p3 + 1]) {
12348      tmp = p2;
12349      p2 = p3;
12350      p3 = tmp;
12351      tmp = c2;
12352      c2 = c3;
12353      c3 = tmp;
12354    }
12355    if (coords[p1 + 1] > coords[p2 + 1]) {
12356      tmp = p1;
12357      p1 = p2;
12358      p2 = tmp;
12359      tmp = c1;
12360      c1 = c2;
12361      c2 = tmp;
12362    }
12363    var x1 = (coords[p1] + context.offsetX) * context.scaleX;
12364    var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
12365    var x2 = (coords[p2] + context.offsetX) * context.scaleX;
12366    var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
12367    var x3 = (coords[p3] + context.offsetX) * context.scaleX;
12368    var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
12369    if (y1 >= y3) {
12370      return;
12371    }
12372    var c1r = colors[c1],
12373        c1g = colors[c1 + 1],
12374        c1b = colors[c1 + 2];
12375    var c2r = colors[c2],
12376        c2g = colors[c2 + 1],
12377        c2b = colors[c2 + 2];
12378    var c3r = colors[c3],
12379        c3g = colors[c3 + 1],
12380        c3b = colors[c3 + 2];
12381    var minY = Math.round(y1),
12382        maxY = Math.round(y3);
12383    var xa, car, cag, cab;
12384    var xb, cbr, cbg, cbb;
12385    var k;
12386    for (var y = minY; y <= maxY; y++) {
12387      if (y < y2) {
12388        k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);
12389        xa = x1 - (x1 - x2) * k;
12390        car = c1r - (c1r - c2r) * k;
12391        cag = c1g - (c1g - c2g) * k;
12392        cab = c1b - (c1b - c2b) * k;
12393      } else {
12394        k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);
12395        xa = x2 - (x2 - x3) * k;
12396        car = c2r - (c2r - c3r) * k;
12397        cag = c2g - (c2g - c3g) * k;
12398        cab = c2b - (c2b - c3b) * k;
12399      }
12400      k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);
12401      xb = x1 - (x1 - x3) * k;
12402      cbr = c1r - (c1r - c3r) * k;
12403      cbg = c1g - (c1g - c3g) * k;
12404      cbb = c1b - (c1b - c3b) * k;
12405      var x1_ = Math.round(Math.min(xa, xb));
12406      var x2_ = Math.round(Math.max(xa, xb));
12407      var j = rowSize * y + x1_ * 4;
12408      for (var x = x1_; x <= x2_; x++) {
12409        k = (xa - x) / (xa - xb);
12410        k = k < 0 ? 0 : k > 1 ? 1 : k;
12411        bytes[j++] = car - (car - cbr) * k | 0;
12412        bytes[j++] = cag - (cag - cbg) * k | 0;
12413        bytes[j++] = cab - (cab - cbb) * k | 0;
12414        bytes[j++] = 255;
12415      }
12416    }
12417  }
12418  function drawFigure(data, figure, context) {
12419    var ps = figure.coords;
12420    var cs = figure.colors;
12421    var i, ii;
12422    switch (figure.type) {
12423      case 'lattice':
12424        var verticesPerRow = figure.verticesPerRow;
12425        var rows = Math.floor(ps.length / verticesPerRow) - 1;
12426        var cols = verticesPerRow - 1;
12427        for (i = 0; i < rows; i++) {
12428          var q = i * verticesPerRow;
12429          for (var j = 0; j < cols; j++, q++) {
12430            drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);
12431            drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
12432          }
12433        }
12434        break;
12435      case 'triangles':
12436        for (i = 0, ii = ps.length; i < ii; i += 3) {
12437          drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);
12438        }
12439        break;
12440      default:
12441        throw new Error('illegal figure');
12442    }
12443  }
12444  function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {
12445    var EXPECTED_SCALE = 1.1;
12446    var MAX_PATTERN_SIZE = 3000;
12447    var BORDER_SIZE = 2;
12448    var offsetX = Math.floor(bounds[0]);
12449    var offsetY = Math.floor(bounds[1]);
12450    var boundsWidth = Math.ceil(bounds[2]) - offsetX;
12451    var boundsHeight = Math.ceil(bounds[3]) - offsetY;
12452    var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
12453    var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
12454    var scaleX = boundsWidth / width;
12455    var scaleY = boundsHeight / height;
12456    var context = {
12457      coords: coords,
12458      colors: colors,
12459      offsetX: -offsetX,
12460      offsetY: -offsetY,
12461      scaleX: 1 / scaleX,
12462      scaleY: 1 / scaleY
12463    };
12464    var paddedWidth = width + BORDER_SIZE * 2;
12465    var paddedHeight = height + BORDER_SIZE * 2;
12466    var canvas, tmpCanvas, i, ii;
12467    if (webGLContext.isEnabled) {
12468      canvas = webGLContext.drawFigures({
12469        width: width,
12470        height: height,
12471        backgroundColor: backgroundColor,
12472        figures: figures,
12473        context: context
12474      });
12475      tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);
12476      tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);
12477      canvas = tmpCanvas.canvas;
12478    } else {
12479      tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);
12480      var tmpCtx = tmpCanvas.context;
12481      var data = tmpCtx.createImageData(width, height);
12482      if (backgroundColor) {
12483        var bytes = data.data;
12484        for (i = 0, ii = bytes.length; i < ii; i += 4) {
12485          bytes[i] = backgroundColor[0];
12486          bytes[i + 1] = backgroundColor[1];
12487          bytes[i + 2] = backgroundColor[2];
12488          bytes[i + 3] = 255;
12489        }
12490      }
12491      for (i = 0; i < figures.length; i++) {
12492        drawFigure(data, figures[i], context);
12493      }
12494      tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);
12495      canvas = tmpCanvas.canvas;
12496    }
12497    return {
12498      canvas: canvas,
12499      offsetX: offsetX - BORDER_SIZE * scaleX,
12500      offsetY: offsetY - BORDER_SIZE * scaleY,
12501      scaleX: scaleX,
12502      scaleY: scaleY
12503    };
12504  }
12505  return createMeshCanvas;
12506}();
12507ShadingIRs.Mesh = {
12508  fromIR: function Mesh_fromIR(raw) {
12509    var coords = raw[2];
12510    var colors = raw[3];
12511    var figures = raw[4];
12512    var bounds = raw[5];
12513    var matrix = raw[6];
12514    var background = raw[8];
12515    return {
12516      type: 'Pattern',
12517      getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {
12518        var scale;
12519        if (shadingFill) {
12520          scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
12521        } else {
12522          scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
12523          if (matrix) {
12524            var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);
12525            scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
12526          }
12527        }
12528        var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);
12529        if (!shadingFill) {
12530          ctx.setTransform.apply(ctx, owner.baseTransform);
12531          if (matrix) {
12532            ctx.transform.apply(ctx, matrix);
12533          }
12534        }
12535        ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
12536        ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);
12537        return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');
12538      }
12539    };
12540  }
12541};
12542ShadingIRs.Dummy = {
12543  fromIR: function Dummy_fromIR() {
12544    return {
12545      type: 'Pattern',
12546      getPattern: function Dummy_fromIR_getPattern() {
12547        return 'hotpink';
12548      }
12549    };
12550  }
12551};
12552function getShadingPatternFromIR(raw) {
12553  var shadingIR = ShadingIRs[raw[0]];
12554  if (!shadingIR) {
12555    throw new Error('Unknown IR type: ' + raw[0]);
12556  }
12557  return shadingIR.fromIR(raw);
12558}
12559var TilingPattern = function TilingPatternClosure() {
12560  var PaintType = {
12561    COLORED: 1,
12562    UNCOLORED: 2
12563  };
12564  var MAX_PATTERN_SIZE = 3000;
12565  function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
12566    this.operatorList = IR[2];
12567    this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
12568    this.bbox = IR[4];
12569    this.xstep = IR[5];
12570    this.ystep = IR[6];
12571    this.paintType = IR[7];
12572    this.tilingType = IR[8];
12573    this.color = color;
12574    this.canvasGraphicsFactory = canvasGraphicsFactory;
12575    this.baseTransform = baseTransform;
12576    this.type = 'Pattern';
12577    this.ctx = ctx;
12578  }
12579  TilingPattern.prototype = {
12580    createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {
12581      var operatorList = this.operatorList;
12582      var bbox = this.bbox;
12583      var xstep = this.xstep;
12584      var ystep = this.ystep;
12585      var paintType = this.paintType;
12586      var tilingType = this.tilingType;
12587      var color = this.color;
12588      var canvasGraphicsFactory = this.canvasGraphicsFactory;
12589      (0, _util.info)('TilingType: ' + tilingType);
12590      var x0 = bbox[0],
12591          y0 = bbox[1],
12592          x1 = bbox[2],
12593          y1 = bbox[3];
12594      var topLeft = [x0, y0];
12595      var botRight = [x0 + xstep, y0 + ystep];
12596      var width = botRight[0] - topLeft[0];
12597      var height = botRight[1] - topLeft[1];
12598      var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix
12598);
12599      var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
12600      var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
12601      width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), MAX_PATTERN_SIZE);
12602      height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), MAX_PATTERN_SIZE);
12603      var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', width, height, true);
12604      var tmpCtx = tmpCanvas.context;
12605      var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
12606      graphics.groupLevel = owner.groupLevel;
12607      this.setFillAndStrokeStyleToContext(graphics, paintType, color);
12608      this.setScale(width, height, xstep, ystep);
12609      this.transformToScale(graphics);
12610      var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];
12611      graphics.transform.apply(graphics, tmpTranslate);
12612      this.clipBbox(graphics, bbox, x0, y0, x1, y1);
12613      graphics.executeOperatorList(operatorList);
12614      return tmpCanvas.canvas;
12615    },
12616    setScale: function TilingPattern_setScale(width, height, xstep, ystep) {
12617      this.scale = [width / xstep, height / ystep];
12618    },
12619    transformToScale: function TilingPattern_transformToScale(graphics) {
12620      var scale = this.scale;
12621      var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];
12622      graphics.transform.apply(graphics, tmpScale);
12623    },
12624    scaleToContext: function TilingPattern_scaleToContext() {
12625      var scale = this.scale;
12626      this.ctx.scale(1 / scale[0], 1 / scale[1]);
12627    },
12628    clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {
12629      if (Array.isArray(bbox) && bbox.length === 4) {
12630        var bboxWidth = x1 - x0;
12631        var bboxHeight = y1 - y0;
12632        graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
12633        graphics.clip();
12634        graphics.endPath();
12635      }
12636    },
12637    setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {
12638      var context = graphics.ctx,
12639          current = graphics.current;
12640      switch (paintType) {
12641        case PaintType.COLORED:
12642          var ctx = this.ctx;
12643          context.fillStyle = ctx.fillStyle;
12644          context.strokeStyle = ctx.strokeStyle;
12645          current.fillColor = ctx.fillStyle;
12646          current.strokeColor = ctx.strokeStyle;
12647          break;
12648        case PaintType.UNCOLORED:
12649          var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);
12650          context.fillStyle = cssColor;
12651          context.strokeStyle = cssColor;
12652          current.fillColor = cssColor;
12653          current.strokeColor = cssColor;
12654          break;
12655        default:
12656          throw new _util.FormatError('Unsupported paint type: ' + paintType);
12657      }
12658    },
12659    getPattern: function TilingPattern_getPattern(ctx, owner) {
12660      var temporaryPatternCanvas = this.createPatternCanvas(owner);
12661      ctx = this.ctx;
12662      ctx.setTransform.apply(ctx, this.baseTransform);
12663      ctx.transform.apply(ctx, this.matrix);
12664      this.scaleToContext();
12665      return ctx.createPattern(temporaryPatternCanvas, 'repeat');
12666    }
12667  };
12668  return TilingPattern;
12669}();
12670exports.getShadingPatternFromIR = getShadingPatternFromIR;
12671exports.TilingPattern = TilingPattern;
12672
12673/***/ }),
12674/* 135 */
12675/***/ (function(module, exports, __w_pdfjs_require__) {
12676
12677"use strict";
12678
12679
12680Object.defineProperty(exports, "__esModule", {
12681  value: true
12682});
12683var GlobalWorkerOptions = Object.create(null);
12684GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;
12685GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? '' : GlobalWorkerOptions.workerSrc;
12686exports.GlobalWorkerOptions = GlobalWorkerOptions;
12687
12688/***/ }),
12689/* 136 */
12690/***/ (function(module, exports, __w_pdfjs_require__) {
12691
12692"use strict";
12693
12694
12695Object.defineProperty(exports, "__esModule", {
12696  value: true
12697});
12698exports.MessageHandler = undefined;
12699
12700var _regenerator = __w_pdfjs_require__(137);
12701
12702var _regenerator2 = _interopRequireDefault(_regenerator);
12703
12704var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
12705
12706var resolveCall = function () {
12707  var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(fn, args) {
12708    var thisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
12709    return _regenerator2.default.wrap(function _callee$(_context) {
12710      while (1) {
12711        switch (_context.prev = _context.next) {
12712          case 0:
12713            if (fn) {
12714              _context.next = 2;
12715              break;
12716            }
12717
12718            return _context.abrupt('return');
12719
12720          case 2:
12721            return _context.abrupt('return', fn.apply(thisArg, args));
12722
12723          case 3:
12724          case 'end':
12725            return _context.stop();
12726        }
12727      }
12728    }, _callee, this);
12729  }));
12730
12731  return function resolveCall(_x2, _x3) {
12732    return _ref.apply(this, arguments);
12733  };
12734}();
12735
12736var _util = __w_pdfjs_require__(1);
12737
12738function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12739
12740function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
12741
12742function wrapReason(reason) {
12743  if ((typeof reason === 'undefined' ? 'undefined' : _typeof(reason)) !== 'object') {
12744    return reason;
12745  }
12746  switch (reason.name) {
12747    case 'AbortException':
12748      return new _util.AbortException(reason.message);
12749    case 'MissingPDFException':
12750      return new _util.MissingPDFException(reason.message);
12751    case 'UnexpectedResponseException':
12752      return new _util.UnexpectedResponseException(reason.message, reason.status);
12753    default:
12754      return new _util.UnknownErrorException(reason.message, reason.details);
12755  }
12756}
12757function makeReasonSerializable(reason) {
12758  if (!(reason instanceof Error) || reason instanceof _util.AbortException || reason instanceof _util.MissingPDFException || reason instanceof _util.UnexpectedResponseException || reason instanceof _util.UnknownErrorException) {
12759    return reason;
12760  }
12761  return new _util.UnknownErrorException(reason.message, reason.toString());
12762}
12763function resolveOrReject(capability, success, reason) {
12764  if (success) {
12765    capability.resolve();
12766  } else {
12767    capability.reject(reason);
12768  }
12769}
12770function finalize(promise) {
12771  return Promise.resolve(promise).catch(function () {});
12772}
12773function MessageHandler(sourceName, targetName, comObj) {
12774  var _this = this;
12775
12776  this.sourceName = sourceName;
12777  this.targetName = targetName;
12778  this.comObj = comObj;
12779  this.callbackId = 1;
12780  this.streamId = 1;
12781  this.postMessageTransfers = true;
12782  this.streamSinks = Object.create(null);
12783  this.streamControllers = Object.create(null);
12784  var callbacksCapabilities = this.callbacksCapabilities = Object.create(null);
12785  var ah = this.actionHandler = Object.create(null);
12786  this._onComObjOnMessage = function (event) {
12787    var data = event.data;
12788    if (data.targetName !== _this.sourceName) {
12789      return;
12790    }
12791    if (data.stream) {
12792      _this._processStreamMessage(data);
12793    } else if (data.isReply) {
12794      var callbackId = data.callbackId;
12795      if (data.callbackId in callbacksCapabilities) {
12796        var callback = callbacksCapabilities[callbackId];
12797        delete callbacksCapabilities[callbackId];
12798        if ('error' in data) {
12799          callback.reject(wrapReason(data.error));
12800        } else {
12801          callback.resolve(data.data);
12802        }
12803      } else {
12804        throw new Error('Cannot resolve callback ' + callbackId);
12805      }
12806    } else if (data.action in ah) {
12807      var action = ah[data.action];
12808      if (data.callbackId) {
12809        var _sourceName = _this.sourceName;
12810        var _targetName = data.sourceName;
12811        Promise.resolve().then(function () {
12812          return action[0].call(action[1], data.data);
12813        }).then(function (result) {
12814          comObj.postMessage({
12815            sourceName: _sourceName,
12816            targetName: _targetName,
12817            isReply: true,
12818            callbackId: data.callbackId,
12819            data: result
12820          });
12821        }, function (reason) {
12822          comObj.postMessage({
12823            sourceName: _sourceName,
12824            targetName: _targetName,
12825            isReply: true,
12826            callbackId: data.callbackId,
12827            error: makeReasonSerializable(reason)
12828          });
12829        });
12830      } else if (data.streamId) {
12831        _this._createStreamSink(data);
12832      } else {
12833        action[0].call(action[1], data.data);
12834      }
12835    } else {
12836      throw new Error('Unknown action from worker: ' + data.action);
12837    }
12838  };
12839  comObj.addEventListener('message', this._onComObjOnMessage);
12840}
12841MessageHandler.prototype = {
12842  on: function on(actionName, handler, scope) {
12843    var ah = this.actionHandler;
12844    if (ah[actionName]) {
12845      throw new Error('There is already an actionName called "' + actionName + '"');
12846    }
12847    ah[actionName] = [handler, scope];
12848  },
12849  send: function send(actionName, data, transfers) {
12850    var message = {
12851      sourceName: this.sourceName,
12852      targetName: this.targetName,
12853      action: actionName,
12854      data: data
12855    };
12856    this.postMessage(message, transfers);
12857  },
12858  sendWithPromise: function sendWithPromise(actionName, data, transfers) {
12859    var callbackId = this.callbackId++;
12860    var message = {
12861      sourceName: this.sourceName,
12862      targetName: this.targetName,
12863      action: actionName,
12864      data: data,
12865      callbackId: callbackId
12866    };
12867    var capability = (0, _util.createPromiseCapability)();
12868    this.callbacksCapabilities[callbackId] = capability;
12869    try {
12870      this.postMessage(message, transfers);
12871    } catch (e) {
12872      capability.reject(e);
12873    }
12874    return capability.promise;
12875  },
12876  sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) {
12877    var _this2 = this;
12878
12879    var streamId = this.streamId++;
12880    var sourceName = this.sourceName;
12881    var targetName = this.targetName;
12882    return new _util.ReadableStream({
12883      start: function start(controller) {
12884        var startCapability = (0, _util.createPromiseCapability)();
12885        _this2.streamControllers[streamId] = {
12886          controller: controller,
12887          startCall: startCapability,
12888          isClosed: false
12889        };
12890        _this2.postMessage({
12891          sourceName: sourceName,
12892          targetName: targetName,
12893          action: actionName,
12894          streamId: streamId,
12895          data: data,
12896          desiredSize: controller.desiredSize
12897        });
12898        return startCapability.promise;
12899      },
12900      pull: function pull(controller) {
12901        var pullCapability = (0, _util.createPromiseCapability)();
12902        _this2.streamControllers[streamId].pullCall = pullCapability;
12903        _this2.postMessage({
12904          sourceName: sourceName,
12905          targetName: targetName,
12906          stream: 'pull',
12907          streamId: streamId,
12908          desiredSize: controller.desiredSize
12909        });
12910        return pullCapability.promise;
12911      },
12912      cancel: function cancel(reason) {
12913        var cancelCapability = (0, _util.createPromiseCapability)();
12914        _this2.streamControllers[streamId].cancelCall = cancelCapability;
12915        _this2.streamControllers[streamId].isClosed = true;
12916        _this2.postMessage({
12917          sourceName: sourceName,
12918          targetName: targetName,
12919          stream: 'cancel',
12920          reason: reason,
12921          streamId: streamId
12922        });
12923        return cancelCapability.promise;
12924      }
12925    }, queueingStrategy);
12926  },
12927  _createStreamSink: function _createStreamSink(data) {
12928    var _this3 = this;
12929
12930    var self = this;
12931    var action = this.actionHandler[data.action];
12932    var streamId = data.streamId;
12933    var desiredSize = data.desiredSize;
12934    var sourceName = this.sourceName;
12935    var targetName = data.sourceName;
12936    var capability = (0, _util.createPromiseCapability)();
12937    var sendStreamRequest = function sendStreamRequest(_ref2) {
12938      var stream = _ref2.stream,
12939          chunk = _ref2.chunk,
12940          transfers = _ref2.transfers,
12941          success = _ref2.success,
12942          reason = _ref2.reason;
12943
12944      _this3.postMessage({
12945        sourceName: sourceName,
12946        targetName: targetName,
12947        stream: stream,
12948        streamId: streamId,
12949        chunk: chunk,
12950        success: success,
12951        reason: reason
12952      }, transfers);
12953    };
12954    var streamSink = {
12955      enqueue: function enqueue(chunk) {
12956        var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
12957        var transfers = arguments[2];
12958
12959        if (this.isCancelled) {
12960          return;
12961        }
12962        var lastDesiredSize = this.desiredSize;
12963        this.desiredSize -= size;
12964        if (lastDesiredSize > 0 && this.desiredSize <= 0) {
12965          this.sinkCapability = (0, _util.createPromiseCapability)();
12966          this.ready = this.sinkCapability.promise;
12967        }
12968        sendStreamRequest({
12969          stream: 'enqueue',
12970          chunk: chunk,
12971          transfers: transfers
12972        });
12973      },
12974      close: function close() {
12975        if (this.isCancelled) {
12976          return;
12977        }
12978        this.isCancelled = true;
12979        sendStreamRequest({ stream: 'close' });
12980        delete self.streamSinks[streamId];
12981      },
12982      error: function error(reason) {
12983        if (this.isCancelled) {
12984          return;
12985        }
12986        this.isCancelled = true;
12987        sendStreamRequest({
12988          stream: 'error',
12989          reason: reason
12990        });
12991      },
12992
12993      sinkCapability: capability,
12994      onPull: null,
12995      onCancel: null,
12996      isCancelled: false,
12997      desiredSize: desiredSize,
12998      ready: null
12999    };
13000    streamSink.sinkCapability.resolve();
13001    streamSink.ready = streamSink.sinkCapability.promise;
13002    this.streamSinks[streamId] = streamSink;
13003    resolveCall(action[0], [data.data, streamSink], action[1]).then(function () {
13004      sendStreamRequest({
13005        stream: 'start_complete',
13006        success: true
13007      });
13008    }, function (reason) {
13009      sendStreamRequest({
13010        stream: 'start_complete',
13011        success: false,
13012        reason: reason
13013      });
13014    });
13015  },
13016  _processStreamMessage: function _processStreamMessage(data) {
13017    var _this4 = this;
13018
13019    var sourceName = this.sourceName;
13020    var targetName = data.sourceName;
13021    var streamId = data.streamId;
13022    var sendStreamResponse = function sendStreamResponse(_ref3) {
13023      var stream = _ref3.stream,
13024          success = _ref3.success,
13025          reason = _ref3.reason;
13026
13027      _this4.comObj.postMessage({
13028        sourceName: sourceName,
13029        targetName: targetName,
13030        stream: stream,
13031        success: success,
13032        streamId: streamId,
13033        reason: reason
13034      });
13035    };
13036    var deleteStreamController = function deleteStreamController() {
13037      Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) {
13038        return capability && finalize(capability.promise);
13039      })).then(function () {
13040        delete _this4.streamControllers[data.streamId];
13041      });
13042    };
13043    switch (data.stream) {
13044      case 'start_complete':
13045        resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason));
13046        break;
13047      case 'pull_complete':
13048        resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason));
13049        break;
13050      case 'pull':
13051        if (!this.streamSinks[data.streamId]) {
13052          sendStreamResponse({
13053            stream: 'pull_complete',
13054            success: true
13055          });
13056          break;
13057        }
13058        if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) {
13059          this.streamSinks[data.streamId].sinkCapability.resolve();
13060        }
13061        this.streamSinks[data.streamId].desiredSize = data.desiredSize;
13062        resolveCall(this.streamSinks[data.streamId].onPull).then(function () {
13063          sendStreamResponse({
13064            stream: 'pull_complete',
13065            success: true
13066          });
13067        }, function (reason) {
13068          sendStreamResponse({
13069            stream: 'pull_complete',
13070            success: false,
13071            reason: reason
13072          });
13073        });
13074        break;
13075      case 'enqueue':
13076        (0, _util.assert)(this.streamControllers[data.streamId], 'enqueue should have stream controller');
13077        if (!this.streamControllers[data.streamId].isClosed) {
13078          this.streamControllers[data.streamId].controller.enqueue(data.chunk);
13079        }
13080        break;
13081      case 'close':
13082        (0, _util.assert)(this.streamControllers[data.streamId], 'close should have stream controller');
13083        if (this.streamControllers[data.streamId].isClosed) {
13084          break;
13085        }
13086        this.streamControllers[data.streamId].isClosed = true;
13087        this.streamControllers[data.streamId].controller.close();
13088        deleteStreamController();
13089        break;
13090      case 'error':
13091        (0, _util.assert)(this.streamControllers[data.streamId], 'error should have stream controller');
13092        this.streamControllers[data.streamId].controller.error(wrapReason(data.reason));
13093        deleteStreamController();
13094        break;
13095      case 'cancel_complete':
13096        resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason));
13097        deleteStreamController();
13098        break;
13099      case 'cancel':
13100        if (!this.streamSinks[data.streamId]) {
13101          break;
13102        }
13103        resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () {
13104          sendStreamResponse({
13105            stream: 'cancel_complete',
13106            success: true
13107          });
13108        }, function (reason) {
13109          sendStreamResponse({
13110            stream: 'cancel_complete',
13111            success: false,
13112            reason: reason
13113          });
13114        });
13115        this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason));
13116        this.streamSinks[data.streamId].isCancelled = true;
13117        delete this.streamSinks[data.streamId];
13118        break;
13119      default:
13120        throw new Error('Unexpected stream case');
13121    }
13122  },
13123  postMessage: function postMessage(message, transfers) {
13124    if (transfers && this.postMessageTransfers) {
13125      this.comObj.postMessage(message, transfers);
13126    } else {
13127      this.comObj.postMessage(message);
13128    }
13129  },
13130  destroy: function destroy() {
13131    this.comObj.removeEventListener('message', this._onComObjOnMessage);
13132  }
13133};
13134exports.MessageHandler = MessageHandler;
13135
13136/***/ }),
13137/* 137 */
13138/***/ (function(module, exports, __w_pdfjs_require__) {
13139
13140"use strict";
13141
13142
13143module.exports = __w_pdfjs_require__(138);
13144
13145/***/ }),
13146/* 138 */
13147/***/ (function(module, exports, __w_pdfjs_require__) {
13148
13149"use strict";
13150
13151
13152var g = function () {
13153  return this;
13154}() || Function("return this")();
vendor: 9,980 bytes, lines 13155-13447
13155var hadRuntime = g.regeneratorRuntime && Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
13156var oldRuntime = hadRuntime && g.regeneratorRuntime;
13157g.regeneratorRuntime = undefined;
13158module.exports = __w_pdfjs_require__(139);
13159if (hadRuntime) {
13160  g.regeneratorRuntime = oldRuntime;
13161} else {
13162  try {
13163    delete g.regeneratorRuntime;
13164  } catch (e) {
13165    g.regeneratorRuntime = undefined;
13166  }
13167}
13168
13169/***/ }),
13170/* 139 */
13171/***/ (function(module, exports, __w_pdfjs_require__) {
13172
13173"use strict";
13174/* WEBPACK VAR INJECTION */(function(module) {
13175
13176var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
13177
13178!function (global) {
13179  "use strict";
13180
13181  var Op = Object.prototype;
13182  var hasOwn = Op.hasOwnProperty;
13183  var undefined;
13184  var $Symbol = typeof Symbol === "function" ? Symbol : {};
13185  var iteratorSymbol = $Symbol.iterator || "@@iterator";
13186  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
13187  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
13188  var inModule = ( false ? undefined : _typeof(module)) === "object";
13189  var runtime = global.regeneratorRuntime;
13190  if (runtime) {
13191    if (inModule) {
13192      module.exports = runtime;
13193    }
13194    return;
13195  }
13196  runtime = global.regeneratorRuntime = inModule ? module.exports : {};
13197  function wrap(innerFn, outerFn, self, tryLocsList) {
13198    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
13199    var generator = Object.create(protoGenerator.prototype);
13200    var context = new Context(tryLocsList || []);
13201    generator._invoke = makeInvokeMethod(innerFn, self, context);
13202    return generator;
13203  }
13204  runtime.wrap = wrap;
13205  function tryCatch(fn, obj, arg) {
13206    try {
13207      return {
13208        type: "normal",
13209        arg: fn.call(obj, arg)
13210      };
13211    } catch (err) {
13212      return {
13213        type: "throw",
13214        arg: err
13215      };
13216    }
13217  }
13218  var GenStateSuspendedStart = "suspendedStart";
13219  var GenStateSuspendedYield = "suspendedYield";
13220  var GenStateExecuting = "executing";
13221  var GenStateCompleted = "completed";
13222  var ContinueSentinel = {};
13223  function Generator() {}
13224  function GeneratorFunction() {}
13225  function GeneratorFunctionPrototype() {}
13226  var IteratorPrototype = {};
13227  IteratorPrototype[iteratorSymbol] = function () {
13228    return this;
13229  };
13230  var getProto = Object.getPrototypeOf;
13231  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
13232  if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
13233    IteratorPrototype = NativeIteratorPrototype;
13234  }
13235  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
13236  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
13237  GeneratorFunctionPrototype.constructor = GeneratorFunction;
13238  GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction";
13239  function defineIteratorMethods(prototype) {
13240    ["next", "throw", "return"].forEach(function (method) {
13241      prototype[method] = function (arg) {
13242        return this._invoke(method, arg);
13243      };
13244    });
13245  }
13246  runtime.isGeneratorFunction = function (genFun) {
13247    var ctor = typeof genFun === "function" && genFun.constructor;
13248    return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false;
13249  };
13250  runtime.mark = function (genFun) {
13251    if (Object.setPrototypeOf) {
13252      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
13253    } else {
13254      genFun.__proto__ = GeneratorFunctionPrototype;
13255      if (!(toStringTagSymbol in genFun)) {
13256        genFun[toStringTagSymbol] = "GeneratorFunction";
13257      }
13258    }
13259    genFun.prototype = Object.create(Gp);
13260    return genFun;
13261  };
13262  runtime.awrap = function (arg) {
13263    return { __await: arg };
13264  };
13265  function AsyncIterator(generator) {
13266    function invoke(method, arg, resolve, reject) {
13267      var record = tryCatch(generator[method], generator, arg);
13268      if (record.type === "throw") {
13269        reject(record.arg);
13270      } else {
13271        var result = record.arg;
13272        var value = result.value;
13273        if (value && (typeof value === "undefined" ? "undefined" : _typeof(value)) === "object" && hasOwn.call(value, "__await")) {
13274          return Promise.resolve(value.__await).then(function (value) {
13275            invoke("next", value, resolve, reject);
13276          }, function (err) {
13277            invoke("throw", err, resolve, reject);
13278          });
13279        }
13280        return Promise.resolve(value).then(function (unwrapped) {
13281          result.value = unwrapped;
13282          resolve(result);
13283        }, reject);
13284      }
13285    }
13286    var previousPromise;
13287    function enqueue(method, arg) {
13288      function callInvokeWithMethodAndArg() {
13289        return new Promise(function (resolve, reject) {
13290          invoke(method, arg, resolve, reject);
13291        });
13292      }
13293      return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
13294    }
13295    this._invoke = enqueue;
13296  }
13297  defineIteratorMethods(AsyncIterator.prototype);
13298  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
13299    return this;
13300  };
13301  runtime.AsyncIterator = AsyncIterator;
13302  runtime.async = function (innerFn, outerFn, self, tryLocsList) {
13303    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
13304    return runtime.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
13305      return result.done ? result.value : iter.next();
13306    });
13307  };
13308  function makeInvokeMethod(innerFn, self, context) {
13309    var state = GenStateSuspendedStart;
13310    return function invoke(method, arg) {
13311      if (state === GenStateExecuting) {
13312        throw new Error("Generator is already running");
13313      }
13314      if (state === GenStateCompleted) {
13315        if (method === "throw") {
13316          throw arg;
13317        }
13318        return doneResult();
13319      }
13320      context.method = method;
13321      context.arg = arg;
13322      while (true) {
13323        var delegate = context.delegate;
13324        if (delegate) {
13325          var delegateResult = maybeInvokeDelegate(delegate, context);
13326          if (delegateResult) {
13327            if (delegateResult === ContinueSentinel) continue;
13328            return delegateResult;
13329          }
13330        }
13331        if (context.method === "next") {
13332          context.sent = context._sent = context.arg;
13333        } else if (context.method === "throw") {
13334          if (state === GenStateSuspendedStart) {
13335            state = GenStateCompleted;
13336            throw context.arg;
13337          }
13338          context.dispatchException(context.arg);
13339        } else if (context.method === "return") {
13340          context.abrupt("return", context.arg);
13341        }
13342        state = GenStateExecuting;
13343        var record = tryCatch(innerFn, self, context);
13344        if (record.type === "normal") {
13345          state = context.done ? GenStateCompleted : GenStateSuspendedYield;
13346          if (record.arg === ContinueSentinel) {
13347            continue;
13348          }
13349          return {
13350            value: record.arg,
13351            done: context.done
13352          };
13353        } else if (record.type === "throw") {
13354          state = GenStateCompleted;
13355          context.method = "throw";
13356          context.arg = record.arg;
13357        }
13358      }
13359    };
13360  }
13361  function maybeInvokeDelegate(delegate, context) {
13362    var method = delegate.iterator[context.method];
13363    if (method === undefined) {
13364      context.delegate = null;
13365      if (context.method === "throw") {
13366        if (delegate.iterator.return) {
13367          context.method = "return";
13368          context.arg = undefined;
13369          maybeInvokeDelegate(delegate, context);
13370          if (context.method === "throw") {
13371            return ContinueSentinel;
13372          }
13373        }
13374        context.method = "throw";
13375        context.arg = new TypeError("The iterator does not provide a 'throw' method");
13376      }
13377      return ContinueSentinel;
13378    }
13379    var record = tryCatch(method, delegate.iterator, context.arg);
13380    if (record.type === "throw") {
13381      context.method = "throw";
13382      context.arg = record.arg;
13383      context.delegate = null;
13384      return ContinueSentinel;
13385    }
13386    var info = record.arg;
13387    if (!info) {
13388      context.method = "throw";
13389      context.arg = new TypeError("iterator result is not an object");
13390      context.delegate = null;
13391      return ContinueSentinel;
13392    }
13393    if (info.done) {
13394      context[delegate.resultName] = info.value;
13395      context.next = delegate.nextLoc;
13396      if (context.method !== "return") {
13397        context.method = "next";
13398        context.arg = undefined;
13399      }
13400    } else {
13401      return info;
13402    }
13403    context.delegate = null;
13404    return ContinueSentinel;
13405  }
13406  defineIteratorMethods(Gp);
13407  Gp[toStringTagSymbol] = "Generator";
13408  Gp[iteratorSymbol] = function () {
13409    return this;
13410  };
13411  Gp.toString = function () {
13412    return "[object Generator]";
13413  };
13414  function pushTryEntry(locs) {
13415    var entry = { tryLoc: locs[0] };
13416    if (1 in locs) {
13417      entry.catchLoc = locs[1];
13418    }
13419    if (2 in locs) {
13420      entry.finallyLoc = locs[2];
13421      entry.afterLoc = locs[3];
13422    }
13423    this.tryEntries.push(entry);
13424  }
13425  function resetTryEntry(entry) {
13426    var record = entry.completion || {};
13427    record.type = "normal";
13428    delete record.arg;
13429    entry.completion = record;
13430  }
13431  function Context(tryLocsList) {
13432    this.tryEntries = [{ tryLoc: "root" }];
13433    tryLocsList.forEach(pushTryEntry, this);
13434    this.reset(true);
13435  }
13436  runtime.keys = function (object) {
13437    var keys = [];
13438    for (var key in object) {
13439      keys.push(key);
13440    }
13441    keys.reverse();
13442    return function next() {
13443      while (keys.length) {
13444        var key = keys.pop();
13445        if (key in object) {
13446          next.value = key;
13447          next.done = false;
vendor: 4,115 bytes, lines 13448-13584
13448          return next;
13449        }
13450      }
13451      next.done = true;
13452      return next;
13453    };
13454  };
13455  function values(iterable) {
13456    if (iterable) {
13457      var iteratorMethod = iterable[iteratorSymbol];
13458      if (iteratorMethod) {
13459        return iteratorMethod.call(iterable);
13460      }
13461      if (typeof iterable.next === "function") {
13462        return iterable;
13463      }
13464      if (!isNaN(iterable.length)) {
13465        var i = -1,
13466            next = function next() {
13467          while (++i < iterable.length) {
13468            if (hasOwn.call(iterable, i)) {
13469              next.value = iterable[i];
13470              next.done = false;
13471              return next;
13472            }
13473          }
13474          next.value = undefined;
13475          next.done = true;
13476          return next;
13477        };
13478        return next.next = next;
13479      }
13480    }
13481    return { next: doneResult };
13482  }
13483  runtime.values = values;
13484  function doneResult() {
13485    return {
13486      value: undefined,
13487      done: true
13488    };
13489  }
13490  Context.prototype = {
13491    constructor: Context,
13492    reset: function reset(skipTempReset) {
13493      this.prev = 0;
13494      this.next = 0;
13495      this.sent = this._sent = undefined;
13496      this.done = false;
13497      this.delegate = null;
13498      this.method = "next";
13499      this.arg = undefined;
13500      this.tryEntries.forEach(resetTryEntry);
13501      if (!skipTempReset) {
13502        for (var name in this) {
13503          if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
13504            this[name] = undefined;
13505          }
13506        }
13507      }
13508    },
13509    stop: function stop() {
13510      this.done = true;
13511      var rootEntry = this.tryEntries[0];
13512      var rootRecord = rootEntry.completion;
13513      if (rootRecord.type === "throw") {
13514        throw rootRecord.arg;
13515      }
13516      return this.rval;
13517    },
13518    dispatchException: function dispatchException(exception) {
13519      if (this.done) {
13520        throw exception;
13521      }
13522      var context = this;
13523      function handle(loc, caught) {
13524        record.type = "throw";
13525        record.arg = exception;
13526        context.next = loc;
13527        if (caught) {
13528          context.method = "next";
13529          context.arg = undefined;
13530        }
13531        return !!caught;
13532      }
13533      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
13534        var entry = this.tryEntries[i];
13535        var record = entry.completion;
13536        if (entry.tryLoc === "root") {
13537          return handle("end");
13538        }
13539        if (entry.tryLoc <= this.prev) {
13540          var hasCatch = hasOwn.call(entry, "catchLoc");
13541          var hasFinally = hasOwn.call(entry, "finallyLoc");
13542          if (hasCatch && hasFinally) {
13543            if (this.prev < entry.catchLoc) {
13544              return handle(entry.catchLoc, true);
13545            } else if (this.prev < entry.finallyLoc) {
13546              return handle(entry.finallyLoc);
13547            }
13548          } else if (hasCatch) {
13549            if (this.prev < entry.catchLoc) {
13550              return handle(entry.catchLoc, true);
13551            }
13552          } else if (hasFinally) {
13553            if (this.prev < entry.finallyLoc) {
13554              return handle(entry.finallyLoc);
13555            }
13556          } else {
13557            throw new Error("try statement without catch or finally");
13558          }
13559        }
13560      }
13561    },
13562    abrupt: function abrupt(type, arg) {
13563      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
13564        var entry = this.tryEntries[i];
13565        if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
13566          var finallyEntry = entry;
13567          break;
13568        }
13569      }
13570      if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
13571        finallyEntry = null;
13572      }
13573      var record = finallyEntry ? finallyEntry.completion : {};
13574      record.type = type;
13575      record.arg = arg;
13576      if (finallyEntry) {
13577        this.method = "next";
13578        this.next = finallyEntry.finallyLoc;
13579        return ContinueSentinel;
13580      }
13581      return this.complete(record);
13582    },
13583    complete: function complete(record, afterLoc) {
13584      if (record.type === "throw") {
13585        throw record.arg;
13586      }
13587      if (record.type === "break" || record.type === "continue") {
13588        this.next = record.arg;
13589      } else if (record.type === "return") {
13590        this.rval = this.arg = record.arg;
13591        this.method = "return";
13592        this.next = "end";
13593      } else if (record.type === "normal" && afterLoc) {
13594        this.next = afterLoc;
13595      }
13596      return ContinueSentinel;
13597    },
13598    finish: function finish(finallyLoc) {
13599      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
13600        var entry = this.tryEntries[i];
13601        if (entry.finallyLoc === finallyLoc) {
13602          this.complete(entry.completion, entry.afterLoc);
13603          resetTryEntry(entry);
13604          return ContinueSentinel;
13605        }
13606      }
13607    },
13608    "catch": function _catch(tryLoc) {
13609      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
13610        var entry = this.tryEntries[i];
13611        if (entry.tryLoc === tryLoc) {
13612          var record = entry.completion;
13613          if (record.type === "throw") {
13614            var thrown = record.arg;
13615            resetTryEntry(entry);
13616          }
13617          return thrown;
13618        }
13619      }
13620      throw new Error("illegal catch attempt");
13621    },
13622    delegateYield: function delegateYield(iterable, resultName, nextLoc) {
13623      this.delegate = {
13624        iterator: values(iterable),
13625        resultName: resultName,
13626        nextLoc: nextLoc
13627      };
13628      if (this.method === "next") {
13629        this.arg = undefined;
13630      }
13631      return ContinueSentinel;
13632    }
13633  };
13634}(function () {
13635  return this;
13636}() || Function("return this")());
13637/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(140)(module)))
13638
13639/***/ }),
13640/* 140 */
13641/***/ (function(module, exports, __w_pdfjs_require__) {
13642
13643"use strict";
13644
13645
13646module.exports = function (module) {
13647  if (!module.webpackPolyfill) {
13648    module.deprecate = function () {};
13649    module.paths = [];
13650    if (!module.children) module.children = [];
13651    Object.defineProperty(module, "loaded", {
13652      enumerable: true,
13653      get: function get() {
13654        return module.l;
13655      }
13656    });
13657    Object.defineProperty(module, "id", {
13658      enumerable: true,
13659      get: function get() {
13660        return module.i;
13661      }
13662    });
13663    module.webpackPolyfill = 1;
13664  }
13665  return module;
13666};
13667
13668/***/ }),
13669/* 141 */
13670/***/ (function(module, exports, __w_pdfjs_require__) {
13671
13672"use strict";
13673
13674
13675Object.defineProperty(exports, "__esModule", {
13676  value: true
13677});
13678exports.Metadata = undefined;
13679
13680var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
13681
13682var _util = __w_pdfjs_require__(1);
13683
13684var _xml_parser = __w_pdfjs_require__(142);
13685
13686function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13687
13688var Metadata = function () {
13689  function Metadata(data) {
13690    _classCallCheck(this, Metadata);
13691
13692    (0, _util.assert)(typeof data === 'string', 'Metadata: input is not a string');
13693    data = this._repair(data);
13694    var parser = new _xml_parser.SimpleXMLParser();
13695    var xmlDocument = parser.parseFromString(data);
13696    this._metadata = Object.create(null);
13697    if (xmlDocument) {
13698      this._parse(xmlDocument);
13699    }
13700  }
13701
13702  _createClass(Metadata, [{
13703    key: '_repair',
13704    value: function _repair(data) {
13705      return data.replace(/>\\376\\377([^<]+)/g, function (all, codes) {
13706        var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {
13707          return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
13708        }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {
13709          switch (name) {
13710            case 'amp':
13711              return '&';
13712            case 'apos':
13713              return '\'';
13714            case 'gt':
13715              return '>';
13716            case 'lt':
13717              return '<';
13718            case 'quot':
13719              return '\"';
13720          }
13721          throw new Error('_repair: ' + name + ' isn\'t defined.');
13722        });
13723        var chars = '';
13724        for (var i = 0, ii = bytes.length; i < ii; i += 2) {
13725          var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
13726          if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {
13727            chars += String.fromCharCode(code);
13728          } else {
13729            chars += '&#x' + (0x10000 + code).toString(16).substring(1) + ';';
13730          }
13731        }
13732        return '>' + chars;
13733      });
13734    }
13735  }, {
13736    key: '_parse',
13737    value: function _parse(xmlDocument) {
13738      var rdf = xmlDocument.documentElement;
13739      if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
13740        rdf = rdf.firstChild;
13741        while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
13742          rdf = rdf.nextSibling;
13743        }
13744      }
13745      var nodeName = rdf ? rdf.nodeName.toLowerCase() : null;
13746      if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {
13747        return;
13748      }
13749      var children = rdf.childNodes;
13750      for (var i = 0, ii = children.length; i < ii; i++) {
13751        var desc = children[i];
13752        if (desc.nodeName.toLowerCase() !== 'rdf:description') {
13753          continue;
13754        }
13755        for (var j = 0, jj = desc.childNodes.length; j < jj; j++) {
13756          if (desc.childNodes[j].nodeName.toLowerCase() !== '#text') {
13757            var entry = desc.childNodes[j];
13758            var name = entry.nodeName.toLowerCase();
13759            this._metadata[name] = entry.textContent.trim();
13760          }
13761        }
13762      }
13763    }
13764  }, {
13765    key: 'get',
13766    value: function get(name) {
13767      return this._metadata[name] || null;
13768    }
13769  }, {
13770    key: 'getAll',
13771    value: function getAll() {
13772      return this._metadata;
13773    }
13774  }, {
13775    key: 'has',
13776    value: function has(name) {
13777      return typeof this._metadata[name] !== 'undefined';
13778    }
13779  }]);
13780
13781  return Metadata;
13782}();
13783
13784exports.Metadata = Metadata;
13785
13786/***/ }),
13787/* 142 */
13788/***/ (function(module, exports, __w_pdfjs_require__) {
13789
13790"use strict";
13791
13792
13793Object.defineProperty(exports, "__esModule", {
13794  value: true
13795});
13796
13797var _slicedToArray = function () { function sliceIterator(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"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
13798
13799var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
13800
13801var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
13802
13803function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
13804
13805function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { c
13805onstructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
13806
13807function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13808
13809var XMLParserErrorCode = {
13810  NoError: 0,
13811  EndOfDocument: -1,
13812  UnterminatedCdat: -2,
13813  UnterminatedXmlDeclaration: -3,
13814  UnterminatedDoctypeDeclaration: -4,
13815  UnterminatedComment: -5,
13816  MalformedElement: -6,
13817  OutOfMemory: -7,
13818  UnterminatedAttributeValue: -8,
13819  UnterminatedElement: -9,
13820  ElementNeverBegun: -10
13821};
13822function isWhitespace(s, index) {
13823  var ch = s[index];
13824  return ch === ' ' || ch === '\n' || ch === '\r' || ch === '\t';
13825}
13826function isWhitespaceString(s) {
13827  for (var i = 0, ii = s.length; i < ii; i++) {
13828    if (!isWhitespace(s, i)) {
13829      return false;
13830    }
13831  }
13832  return true;
13833}
13834
13835var XMLParserBase = function () {
13836  function XMLParserBase() {
13837    _classCallCheck(this, XMLParserBase);
13838  }
13839
13840  _createClass(XMLParserBase, [{
13841    key: '_resolveEntities',
13842    value: function _resolveEntities(s) {
13843      return s.replace(/&([^;]+);/g, function (all, entity) {
13844        if (entity.substring(0, 2) === '#x') {
13845          return String.fromCharCode(parseInt(entity.substring(2), 16));
13846        } else if (entity.substring(0, 1) === '#') {
13847          return String.fromCharCode(parseInt(entity.substring(1), 10));
13848        }
13849        switch (entity) {
13850          case 'lt':
13851            return '<';
13852          case 'gt':
13853            return '>';
13854          case 'amp':
13855            return '&';
13856          case 'quot':
13857            return '\"';
13858        }
13859        return this.onResolveEntity(entity);
13860      });
13861    }
13862  }, {
13863    key: '_parseContent',
13864    value: function _parseContent(s, start) {
13865      var pos = start,
13866          name = void 0,
13867          attributes = [];
13868      function skipWs() {
13869        while (pos < s.length && isWhitespace(s, pos)) {
13870          ++pos;
13871        }
13872      }
13873      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') {
13874        ++pos;
13875      }
13876      name = s.substring(start, pos);
13877      skipWs();
13878      while (pos < s.length && s[pos] !== '>' && s[pos] !== '/' && s[pos] !== '?') {
13879        skipWs();
13880        var attrName = '',
13881            attrValue = '';
13882        while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '=') {
13883          attrName += s[pos];
13884          ++pos;
13885        }
13886        skipWs();
13887        if (s[pos] !== '=') {
13888          return null;
13889        }
13890        ++pos;
13891        skipWs();
13892        var attrEndChar = s[pos];
13893        if (attrEndChar !== '\"' && attrEndChar !== '\'') {
13894          return null;
13895        }
13896        var attrEndIndex = s.indexOf(attrEndChar, ++pos);
13897        if (attrEndIndex < 0) {
13898          return null;
13899        }
13900        attrValue = s.substring(pos, attrEndIndex);
13901        attributes.push({
13902          name: attrName,
13903          value: this._resolveEntities(attrValue)
13904        });
13905        pos = attrEndIndex + 1;
13906        skipWs();
13907      }
13908      return {
13909        name: name,
13910        attributes: attributes,
13911        parsed: pos - start
13912      };
13913    }
13914  }, {
13915    key: '_parseProcessingInstruction',
13916    value: function _parseProcessingInstruction(s, start) {
13917      var pos = start,
13918          name = void 0,
13919          value = void 0;
13920      function skipWs() {
13921        while (pos < s.length && isWhitespace(s, pos)) {
13922          ++pos;
13923        }
13924      }
13925      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') {
13926        ++pos;
13927      }
13928      name = s.substring(start, pos);
13929      skipWs();
13930      var attrStart = pos;
13931      while (pos < s.length && (s[pos] !== '?' || s[pos + 1] !== '>')) {
13932        ++pos;
13933      }
13934      value = s.substring(attrStart, pos);
13935      return {
13936        name: name,
13937        value: value,
13938        parsed: pos - start
13939      };
13940    }
13941  }, {
13942    key: 'parseXml',
13943    value: function parseXml(s) {
13944      var i = 0;
13945      while (i < s.length) {
13946        var ch = s[i];
13947        var j = i;
13948        if (ch === '<') {
13949          ++j;
13950          var ch2 = s[j];
13951          var q = void 0;
13952          switch (ch2) {
13953            case '/':
13954              ++j;
13955              q = s.indexOf('>', j);
13956              if (q < 0) {
13957                this.onError(XMLParserErrorCode.UnterminatedElement);
13958                return;
13959              }
13960              this.onEndElement(s.substring(j, q));
13961              j = q + 1;
13962              break;
13963            case '?':
13964              ++j;
13965              var pi = this._parseProcessingInstruction(s, j);
13966              if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== '?>') {
13967                this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);
13968                return;
13969              }
13970              this.onPi(pi.name, pi.value);
13971              j += pi.parsed + 2;
13972              break;
13973            case '!':
13974              if (s.substring(j + 1, j + 3) === '--') {
13975                q = s.indexOf('-->', j + 3);
13976                if (q < 0) {
13977                  this.onError(XMLParserErrorCode.UnterminatedComment);
13978                  return;
13979                }
13980                this.onComment(s.substring(j + 3, q));
13981                j = q + 3;
13982              } else if (s.substring(j + 1, j + 8) === '[CDATA[') {
13983                q = s.indexOf(']]>', j + 8);
13984                if (q < 0) {
13985                  this.onError(XMLParserErrorCode.UnterminatedCdat);
13986                  return;
13987                }
13988                this.onCdata(s.substring(j + 8, q));
13989                j = q + 3;
13990              } else if (s.substring(j + 1, j + 8) === 'DOCTYPE') {
13991                var q2 = s.indexOf('[', j + 8);
13992                var complexDoctype = false;
13993                q = s.indexOf('>', j + 8);
13994                if (q < 0) {
13995                  this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
13996                  return;
13997                }
13998                if (q2 > 0 && q > q2) {
13999                  q = s.indexOf(']>', j + 8);
14000                  if (q < 0) {
14001                    this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
14002                    return;
14003                  }
14004                  complexDoctype = true;
14005                }
14006                var doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));
14007                this.onDoctype(doctypeContent);
14008                j = q + (complexDoctype ? 2 : 1);
14009              } else {
14010                this.onError(XMLParserErrorCode.MalformedElement);
14011                return;
14012              }
14013              break;
14014            default:
14015              var content = this._parseContent(s, j);
14016              if (content === null) {
14017                this.onError(XMLParserErrorCode.MalformedElement);
14018                return;
14019              }
14020              var isClosed = false;
14021              if (s.substring(j + content.parsed, j + content.parsed + 2) === '/>') {
14022                isClosed = true;
14023              } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== '>') {
14024                this.onError(XMLParserErrorCode.UnterminatedElement);
14025                return;
14026              }
14027              this.onBeginElement(content.name, content.attributes, isClosed);
14028              j += content.parsed + (isClosed ? 2 : 1);
14029              break;
14030          }
14031        } else {
14032          while (j < s.length && s[j] !== '<') {
14033            j++;
14034          }
14035          var text = s.substring(i, j);
14036          this.onText(this._resolveEntities(text));
14037        }
14038        i = j;
14039      }
14040    }
14041  }, {
14042    key: 'onResolveEntity',
14043    value: function onResolveEntity(name) {
14044      return '&' + name + ';';
14045    }
14046  }, {
14047    key: 'onPi',
14048    value: function onPi(name, value) {}
14049  }, {
14050    key: 'onComment',
14051    value: function onComment(text) {}
14052  }, {
14053    key: 'onCdata',
14054    value: function onCdata(text) {}
14055  }, {
14056    key: 'onDoctype',
14057    value: function onDoctype(doctypeContent) {}
14058  }, {
14059    key: 'onText',
14060    value: function onText(text) {}
14061  }, {
14062    key: 'onBeginElement',
14063    value: function onBeginElement(name, attributes, isEmpty) {}
14064  }, {
14065    key: 'onEndElement',
14066    value: function onEndElement(name) {}
14067  }, {
14068    key: 'onError',
14069    value: function onError(code) {}
14070  }]);
14071
14072  return XMLParserBase;
14073}();
14074
14075var SimpleDOMNode = function () {
14076  function SimpleDOMNode(nodeName, nodeValue) {
14077    _classCallCheck(this, SimpleDOMNode);
14078
14079    this.nodeName = nodeName;
14080    this.nodeValue = nodeValue;
14081    Object.defineProperty(this, 'parentNode', {
14082      value: null,
14083      writable: true
14084    });
14085  }
14086
14087  _createClass(SimpleDOMNode, [{
14088    key: 'hasChildNodes',
14089    value: function hasChildNodes() {
14090      return this.childNodes && this.childNodes.length > 0;
14091    }
14092  }, {
14093    key: 'firstChild',
14094    get: function get() {
14095      return this.childNodes[0];
14096    }
14097  }, {
14098    key: 'nextSibling',
14099    get: function get() {
14100      var index = this.parentNode.childNodes.indexOf(this);
14101      return this.parentNode.childNodes[index + 1];
14102    }
14103  }, {
14104    key: 'textContent',
14105    get: function get() {
14106      if (!this.childNodes) {
14107        return this.nodeValue || '';
14108      }
14109      return this.childNodes.map(function (child) {
14110        return child.textContent;
14111      }).join('');
14112    }
14113  }]);
14114
14115  return SimpleDOMNode;
14116}();
14117
14118var SimpleXMLParser = function (_XMLParserBase) {
14119  _inherits(SimpleXMLParser, _XMLParserBase);
14120
14121  function SimpleXMLParser() {
14122    _classCallCheck(this, SimpleXMLParser);
14123
14124    var _this = _possibleConstructorReturn(this, (SimpleXMLParser.__proto__ || Object.getPrototypeOf(SimpleXMLParser)).call(this));
14125
14126    _this._currentFragment = null;
14127    _this._stack = null;
14128    _this._errorCode = XMLParserErrorCode.NoError;
14129    return _this;
14130  }
14131
14132  _createClass(SimpleXMLParser, [{
14133    key: 'parseFromString',
14134    value: function parseFromString(data) {
14135      this._currentFragment = [];
14136      this._stack = [];
14137      this._errorCode = XMLParserErrorCode.NoError;
14138      this.parseXml(data);
14139      if (this._errorCode !== XMLParserErrorCode.NoError) {
14140        return undefined;
14141      }
14142
14143      var _currentFragment = _slicedToArray(this._currentFragment, 1),
14144          documentElement = _currentFragment[0];
14145
14146      if (!documentElement) {
14147        return undefined;
14148      }
14149      return { documentElement: documentElement };
14150    }
14151  }, {
14152    key: 'onResolveEntity',
14153    value: function onResolveEntity(name) {
14154      switch (name) {
14155        case 'apos':
14156          return '\'';
14157      }
14158      return _get(SimpleXMLParser.prototype.__proto__ || Object.getPrototypeOf(SimpleXMLParser.prototype), 'onResolveEntity', this).call(this, name);
14159    }
14160  }, {
14161    key: 'onText',
14162    value: function onText(text) {
14163      if (isWhitespaceString(text)) {
14164        return;
14165      }
14166      var node = new SimpleDOMNode('#text', text);
14167      this._currentFragment.push(node);
14168    }
14169  }, {
14170    key: 'onCdata',
14171    value: function onCdata(text) {
14172      var node = new SimpleDOMNode('#text', text);
14173      this._currentFragment.push(node);
14174    }
14175  }, {
14176    key: 'onBeginElement',
14177    value: function onBeginElement(name, attributes, isEmpty) {
14178      var node = new SimpleDOMNode(name);
14179      node.childNodes = [];
14180      this._currentFragment.push(node);
14181      if (isEmpty) {
14182        return;
14183      }
14184      this._stack.push(this._currentFragment);
14185      this._currentFragment = node.childNodes;
14186    }
14187  }, {
14188    key: 'onEndElement',
14189    value: function onEndElement(name) {
14190      this._currentFragment = this._stack.pop();
14191      var lastElement = this._currentFragment[this._currentFragment.length - 1];
14192      for (var i = 0, ii = lastElement.childNodes.length; i < ii; i++) {
14193        lastElement.childNodes[i].parentNode = lastElement;
14194      }
14195    }
14196  }, {
14197    key: 'onError',
14198    value: function onError(code) {
14199      this._errorCode = code;
14200    }
14201  }]);
14202
14203  return SimpleXMLParser;
14204}(XMLParserBase);
14205
14206exports.SimpleXMLParser = SimpleXMLParser;
14207
14208/***/ }),
14209/* 143 */
14210/***/ (function(module, exports, __w_pdfjs_require__) {
14211
14212"use strict";
14213
14214
14215Object.defineProperty(exports, "__esModule", {
14216  value: true
14217});
14218exports.PDFDataTransportStream = undefined;
14219
14220var _regenerator = __w_pdfjs_require__(137);
14221
14222var _regenerator2 = _interopRequireDefault(_regenerator);
14223
14224var _util = __w_pdfjs_require__(1);
14225
14226function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14227
14228function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { tr
14228y { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
14229
14230var PDFDataTransportStream = function PDFDataTransportStreamClosure() {
14231  function PDFDataTransportStream(params, pdfDataRangeTransport) {
14232    var _this = this;
14233
14234    (0, _util.assert)(pdfDataRangeTransport);
14235    this._queuedChunks = [];
14236    var initialData = params.initialData;
14237    if (initialData && initialData.length > 0) {
14238      var buffer = new Uint8Array(initialData).buffer;
14239      this._queuedChunks.push(buffer);
14240    }
14241    this._pdfDataRangeTransport = pdfDataRangeTransport;
14242    this._isStreamingSupported = !params.disableStream;
14243    this._isRangeSupported = !params.disableRange;
14244    this._contentLength = params.length;
14245    this._fullRequestReader = null;
14246    this._rangeReaders = [];
14247    this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) {
14248      _this._onReceiveData({
14249        begin: begin,
14250        chunk: chunk
14251      });
14252    });
14253    this._pdfDataRangeTransport.addProgressListener(function (loaded) {
14254      _this._onProgress({ loaded: loaded });
14255    });
14256    this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) {
14257      _this._onReceiveData({ chunk: chunk });
14258    });
14259    this._pdfDataRangeTransport.transportReady();
14260  }
14261  PDFDataTransportStream.prototype = {
14262    _onReceiveData: function PDFDataTransportStream_onReceiveData(args) {
14263      var buffer = new Uint8Array(args.chunk).buffer;
14264      if (args.begin === undefined) {
14265        if (this._fullRequestReader) {
14266          this._fullRequestReader._enqueue(buffer);
14267        } else {
14268          this._queuedChunks.push(buffer);
14269        }
14270      } else {
14271        var found = this._rangeReaders.some(function (rangeReader) {
14272          if (rangeReader._begin !== args.begin) {
14273            return false;
14274          }
14275          rangeReader._enqueue(buffer);
14276          return true;
14277        });
14278        (0, _util.assert)(found);
14279      }
14280    },
14281    _onProgress: function PDFDataTransportStream_onDataProgress(evt) {
14282      if (this._rangeReaders.length > 0) {
14283        var firstReader = this._rangeReaders[0];
14284        if (firstReader.onProgress) {
14285          firstReader.onProgress({ loaded: evt.loaded });
14286        }
14287      }
14288    },
14289    _removeRangeReader: function PDFDataTransportStream_removeRangeReader(reader) {
14290      var i = this._rangeReaders.indexOf(reader);
14291      if (i >= 0) {
14292        this._rangeReaders.splice(i, 1);
14293      }
14294    },
14295    getFullReader: function PDFDataTransportStream_getFullReader() {
14296      (0, _util.assert)(!this._fullRequestReader);
14297      var queuedChunks = this._queuedChunks;
14298      this._queuedChunks = null;
14299      return new PDFDataTransportStreamReader(this, queuedChunks);
14300    },
14301    getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) {
14302      var reader = new PDFDataTransportStreamRangeReader(this, begin, end);
14303      this._pdfDataRangeTransport.requestDataRange(begin, end);
14304      this._rangeReaders.push(reader);
14305      return reader;
14306    },
14307    cancelAllRequests: function PDFDataTransportStream_cancelAllRequests(reason) {
14308      if (this._fullRequestReader) {
14309        this._fullRequestReader.cancel(reason);
14310      }
14311      var readers = this._rangeReaders.slice(0);
14312      readers.forEach(function (rangeReader) {
14313        rangeReader.cancel(reason);
14314      });
14315      this._pdfDataRangeTransport.abort();
14316    }
14317  };
14318  function PDFDataTransportStreamReader(stream, queuedChunks) {
14319    this._stream = stream;
14320    this._done = false;
14321    this._filename = null;
14322    this._queuedChunks = queuedChunks || [];
14323    this._requests = [];
14324    this._headersReady = Promise.resolve();
14325    stream._fullRequestReader = this;
14326    this.onProgress = null;
14327  }
14328  PDFDataTransportStreamReader.prototype = {
14329    _enqueue: function PDFDataTransportStreamReader_enqueue(chunk) {
14330      if (this._done) {
14331        return;
14332      }
14333      if (this._requests.length > 0) {
14334        var requestCapability = this._requests.shift();
14335        requestCapability.resolve({
14336          value: chunk,
14337          done: false
14338        });
14339        return;
14340      }
14341      this._queuedChunks.push(chunk);
14342    },
14343    get headersReady() {
14344      return this._headersReady;
14345    },
14346    get filename() {
14347      return this._filename;
14348    },
14349    get isRangeSupported() {
14350      return this._stream._isRangeSupported;
14351    },
14352    get isStreamingSupported() {
14353      return this._stream._isStreamingSupported;
14354    },
14355    get contentLength() {
14356      return this._stream._contentLength;
14357    },
14358    read: function () {
14359      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
14360        var chunk, requestCapability;
14361        return _regenerator2.default.wrap(function _callee$(_context) {
14362          while (1) {
14363            switch (_context.prev = _context.next) {
14364              case 0:
14365                if (!(this._queuedChunks.length > 0)) {
14366                  _context.next = 3;
14367                  break;
14368                }
14369
14370                chunk = this._queuedChunks.shift();
14371                return _context.abrupt('return', {
14372                  value: chunk,
14373                  done: false
14374                });
14375
14376              case 3:
14377                if (!this._done) {
14378                  _context.next = 5;
14379                  break;
14380                }
14381
14382                return _context.abrupt('return', {
14383                  value: undefined,
14384                  done: true
14385                });
14386
14387              case 5:
14388                requestCapability = (0, _util.createPromiseCapability)();
14389
14390                this._requests.push(requestCapability);
14391                return _context.abrupt('return', requestCapability.promise);
14392
14393              case 8:
14394              case 'end':
14395                return _context.stop();
14396            }
14397          }
14398        }, _callee, this);
14399      }));
14400
14401      function read() {
14402        return _ref.apply(this, arguments);
14403      }
14404
14405      return read;
14406    }(),
14407
14408    cancel: function PDFDataTransportStreamReader_cancel(reason) {
14409      this._done = true;
14410      this._requests.forEach(function (requestCapability) {
14411        requestCapability.resolve({
14412          value: undefined,
14413          done: true
14414        });
14415      });
14416      this._requests = [];
14417    }
14418  };
14419  function PDFDataTransportStreamRangeReader(stream, begin, end) {
14420    this._stream = stream;
14421    this._begin = begin;
14422    this._end = end;
14423    this._queuedChunk = null;
14424    this._requests = [];
14425    this._done = false;
14426    this.onProgress = null;
14427  }
14428  PDFDataTransportStreamRangeReader.prototype = {
14429    _enqueue: function PDFDataTransportStreamRangeReader_enqueue(chunk) {
14430      if (this._done) {
14431        return;
14432      }
14433      if (this._requests.length === 0) {
14434        this._queuedChunk = chunk;
14435      } else {
14436        var requestsCapability = this._requests.shift();
14437        requestsCapability.resolve({
14438          value: chunk,
14439          done: false
14440        });
14441        this._requests.forEach(function (requestCapability) {
14442          requestCapability.resolve({
14443            value: undefined,
14444            done: true
14445          });
14446        });
14447        this._requests = [];
14448      }
14449      this._done = true;
14450      this._stream._removeRangeReader(this);
14451    },
14452    get isStreamingSupported() {
14453      return false;
14454    },
14455    read: function () {
14456      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
14457        var chunk, requestCapability;
14458        return _regenerator2.default.wrap(function _callee2$(_context2) {
14459          while (1) {
14460            switch (_context2.prev = _context2.next) {
14461              case 0:
14462                if (!this._queuedChunk) {
14463                  _context2.next = 4;
14464                  break;
14465                }
14466
14467                chunk = this._queuedChunk;
14468
14469                this._queuedChunk = null;
14470                return _context2.abrupt('return', {
14471                  value: chunk,
14472                  done: false
14473                });
14474
14475              case 4:
14476                if (!this._done) {
14477                  _context2.next = 6;
14478                  break;
14479                }
14480
14481                return _context2.abrupt('return', {
14482                  value: undefined,
14483                  done: true
14484                });
14485
14486              case 6:
14487                requestCapability = (0, _util.createPromiseCapability)();
14488
14489                this._requests.push(requestCapability);
14490                return _context2.abrupt('return', requestCapability.promise);
14491
14492              case 9:
14493              case 'end':
14494                return _context2.stop();
14495            }
14496          }
14497        }, _callee2, this);
14498      }));
14499
14500      function read() {
14501        return _ref2.apply(this, arguments);
14502      }
14503
14504      return read;
14505    }(),
14506
14507    cancel: function PDFDataTransportStreamRangeReader_cancel(reason) {
14508      this._done = true;
14509      this._requests.forEach(function (requestCapability) {
14510        requestCapability.resolve({
14511          value: undefined,
14512          done: true
14513        });
14514      });
14515      this._requests = [];
14516      this._stream._removeRangeReader(this);
14517    }
14518  };
14519  return PDFDataTransportStream;
14520}();
14521exports.PDFDataTransportStream = PDFDataTransportStream;
14522
14523/***/ }),
14524/* 144 */
14525/***/ (function(module, exports, __w_pdfjs_require__) {
14526
14527"use strict";
14528
14529
14530Object.defineProperty(exports, "__esModule", {
14531  value: true
14532});
14533exports.WebGLContext = undefined;
14534
14535var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
14536
14537var _util = __w_pdfjs_require__(1);
14538
14539function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
14540
14541var WebGLContext = function () {
14542  function WebGLContext(_ref) {
14543    var _ref$enable = _ref.enable,
14544        enable = _ref$enable === undefined ? false : _ref$enable;
14545
14546    _classCallCheck(this, WebGLContext);
14547
14548    this._enabled = enable === true;
14549  }
14550
14551  _createClass(WebGLContext, [{
14552    key: 'composeSMask',
14553    value: function composeSMask(_ref2) {
14554      var layer = _ref2.layer,
14555          mask = _ref2.mask,
14556          properties = _ref2.properties;
14557
14558      return WebGLUtils.composeSMask(layer, mask, properties);
14559    }
14560  }, {
14561    key: 'drawFigures',
14562    value: function drawFigures(_ref3) {
14563      var width = _ref3.width,
14564          height = _ref3.height,
14565          backgroundColor = _ref3.backgroundColor,
14566          figures = _ref3.figures,
14567          context = _ref3.context;
14568
14569      return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);
14570    }
14571  }, {
14572    key: 'clear',
14573    value: function clear() {
14574      WebGLUtils.cleanup();
14575    }
14576  }, {
14577    key: 'isEnabled',
14578    get: function get() {
14579      var enabled = this._enabled;
14580      if (enabled) {
14581        enabled = WebGLUtils.tryInitGL();
14582      }
14583      return (0, _util.shadow)(this, 'isEnabled', enabled);
14584    }
14585  }]);
14586
14587  return WebGLContext;
14588}();
14589
14590var WebGLUtils = function WebGLUtilsClosure() {
14591  function loadShader(gl, code, shaderType) {
14592    var shader = gl.createShader(shaderType);
vendor: 11,433 bytes, lines 14593-14838
14593    gl.shaderSource(shader, code);
14594    gl.compileShader(shader);
14595    var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
14596    if (!compiled) {
14597      var errorMsg = gl.getShaderInfoLog(shader);
14598      throw new Error('Error during shader compilation: ' + errorMsg);
14599    }
14600    return shader;
14601  }
14602  function createVertexShader(gl, code) {
14603    return loadShader(gl, code, gl.VERTEX_SHADER);
14604  }
14605  function createFragmentShader(gl, code) {
14606    return loadShader(gl, code, gl.FRAGMENT_SHADER);
14607  }
14608  function createProgram(gl, shaders) {
14609    var program = gl.createProgram();
14610    for (var i = 0, ii = shaders.length; i < ii; ++i) {
14611      gl.attachShader(program, shaders[i]);
14612    }
14613    gl.linkProgram(program);
14614    var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
14615    if (!linked) {
14616      var errorMsg = gl.getProgramInfoLog(program);
14617      throw new Error('Error during program linking: ' + errorMsg);
14618    }
14619    return program;
14620  }
14621  function createTexture(gl, image, textureId) {
14622    gl.activeTexture(textureId);
14623    var texture = gl.createTexture();
14624    gl.bindTexture(gl.TEXTURE_2D, texture);
14625    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
14626    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
14627    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
14628    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
14629    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
14630    return texture;
14631  }
14632  var currentGL, currentCanvas;
14633  function generateGL() {
14634    if (currentGL) {
14635      return;
14636    }
14637    currentCanvas = document.createElement('canvas');
14638    currentGL = currentCanvas.getContext('webgl', { premultipliedalpha: false });
14639  }
14640  var smaskVertexShaderCode = '\
14641  attribute vec2 a_position;                                    \
14642  attribute vec2 a_texCoord;                                    \
14643                                                                \
14644  uniform vec2 u_resolution;                                    \
14645                                                                \
14646  varying vec2 v_texCoord;                                      \
14647                                                                \
14648  void main() {                                                 \
14649    vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0;   \
14650    gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);          \
14651                                                                \
14652    v_texCoord = a_texCoord;                                    \
14653  }                                                             ';
14654  var smaskFragmentShaderCode = '\
14655  precision mediump float;                                      \
14656                                                                \
14657  uniform vec4 u_backdrop;                                      \
14658  uniform int u_subtype;                                        \
14659  uniform sampler2D u_image;                                    \
14660  uniform sampler2D u_mask;                                     \
14661                                                                \
14662  varying vec2 v_texCoord;                                      \
14663                                                                \
14664  void main() {                                                 \
14665    vec4 imageColor = texture2D(u_image, v_texCoord);           \
14666    vec4 maskColor = texture2D(u_mask, v_texCoord);             \
14667    if (u_backdrop.a > 0.0) {                                   \
14668      maskColor.rgb = maskColor.rgb * maskColor.a +             \
14669                      u_backdrop.rgb * (1.0 - maskColor.a);     \
14670    }                                                           \
14671    float lum;                                                  \
14672    if (u_subtype == 0) {                                       \
14673      lum = maskColor.a;                                        \
14674    } else {                                                    \
14675      lum = maskColor.r * 0.3 + maskColor.g * 0.59 +            \
14676            maskColor.b * 0.11;                                 \
14677    }                                                           \
14678    imageColor.a *= lum;                                        \
14679    imageColor.rgb *= imageColor.a;                             \
14680    gl_FragColor = imageColor;                                  \
14681  }                                                             ';
14682  var smaskCache = null;
14683  function initSmaskGL() {
14684    var canvas, gl;
14685    generateGL();
14686    canvas = currentCanvas;
14687    currentCanvas = null;
14688    gl = currentGL;
14689    currentGL = null;
14690    var vertexShader = createVertexShader(gl, smaskVertexShaderCode);
14691    var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);
14692    var program = createProgram(gl, [vertexShader, fragmentShader]);
14693    gl.useProgram(program);
14694    var cache = {};
14695    cache.gl = gl;
14696    cache.canvas = canvas;
14697    cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
14698    cache.positionLocation = gl.getAttribLocation(program, 'a_position');
14699    cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');
14700    cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');
14701    var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');
14702    var texLayerLocation = gl.getUniformLocation(program, 'u_image');
14703    var texMaskLocation = gl.getUniformLocation(program, 'u_mask');
14704    var texCoordBuffer = gl.createBuffer();
14705    gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
14706    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);
14707    gl.enableVertexAttribArray(texCoordLocation);
14708    gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);
14709    gl.uniform1i(texLayerLocation, 0);
14710    gl.uniform1i(texMaskLocation, 1);
14711    smaskCache = cache;
14712  }
14713  function composeSMask(layer, mask, properties) {
14714    var width = layer.width,
14715        height = layer.height;
14716    if (!smaskCache) {
14717      initSmaskGL();
14718    }
14719    var cache = smaskCache,
14720        canvas = cache.canvas,
14721        gl = cache.gl;
14722    canvas.width = width;
14723    canvas.height = height;
14724    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
14725    gl.uniform2f(cache.resolutionLocation, width, height);
14726    if (properties.backdrop) {
14727      gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);
14728    } else {
14729      gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);
14730    }
14731    gl.uniform1i(cache.subtypeLocation, properties.subtype === 'Luminosity' ? 1 : 0);
14732    var texture = createTexture(gl, layer, gl.TEXTURE0);
14733    var maskTexture = createTexture(gl, mask, gl.TEXTURE1);
14734    var buffer = gl.createBuffer();
14735    gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
14736    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW);
14737    gl.enableVertexAttribArray(cache.positionLocation);
14738    gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
14739    gl.clearColor(0, 0, 0, 0);
14740    gl.enable(gl.BLEND);
14741    gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
14742    gl.clear(gl.COLOR_BUFFER_BIT);
14743    gl.drawArrays(gl.TRIANGLES, 0, 6);
14744    gl.flush();
14745    gl.deleteTexture(texture);
14746    gl.deleteTexture(maskTexture);
14747    gl.deleteBuffer(buffer);
14748    return canvas;
14749  }
14750  var figuresVertexShaderCode = '\
14751  attribute vec2 a_position;                                    \
14752  attribute vec3 a_color;                                       \
14753                                                                \
14754  uniform vec2 u_resolution;                                    \
14755  uniform vec2 u_scale;                                         \
14756  uniform vec2 u_offset;                                        \
14757                                                                \
14758  varying vec4 v_color;                                         \
14759                                                                \
14760  void main() {                                                 \
14761    vec2 position = (a_position + u_offset) * u_scale;          \
14762    vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0;     \
14763    gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);          \
14764                                                                \
14765    v_color = vec4(a_color / 255.0, 1.0);                       \
14766  }                                                             ';
14767  var figuresFragmentShaderCode = '\
14768  precision mediump float;                                      \
14769                                                                \
14770  varying vec4 v_color;                                         \
14771                                                                \
14772  void main() {                                                 \
14773    gl_FragColor = v_color;                                     \
14774  }                                                             ';
14775  var figuresCache = null;
14776  function initFiguresGL() {
14777    var canvas, gl;
14778    generateGL();
14779    canvas = currentCanvas;
14780    currentCanvas = null;
14781    gl = currentGL;
14782    currentGL = null;
14783    var vertexShader = createVertexShader(gl, figuresVertexShaderCode);
14784    var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);
14785    var program = createProgram(gl, [vertexShader, fragmentShader]);
14786    gl.useProgram(program);
14787    var cache = {};
14788    cache.gl = gl;
14789    cache.canvas = canvas;
14790    cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
14791    cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');
14792    cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');
14793    cache.positionLocation = gl.getAttribLocation(program, 'a_position');
14794    cache.colorLocation = gl.getAttribLocation(program, 'a_color');
14795    figuresCache = cache;
14796  }
14797  function drawFigures(width, height, backgroundColor, figures, context) {
14798    if (!figuresCache) {
14799      initFiguresGL();
14800    }
14801    var cache = figuresCache,
14802        canvas = cache.canvas,
14803        gl = cache.gl;
14804    canvas.width = width;
14805    canvas.height = height;
14806    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
14807    gl.uniform2f(cache.resolutionLocation, width, height);
14808    var count = 0;
14809    var i, ii, rows;
14810    for (i = 0, ii = figures.length; i < ii; i++) {
14811      switch (figures[i].type) {
14812        case 'lattice':
14813          rows = figures[i].coords.length / figures[i].verticesPerRow | 0;
14814          count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;
14815          break;
14816        case 'triangles':
14817          count += figures[i].coords.length;
14818          break;
14819      }
14820    }
14821    var coords = new Float32Array(count * 2);
14822    var colors = new Uint8Array(count * 3);
14823    var coordsMap = context.coords,
14824        colorsMap = context.colors;
14825    var pIndex = 0,
14826        cIndex = 0;
14827    for (i = 0, ii = figures.length; i < ii; i++) {
14828      var figure = figures[i],
14829          ps = figure.coords,
14830          cs = figure.colors;
14831      switch (figure.type) {
14832        case 'lattice':
14833          var cols = figure.verticesPerRow;
14834          rows = ps.length / cols | 0;
14835          for (var row = 1; row < rows; row++) {
14836            var offset = row * cols + 1;
14837            for (var col = 1; col < cols; col++, offset++) {
14838              coords[pIndex] = coordsMap[ps[offset - cols - 1]];
14839              coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];
14840              coords[pIndex + 2] = coordsMap[ps[offset - cols]];
14841              coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];
14842              coords[pIndex + 4] = coordsMap[ps[offset - 1]];
14843              coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];
14844              colors[cIndex] = colorsMap[cs[offset - cols - 1]];
14845              colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];
14846              colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];
14847              colors[cIndex + 3] = colorsMap[cs[offset - cols]];
14848              colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];
14849              colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];
14850              colors[cIndex + 6] = colorsMap[cs[offset - 1]];
14851              colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];
14852              colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];
14853              coords[pIndex + 6] = coords[pIndex + 2];
14854              coords[pIndex + 7] = coords[pIndex + 3];
14855              coords[pIndex + 8] = coords[pIndex + 4];
14856              coords[pIndex + 9] = coords[pIndex + 5];
14857              coords[pIndex + 10] = coordsMap[ps[offset]];
14858              coords[pIndex + 11] = coordsMap[ps[offset] + 1];
14859              colors[cIndex + 9] = colors[cIndex + 3];
14860              colors[cIndex + 10] = colors[cIndex + 4];
14861              colors[cIndex + 11] = colors[cIndex + 5];
14862              colors[cIndex + 12] = colors[cIndex + 6];
14863              colors[cIndex + 13] = colors[cIndex + 7];
14864              colors[cIndex + 14] = colors[cIndex + 8];
14865              colors[cIndex + 15] = colorsMap[cs[offset]];
14866              colors[cIndex + 16] = colorsMap[cs[offset] + 1];
14867              colors[cIndex + 17] = colorsMap[cs[offset] + 2];
14868              pIndex += 12;
14869              cIndex += 18;
14870            }
14871          }
14872          break;
14873        case 'triangles':
14874          for (var j = 0, jj = ps.length; j < jj; j++) {
14875            coords[pIndex] = coordsMap[ps[j]];
14876            coords[pIndex + 1] = coordsMap[ps[j] + 1];
14877            colors[cIndex] = colorsMap[cs[j]];
14878            colors[cIndex + 1] = colorsMap[cs[j] + 1];
14879            colors[cIndex + 2] = colorsMap[cs[j] + 2];
14880            pIndex += 2;
14881            cIndex += 3;
14882          }
14883          break;
14884      }
14885    }
14886    if (backgroundColor) {
14887      gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);
14888    } else {
14889      gl.clearColor(0, 0, 0, 0);
14890    }
14891    gl.clear(gl.COLOR_BUFFER_BIT);
14892    var coordsBuffer = gl.createBuffer();
14893    gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);
14894    gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);
14895    gl.enableVertexAttribArray(cache.positionLocation);
14896    gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
14897    var colorsBuffer = gl.createBuffer();
14898    gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);
14899    gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);
14900    gl.enableVertexAttribArray(cache.colorLocation);
14901    gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0);
14902    gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);
14903    gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);
14904    gl.drawArrays(gl.TRIANGLES, 0, count);
14905    gl.flush();
14906    gl.deleteBuffer(coordsBuffer);
14907    gl.deleteBuffer(colorsBuffer);
14908    return canvas;
14909  }
14910  return {
14911    tryInitGL: function tryInitGL() {
14912      try {
14913        generateGL();
14914        return !!currentGL;
14915      } catch (ex) {}
14916      return false;
14917    },
14918
14919    composeSMask: composeSMask,
14920    drawFigures: drawFigures,
14921    cleanup: function cleanup() {
14922      if (smaskCache && smaskCache.canvas) {
14923        smaskCache.canvas.width = 0;
14924        smaskCache.canvas.height = 0;
14925      }
14926      if (figuresCache && figuresCache.canvas) {
14927        figuresCache.canvas.width = 0;
14928        figuresCache.canvas.height = 0;
14929      }
14930      smaskCache = null;
14931      figuresCache = null;
14932    }
14933  };
14934}();
14935exports.WebGLContext = WebGLContext;
14936
14937/***/ }),
14938/* 145 */
14939/***/ (function(module, exports, __w_pdfjs_require__) {
14940
14941"use strict";
14942
14943
14944Object.defineProperty(exports, "__esModule", {
14945  value: true
14946});
14947exports.renderTextLayer = undefined;
14948
14949var _util = __w_pdfjs_require__(1);
14950
14951var _global_scope = __w_pdfjs_require__(3);
14952
14953var _global_scope2 = _interopRequireDefault(_global_scope);
14954
14955function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14956
14957var renderTextLayer = function renderTextLayerClosure() {
14958  var MAX_TEXT_DIVS_TO_RENDER = 100000;
14959  var NonWhitespaceRegexp = /\S/;
14960  function isAllWhitespace(str) {
14961    return !NonWhitespaceRegexp.test(str);
14962  }
14963  var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';'];
14964  function appendText(task, geom, styles) {
14965    var textDiv = document.createElement('div');
14966    var textDivProperties = {
14967      style: null,
14968      angle: 0,
14969      canvasWidth: 0,
14970      isWhitespace: false,
14971      originalTransform: null,
14972      paddingBottom: 0,
14973      paddingLeft: 0,
14974      paddingRight: 0,
14975      paddingTop: 0,
14976      scale: 1
14977    };
14978    task._textDivs.push(textDiv);
14979    if (isAllWhitespace(geom.str)) {
14980      textDivProperties.isWhitespace = true;
14981      task._textDivProperties.set(textDiv, textDivProperties);
14982      return;
14983    }
14984    var tx = _util.Util.transform(task._viewport.transform, geom.transform);
14985    var angle = Math.atan2(tx[1], tx[0]);
14986    var style = styles[geom.fontName];
14987    if (style.vertical) {
14988      angle += Math.PI / 2;
14989    }
14990    var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
14991    var fontAscent = fontHeight;
14992    if (style.ascent) {
14993      fontAscent = style.ascent * fontAscent;
14994    }
14994 else if (style.descent) {
14995      fontAscent = (1 + style.descent) * fontAscent;
14996    }
14997    var left;
14998    var top;
14999    if (angle === 0) {
15000      left = tx[4];
15001      top = tx[5] - fontAscent;
15002    } else {
15003      left = tx[4] + fontAscent * Math.sin(angle);
15004      top = tx[5] - fontAscent * Math.cos(angle);
15005    }
15006    styleBuf[1] = left;
15007    styleBuf[3] = top;
15008    styleBuf[5] = fontHeight;
15009    styleBuf[7] = style.fontFamily;
15010    textDivProperties.style = styleBuf.join('');
15011    textDiv.setAttribute('style', textDivProperties.style);
15012    textDiv.textContent = geom.str;
15013    if (task._fontInspectorEnabled) {
15014      textDiv.dataset.fontName = geom.fontName;
15015    }
15016    if (angle !== 0) {
15017      textDivProperties.angle = angle * (180 / Math.PI);
15018    }
15019    if (geom.str.length > 1) {
15020      if (style.vertical) {
15021        textDivProperties.canvasWidth = geom.height * task._viewport.scale;
15022      } else {
15023        textDivProperties.canvasWidth = geom.width * task._viewport.scale;
15024      }
15025    }
15026    task._textDivProperties.set(textDiv, textDivProperties);
15027    if (task._textContentStream) {
15028      task._layoutText(textDiv);
15029    }
15030    if (task._enhanceTextSelection) {
15031      var angleCos = 1,
15032          angleSin = 0;
15033      if (angle !== 0) {
15034        angleCos = Math.cos(angle);
15035        angleSin = Math.sin(angle);
15036      }
15037      var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
15038      var divHeight = fontHeight;
15039      var m, b;
15040      if (angle !== 0) {
15041        m = [angleCos, angleSin, -angleSin, angleCos, left, top];
15042        b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);
15043      } else {
15044        b = [left, top, left + divWidth, top + divHeight];
15045      }
15046      task._bounds.push({
15047        left: b[0],
15048        top: b[1],
15049        right: b[2],
15050        bottom: b[3],
15051        div: textDiv,
15052        size: [divWidth, divHeight],
15053        m: m
15054      });
15055    }
15056  }
15057  function render(task) {
15058    if (task._canceled) {
15059      return;
15060    }
15061    var textDivs = task._textDivs;
15062    var capability = task._capability;
15063    var textDivsLength = textDivs.length;
15064    if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
15065      task._renderingDone = true;
15066      capability.resolve();
15067      return;
15068    }
15069    if (!task._textContentStream) {
15070      for (var i = 0; i < textDivsLength; i++) {
15071        task._layoutText(textDivs[i]);
15072      }
15073    }
15074    task._renderingDone = true;
15075    capability.resolve();
15076  }
15077  function expand(task) {
15078    var bounds = task._bounds;
15079    var viewport = task._viewport;
15080    var expanded = expandBounds(viewport.width, viewport.height, bounds);
15081    for (var i = 0; i < expanded.length; i++) {
15082      var div = bounds[i].div;
15083      var divProperties = task._textDivProperties.get(div);
15084      if (divProperties.angle === 0) {
15085        divProperties.paddingLeft = bounds[i].left - expanded[i].left;
15086        divProperties.paddingTop = bounds[i].top - expanded[i].top;
15087        divProperties.paddingRight = expanded[i].right - bounds[i].right;
15088        divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;
15089        task._textDivProperties.set(div, divProperties);
15090        continue;
15091      }
15092      var e = expanded[i],
15093          b = bounds[i];
15094      var m = b.m,
15095          c = m[0],
15096          s = m[1];
15097      var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];
15098      var ts = new Float64Array(64);
15099      points.forEach(function (p, i) {
15100        var t = _util.Util.applyTransform(p, m);
15101        ts[i + 0] = c && (e.left - t[0]) / c;
15102        ts[i + 4] = s && (e.top - t[1]) / s;
15103        ts[i + 8] = c && (e.right - t[0]) / c;
15104        ts[i + 12] = s && (e.bottom - t[1]) / s;
15105        ts[i + 16] = s && (e.left - t[0]) / -s;
15106        ts[i + 20] = c && (e.top - t[1]) / c;
15107        ts[i + 24] = s && (e.right - t[0]) / -s;
15108        ts[i + 28] = c && (e.bottom - t[1]) / c;
15109        ts[i + 32] = c && (e.left - t[0]) / -c;
15110        ts[i + 36] = s && (e.top - t[1]) / -s;
15111        ts[i + 40] = c && (e.right - t[0]) / -c;
15112        ts[i + 44] = s && (e.bottom - t[1]) / -s;
15113        ts[i + 48] = s && (e.left - t[0]) / s;
15114        ts[i + 52] = c && (e.top - t[1]) / -c;
15115        ts[i + 56] = s && (e.right - t[0]) / s;
15116        ts[i + 60] = c && (e.bottom - t[1]) / -c;
15117      });
15118      var findPositiveMin = function findPositiveMin(ts, offset, count) {
15119        var result = 0;
15120        for (var i = 0; i < count; i++) {
15121          var t = ts[offset++];
15122          if (t > 0) {
15123            result = result ? Math.min(t, result) : t;
15124          }
15125        }
15126        return result;
15127      };
15128      var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
15129      divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
15130      divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
15131      divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
15132      divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;
15133      task._textDivProperties.set(div, divProperties);
15134    }
15135  }
15136  function expandBounds(width, height, boxes) {
15137    var bounds = boxes.map(function (box, i) {
15138      return {
15139        x1: box.left,
15140        y1: box.top,
15141        x2: box.right,
15142        y2: box.bottom,
15143        index: i,
15144        x1New: undefined,
15145        x2New: undefined
15146      };
15147    });
15148    expandBoundsLTR(width, bounds);
15149    var expanded = new Array(boxes.length);
15150    bounds.forEach(function (b) {
15151      var i = b.index;
15152      expanded[i] = {
15153        left: b.x1New,
15154        top: 0,
15155        right: b.x2New,
15156        bottom: 0
15157      };
15158    });
15159    boxes.map(function (box, i) {
15160      var e = expanded[i],
15161          b = bounds[i];
15162      b.x1 = box.top;
15163      b.y1 = width - e.right;
15164      b.x2 = box.bottom;
15165      b.y2 = width - e.left;
15166      b.index = i;
15167      b.x1New = undefined;
15168      b.x2New = undefined;
15169    });
15170    expandBoundsLTR(height, bounds);
15171    bounds.forEach(function (b) {
15172      var i = b.index;
15173      expanded[i].top = b.x1New;
15174      expanded[i].bottom = b.x2New;
15175    });
15176    return expanded;
15177  }
15178  function expandBoundsLTR(width, bounds) {
15179    bounds.sort(function (a, b) {
15180      return a.x1 - b.x1 || a.index - b.index;
15181    });
15182    var fakeBoundary = {
15183      x1: -Infinity,
15184      y1: -Infinity,
15185      x2: 0,
15186      y2: Infinity,
15187      index: -1,
15188      x1New: 0,
15189      x2New: 0
15190    };
15191    var horizon = [{
15192      start: -Infinity,
15193      end: Infinity,
15194      boundary: fakeBoundary
15195    }];
15196    bounds.forEach(function (boundary) {
15197      var i = 0;
15198      while (i < horizon.length && horizon[i].end <= boundary.y1) {
15199        i++;
15200      }
15201      var j = horizon.length - 1;
15202      while (j >= 0 && horizon[j].start >= boundary.y2) {
15203        j--;
15204      }
15205      var horizonPart, affectedBoundary;
15206      var q,
15207          k,
15208          maxXNew = -Infinity;
15209      for (q = i; q <= j; q++) {
15210        horizonPart = horizon[q];
15211        affectedBoundary = horizonPart.boundary;
15212        var xNew;
15213        if (affectedBoundary.x2 > boundary.x1) {
15214          xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
15215        } else if (affectedBoundary.x2New === undefined) {
15216          xNew = (affectedBoundary.x2 + boundary.x1) / 2;
15217        } else {
15218          xNew = affectedBoundary.x2New;
15219        }
15220        if (xNew > maxXNew) {
15221          maxXNew = xNew;
15222        }
15223      }
15224      boundary.x1New = maxXNew;
15225      for (q = i; q <= j; q++) {
15226        horizonPart = horizon[q];
15227        affectedBoundary = horizonPart.boundary;
15228        if (affectedBoundary.x2New === undefined) {
15229          if (affectedBoundary.x2 > boundary.x1) {
15230            if (affectedBoundary.index > boundary.index) {
15231              affectedBoundary.x2New = affectedBoundary.x2;
15232            }
15233          } else {
15234            affectedBoundary.x2New = maxXNew;
15235          }
15236        } else if (affectedBoundary.x2New > maxXNew) {
15237          affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);
15238        }
15239      }
15240      var changedHorizon = [],
15241          lastBoundary = null;
15242      for (q = i; q <= j; q++) {
15243        horizonPart = horizon[q];
15244        affectedBoundary = horizonPart.boundary;
15245        var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
15246        if (lastBoundary === useBoundary) {
15247          changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
15248        } else {
15249          changedHorizon.push({
15250            start: horizonPart.start,
15251            end: horizonPart.end,
15252            boundary: useBoundary
15253          });
15254          lastBoundary = useBoundary;
15255        }
15256      }
15257      if (horizon[i].start < boundary.y1) {
15258        changedHorizon[0].start = boundary.y1;
15259        changedHorizon.unshift({
15260          start: horizon[i].start,
15261          end: boundary.y1,
15262          boundary: horizon[i].boundary
15263        });
15264      }
15265      if (boundary.y2 < horizon[j].end) {
15266        changedHorizon[changedHorizon.length - 1].end = boundary.y2;
15267        changedHorizon.push({
15268          start: boundary.y2,
15269          end: horizon[j].end,
15270          boundary: horizon[j].boundary
15271        });
15272      }
15273      for (q = i; q <= j; q++) {
15274        horizonPart = horizon[q];
15275        affectedBoundary = horizonPart.boundary;
15276        if (affectedBoundary.x2New !== undefined) {
15277          continue;
15278        }
15279        var used = false;
15280        for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
15281          used = horizon[k].boundary === affectedBoundary;
15282        }
15283        for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {
15284          used = horizon[k].boundary === affectedBoundary;
15285        }
15286        for (k = 0; !used && k < changedHorizon.length; k++) {
15287          used = changedHorizon[k].boundary === affectedBoundary;
15288        }
15289        if (!used) {
15290          affectedBoundary.x2New = maxXNew;
15291        }
15292      }
15293      Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));
15294    });
15295    horizon.forEach(function (horizonPart) {
15296      var affectedBoundary = horizonPart.boundary;
15297      if (affectedBoundary.x2New === undefined) {
15298        affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
15299      }
15300    });
15301  }
15302  function TextLayerRenderTask(_ref) {
15303    var textContent = _ref.textContent,
15304        textContentStream = _ref.textContentStream,
15305        container = _ref.container,
15306        viewport = _ref.viewport,
15307        textDivs = _ref.textDivs,
15308        textContentItemsStr = _ref.textContentItemsStr,
15309        enhanceTextSelection = _ref.enhanceTextSelection;
15310
15311    this._textContent = textContent;
15312    this._textContentStream = textContentStream;
15313    this._container = container;
15314    this._viewport = viewport;
15315    this._textDivs = textDivs || [];
15316    this._textContentItemsStr = textContentItemsStr || [];
15317    this._enhanceTextSelection = !!enhanceTextSelection;
15318    this._fontInspectorEnabled = !!(_global_scope2.default.FontInspector && _global_scope2.default.FontInspector.enabled);
15319    this._reader = null;
15320    this._layoutTextLastFontSize = null;
15321    this._layoutTextLastFontFamily = null;
15322    this._layoutTextCtx = null;
15323    this._textDivProperties = new WeakMap();
15324    this._renderingDone = false;
15325    this._canceled = false;
15326    this._capability = (0, _util.createPromiseCapability)();
15327    this._renderTimer = null;
15328    this._bounds = [];
15329  }
15330  TextLayerRenderTask.prototype = {
15331    get promise() {
15332      return this._capability.promise;
15333    },
15334    cancel: function TextLayer_cancel() {
15335      if (this._reader) {
15336        this._reader.cancel(new _util.AbortException('text layer task cancelled'));
15337        this._reader = null;
15338      }
15339      this._canceled = true;
15340      if (this._renderTimer !== null) {
15341        clearTimeout(this._renderTimer);
15342        this._renderTimer = null;
15343      }
15344      this._capability.reject('canceled');
15345    },
15346    _processItems: function _processItems(items, styleCache) {
15347      for (var i = 0, len = items.length; i < len; i++) {
15348        this._textContentItemsStr.push(items[i].str);
15349        appendText(this, items[i], styleCache);
15350      }
15351    },
15352    _layoutText: function _layoutText(textDiv) {
15353      var textLayerFrag = this._container;
15354      var textDivProperties = this._textDivProperties.get(textDiv);
15355      if (textDivProperties.isWhitespace) {
15356        return;
15357      }
15358      var fontSize = textDiv.style.fontSize;
15359      var fontFamily = textDiv.style.fontFamily;
15360      if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {
15361        this._layoutTextCtx.font = fontSize + ' ' + fontFamily;
15362        this._layoutTextLastFontSize = fontSize;
15363        this._layoutTextLastFontFamily = fontFamily;
15364      }
15365      var width = this._layoutTextCtx.measureText(textDiv.textContent).width;
15366      var transform = '';
15367      if (textDivProperties.canvasWidth !== 0 && width > 0) {
15368        textDivProperties.scale = textDivProperties.canvasWidth / width;
15369        transform = 'scaleX(' + textDivProperties.scale + ')';
15370      }
15371      if (textDivProperties.angle !== 0) {
15372        transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform;
15373      }
15374      if (transform !== '') {
15375        textDivProperties.originalTransform = transform;
15376        textDiv.style.transform = transform;
15377      }
15378      this._textDivProperties.set(textDiv, textDivProperties);
15379      textLayerFrag.appendChild(textDiv);
15380    },
15381
15382    _render: function TextLayer_render(timeout) {
15383      var _this = this;
15384
15385      var capability = (0, _util.createPromiseCapability)();
15386      var styleCache = Object.create(null);
15387      var canvas = document.createElement('canvas');
15388      canvas.mozOpaque = true;
15389      this._layoutTextCtx = canvas.getContext('2d', { alpha: false });
15390      if (this._textContent) {
15391        var textItems = this._textContent.items;
15392        var textStyles = this._textContent.styles;
15393        this._processItems(textItems, textStyles);
15394        capability.resolve();
15395      } else if (this._textContentStream) {
15396        var pump = function pump() {
15397          _this._reader.read().then(function (_ref2) {
15398            var value = _ref2.value,
15399                done = _ref2.done;
15400
15401            if (done) {
15402              capability.resolve();
15403              return;
15404            }
15405            Object.assign(styleCache, value.styles);
15406            _this._processItems(value.items, styleCache);
15407            pump();
15408          }, capability.reject);
15409        };
15410        this._reader = this._textContentStream.getReader();
15411        pump();
15412      } else {
15413        throw new Error('Neither "textContent" nor "textContentStream"' + ' parameters specified.');
15414      }
15415      capability.promise.then(function () {
15416        styleCache = null;
15417        if (!timeout) {
15418          render(_this);
15419        } else {
15420          _this._renderTimer = setTimeout(function () {
15421            render(_this);
15422            _this._renderTimer = null;
15423          }, timeout);
15424        }
15425      }, this._capability.reject);
15426    },
15427    expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {
15428      if (!this._enhanceTextSelection || !this._renderingDone) {
15429        return;
15430      }
15431      if (this._bounds !== null) {
15432        expand(this);
15433        this._bounds = null;
15434      }
15435      for (var i = 0, ii = this._textDivs.length; i < ii; i++) {
15436        var div = this._textDivs[i];
15437        var divProperties = this._textDivProperties.get(div);
15438        if (divProperties.isWhitespace) {
15439          continue;
15440        }
15441        if (expandDivs) {
15442          var transform = '',
15443              padding = '';
15444          if (divProperties.scale !== 1) {
15445            transform = 'scaleX(' + divProperties.scale + ')';
15446          }
15447          if (divProperties.angle !== 0) {
15448            transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;
15449          }
15450          if (divProperties.paddingLeft !== 0) {
15451            padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;';
15452            transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)';
15453          }
15454          if (divProperties.paddingTop !== 0) {
15455            padding += ' padding-top: ' + divProperties.paddingTop + 'px;';
15456            transform += ' translateY(' + -divProperties.paddingTop + 'px)';
15457          }
15458          if (divProperties.paddingRight !== 0) {
15459            padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;';
15460          }
15461          if (divProperties.paddingBottom !== 0) {
15462            padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;';
15463          }
15464          if (padding !== '') {
15465            div.setAttribute('style', divProperties.style + padding);
15466          }
15467          if (transform !== '') {
15468            div.style.transform = transform;
15469          }
15470        } else {
15471          div.style.padding = 0;
15472          div.style.transform = divProperties.originalTransform || '';
15473        }
15474      }
15475    }
15476  };
15477  function renderTextLayer(renderParameters) {
15478    var task = new TextLayerRenderTask({
15479      textContent: renderParameters.textContent,
15480      textContentStream: renderParameters.textContentStream,
15481      container: renderParameters.container,
15482      viewport: renderParameters.viewport,
15483      textDivs: renderParameters.textDivs,
15484      textContentItemsStr: renderParameters.textContentItemsStr,
15485      enhanceTextSelection: renderParameters.enhanceTextSelection
15486    });
15487    task._render(renderParameters.timeout);
15488    return task;
15489  }
15490  return renderTextLayer;
15491}();
15492exports.renderTextLayer = renderTextLayer;
15493
15494/***/ }),
15495/* 146 */
15496/***/ (function(module, exports, __w_pdfjs_require__) {
15497
15498"use strict";
15499
15500
15501Object.defineProperty(exports, "__esModule", {
15502  value: true
15503});
15504exports.AnnotationLayer = undefined;
15505
15506var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
15507
15508var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
15509
15510var _dom_utils = __w_pdfjs_require__(130);
15511
15512var _util = __w_pdfjs_require__(1);
15513
15514function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
15515
15516function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { c
15516onstructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
15517
15518function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15519
15520var AnnotationElementFactory = function () {
15521  function AnnotationElementFactory() {
15522    _classCallCheck(this, AnnotationElementFactory);
15523  }
15524
15525  _createClass(AnnotationElementFactory, null, [{
15526    key: 'create',
15527    value: function create(parameters) {
15528      var subtype = parameters.data.annotationType;
15529      switch (subtype) {
15530        case _util.AnnotationType.LINK:
15531          return new LinkAnnotationElement(parameters);
15532        case _util.AnnotationType.TEXT:
15533          return new TextAnnotationElement(parameters);
15534        case _util.AnnotationType.WIDGET:
15535          var fieldType = parameters.data.fieldType;
15536          switch (fieldType) {
15537            case 'Tx':
15538              return new TextWidgetAnnotationElement(parameters);
15539            case 'Btn':
15540              if (parameters.data.radioButton) {
15541                return new RadioButtonWidgetAnnotationElement(parameters);
15542              } else if (parameters.data.checkBox) {
15543                return new CheckboxWidgetAnnotationElement(parameters);
15544              }
15545              return new PushButtonWidgetAnnotationElement(parameters);
15546            case 'Ch':
15547              return new ChoiceWidgetAnnotationElement(parameters);
15548          }
15549          return new WidgetAnnotationElement(parameters);
15550        case _util.AnnotationType.POPUP:
15551          return new PopupAnnotationElement(parameters);
15552        case _util.AnnotationType.LINE:
15553          return new LineAnnotationElement(parameters);
15554        case _util.AnnotationType.SQUARE:
15555          return new SquareAnnotationElement(parameters);
15556        case _util.AnnotationType.CIRCLE:
15557          return new CircleAnnotationElement(parameters);
15558        case _util.AnnotationType.POLYLINE:
15559          return new PolylineAnnotationElement(parameters);
15560        case _util.AnnotationType.INK:
15561          return new InkAnnotationElement(parameters);
15562        case _util.AnnotationType.POLYGON:
15563          return new PolygonAnnotationElement(parameters);
15564        case _util.AnnotationType.HIGHLIGHT:
15565          return new HighlightAnnotationElement(parameters);
15566        case _util.AnnotationType.UNDERLINE:
15567          return new UnderlineAnnotationElement(parameters);
15568        case _util.AnnotationType.SQUIGGLY:
15569          return new SquigglyAnnotationElement(parameters);
15570        case _util.AnnotationType.STRIKEOUT:
15571          return new StrikeOutAnnotationElement(parameters);
15572        case _util.AnnotationType.STAMP:
15573          return new StampAnnotationElement(parameters);
15574        case _util.AnnotationType.FILEATTACHMENT:
15575          return new FileAttachmentAnnotationElement(parameters);
15576        default:
15577          return new AnnotationElement(parameters);
15578      }
15579    }
15580  }]);
15581
15582  return AnnotationElementFactory;
15583}();
15584
15585var AnnotationElement = function () {
15586  function AnnotationElement(parameters) {
15587    var isRenderable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
15588    var ignoreBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
15589
15590    _classCallCheck(this, AnnotationElement);
15591
15592    this.isRenderable = isRenderable;
15593    this.data = parameters.data;
15594    this.layer = parameters.layer;
15595    this.page = parameters.page;
15596    this.viewport = parameters.viewport;
15597    this.linkService = parameters.linkService;
15598    this.downloadManager = parameters.downloadManager;
15599    this.imageResourcesPath = parameters.imageResourcesPath;
15600    this.renderInteractiveForms = parameters.renderInteractiveForms;
15601    this.svgFactory = parameters.svgFactory;
15602    if (isRenderable) {
15603      this.container = this._createContainer(ignoreBorder);
15604    }
15605  }
15606
15607  _createClass(AnnotationElement, [{
15608    key: '_createContainer',
15609    value: function _createContainer() {
15610      var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
15611
15612      var data = this.data,
15613          page = this.page,
15614          viewport = this.viewport;
15615      var container = document.createElement('section');
15616      var width = data.rect[2] - data.rect[0];
15617      var height = data.rect[3] - data.rect[1];
15618      container.setAttribute('data-annotation-id', data.id);
15619      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]]);
15620      container.style.transform = 'matrix(' + viewport.transform.join(',') + ')';
15621      container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px';
15622      if (!ignoreBorder && data.borderStyle.width > 0) {
15623        container.style.borderWidth = data.borderStyle.width + 'px';
15624        if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {
15625          width = width - 2 * data.borderStyle.width;
15626          height = height - 2 * data.borderStyle.width;
15627        }
15628        var horizontalRadius = data.borderStyle.horizontalCornerRadius;
15629        var verticalRadius = data.borderStyle.verticalCornerRadius;
15630        if (horizontalRadius > 0 || verticalRadius > 0) {
15631          var radius = horizontalRadius + 'px / ' + verticalRadius + 'px';
15632          container.style.borderRadius = radius;
15633        }
15634        switch (data.borderStyle.style) {
15635          case _util.AnnotationBorderStyleType.SOLID:
15636            container.style.borderStyle = 'solid';
15637            break;
15638          case _util.AnnotationBorderStyleType.DASHED:
15639            container.style.borderStyle = 'dashed';
15640            break;
15641          case _util.AnnotationBorderStyleType.BEVELED:
15642            (0, _util.warn)('Unimplemented border style: beveled');
15643            break;
15644          case _util.AnnotationBorderStyleType.INSET:
15645            (0, _util.warn)('Unimplemented border style: inset');
15646            break;
15647          case _util.AnnotationBorderStyleType.UNDERLINE:
15648            container.style.borderBottomStyle = 'solid';
15649            break;
15650          default:
15651            break;
15652        }
15653        if (data.color) {
15654          container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
15655        } else {
15656          container.style.borderWidth = 0;
15657        }
15658      }
15659      container.style.left = rect[0] + 'px';
15660      container.style.top = rect[1] + 'px';
15661      container.style.width = width + 'px';
15662      container.style.height = height + 'px';
15663      return container;
15664    }
15665  }, {
15666    key: '_createPopup',
15667    value: function _createPopup(container, trigger, data) {
15668      if (!trigger) {
15669        trigger = document.createElement('div');
15670        trigger.style.height = container.style.height;
15671        trigger.style.width = container.style.width;
15672        container.appendChild(trigger);
15673      }
15674      var popupElement = new PopupElement({
15675        container: container,
15676        trigger: trigger,
15677        color: data.color,
15678        title: data.title,
15679        contents: data.contents,
15680        hideWrapper: true
15681      });
15682      var popup = popupElement.render();
15683      popup.style.left = container.style.width;
15684      container.appendChild(popup);
15685    }
15686  }, {
15687    key: 'render',
15688    value: function render() {
15689      (0, _util.unreachable)('Abstract method `AnnotationElement.render` called');
15690    }
15691  }]);
15692
15693  return AnnotationElement;
15694}();
15695
15696var LinkAnnotationElement = function (_AnnotationElement) {
15697  _inherits(LinkAnnotationElement, _AnnotationElement);
15698
15699  function LinkAnnotationElement(parameters) {
15700    _classCallCheck(this, LinkAnnotationElement);
15701
15702    var isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);
15703    return _possibleConstructorReturn(this, (LinkAnnotationElement.__proto__ || Object.getPrototypeOf(LinkAnnotationElement)).call(this, parameters, isRenderable));
15704  }
15705
15706  _createClass(LinkAnnotationElement, [{
15707    key: 'render',
15708    value: function render() {
15709      this.container.className = 'linkAnnotation';
15710      var data = this.data,
15711          linkService = this.linkService;
15712
15713      var link = document.createElement('a');
15714      (0, _dom_utils.addLinkAttributes)(link, {
15715        url: data.url,
15716        target: data.newWindow ? _dom_utils.LinkTarget.BLANK : linkService.externalLinkTarget,
15717        rel: linkService.externalLinkRel
15718      });
15719      if (!data.url) {
15720        if (data.action) {
15721          this._bindNamedAction(link, data.action);
15722        } else {
15723          this._bindLink(link, data.dest);
15724        }
15725      }
15726      this.container.appendChild(link);
15727      return this.container;
15728    }
15729  }, {
15730    key: '_bindLink',
15731    value: function _bindLink(link, destination) {
15732      var _this2 = this;
15733
15734      link.href = this.linkService.getDestinationHash(destination);
15735      link.onclick = function () {
15736        if (destination) {
15737          _this2.linkService.navigateTo(destination);
15738        }
15739        return false;
15740      };
15741      if (destination) {
15742        link.className = 'internalLink';
15743      }
15744    }
15745  }, {
15746    key: '_bindNamedAction',
15747    value: function _bindNamedAction(link, action) {
15748      var _this3 = this;
15749
15750      link.href = this.linkService.getAnchorUrl('');
15751      link.onclick = function () {
15752        _this3.linkService.executeNamedAction(action);
15753        return false;
15754      };
15755      link.className = 'internalLink';
15756    }
15757  }]);
15758
15759  return LinkAnnotationElement;
15760}(AnnotationElement);
15761
15762var TextAnnotationElement = function (_AnnotationElement2) {
15763  _inherits(TextAnnotationElement, _AnnotationElement2);
15764
15765  function TextAnnotationElement(parameters) {
15766    _classCallCheck(this, TextAnnotationElement);
15767
15768    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
15769    return _possibleConstructorReturn(this, (TextAnnotationElement.__proto__ || Object.getPrototypeOf(TextAnnotationElement)).call(this, parameters, isRenderable));
15770  }
15771
15772  _createClass(TextAnnotationElement, [{
15773    key: 'render',
15774    value: function render() {
15775      this.container.className = 'textAnnotation';
15776      var image = document.createElement('img');
15777      image.style.height = this.container.style.height;
15778      image.style.width = this.container.style.width;
15779      image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg';
15780      image.alt = '[{{type}} Annotation]';
15781      image.dataset.l10nId = 'text_annotation_type';
15782      image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });
15783      if (!this.data.hasPopup) {
15784        this._createPopup(this.container, image, this.data);
15785      }
15786      this.container.appendChild(image);
15787      return this.container;
15788    }
15789  }]);
15790
15791  return TextAnnotationElement;
15792}(AnnotationElement);
15793
15794var WidgetAnnotationElement = function (_AnnotationElement3) {
15795  _inherits(WidgetAnnotationElement, _AnnotationElement3);
15796
15797  function WidgetAnnotationElement() {
15798    _classCallCheck(this, WidgetAnnotationElement);
15799
15800    return _possibleConstructorReturn(this, (WidgetAnnotationElement.__proto__ || Object.getPrototypeOf(WidgetAnnotationElement)).apply(this, arguments));
15801  }
15802
15803  _createClass(WidgetAnnotationElement, [{
15804    key: 'render',
15805    value: function render() {
15806      return this.container;
15807    }
15808  }]);
15809
15810  return WidgetAnnotationElement;
15811}(AnnotationElement);
15812
15813var TextWidgetAnnotationElement = function (_WidgetAnnotationElem) {
15814  _inherits(TextWidgetAnnotationElement, _WidgetAnnotationElem);
15815
15816  function TextWidgetAnnotationElement(parameters) {
15817    _classCallCheck(this, TextWidgetAnnotationElement);
15818
15819    var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
15820    return _possibleConstructorReturn(this, (TextWidgetAnnotationElement.__proto__ || Object.getPrototypeOf(TextWidgetAnnotationElement)).call(this, parameters, isRenderable));
15821  }
15822
15823  _createClass(TextWidgetAnnotationElement, [{
15824    key: 'render',
15825    value: function render() {
15826      var TEXT_ALIGNMENT = ['left', 'center', 'right'];
15827      this.container.className = 'textWidgetAnnotation';
15828      var element = null;
15829      if (this.renderInteractiveForms) {
15830        if (this.data.multiLine) {
15831          element = document.createElement('textarea');
15832          element.textContent = this.data.fieldValue;
15833        } else {
15834          element = document.createElement('input');
15835          element.type = 'text';
15836          element.setAttribute('value', this.data.fieldValue);
15837        }
15838        element.disabled = this.data.readOnly;
15839        if (this.data.maxLen !== null) {
15840          element.maxLength = this.data.maxLen;
15841        }
15842        if (this.data.comb) {
15843          var fieldWidth = this.data.rect[2] - this.data.rect[0];
15844          var combWidth = fieldWidth / this.data.maxLen;
15845          element.classList.add('comb');
15846          element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';
15847        }
15848      } else {
15849        element = document.createElement('div');
15850        element.textContent = this.data.fieldValue;
15851        element.style.verticalAlign = 'middle';
15852        element.style.display = 'table-cell';
15853        var font = null;
15854        if (this.data.fontRefName) {
15855          font = this.page.commonObjs.getData(this.data.fontRefName);
15856        }
15857        this._setTextStyle(element, font);
15858      }
15859      if (this.data.textAlignment !== null) {
15860        element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
15861      }
15862      this.container.appendChild(element);
15863      return this.container;
15864    }
15865  }, {
15866    key: '_setTextStyle',
15867    value: function _setTextStyle(element, font) {
15868      var style = element.style;
15869      style.fontSize = this.data.fontSize + 'px';
15870      style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr';
15871      if (!font) {
15872        return;
15873      }
15874      style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal';
15875      style.fontStyle = font.italic ? 'italic' : 'normal';
15876      var fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : '';
15877      var fallbackName = font.fallbackName || 'Helvetica, sans-serif';
15878      style.fontFamily = fontFamily + fallbackName;
15879    }
15880  }]);
15881
15882  return TextWidgetAnnotationElement;
15883}(WidgetAnnotationElement);
15884
15885var CheckboxWidgetAnnotationElement = function (_WidgetAnnotationElem2) {
15886  _inherits(CheckboxWidgetAnnotationElement, _WidgetAnnotationElem2);
15887
15888  function CheckboxWidgetAnnotationElement(parameters) {
15889    _classCallCheck(this, CheckboxWidgetAnnotationElement);
15890
15891    return _possibleConstructorReturn(this, (CheckboxWidgetAnnotationElement.__proto__ || Object.getPrototypeOf(CheckboxWidgetAnnotationElement)).call(this, parameters, parameters.renderInteractiveForms));
15892  }
15893
15894  _createClass(CheckboxWidgetAnnotationElement, [{
15895    key: 'render',
15896    value: function render() {
15897      this.container.className = 'buttonWidgetAnnotation checkBox';
15898      var element = document.createElement('input');
15899      element.disabled = this.data.readOnly;
15900      element.type = 'checkbox';
15901      if (this.data.fieldValue && this.data.fieldValue !== 'Off') {
15902        element.setAttribute('checked', true);
15903      }
15904      this.container.appendChild(element);
15905      return this.container;
15906    }
15907  }]);
15908
15909  return CheckboxWidgetAnnotationElement;
15910}(WidgetAnnotationElement);
15911
15912var RadioButtonWidgetAnnotationElement = function (_WidgetAnnotationElem3) {
15913  _inherits(RadioButtonWidgetAnnotationElement, _WidgetAnnotationElem3);
15914
15915  function RadioButtonWidgetAnnotationElement(parameters) {
15916    _classCallCheck(this, RadioButtonWidgetAnnotationElement);
15917
15918    return _possibleConstructorReturn(this, (RadioButtonWidgetAnnotationElement.__proto__ || Object.getPrototypeOf(RadioButtonWidgetAnnotationElement)).call(this, parameters, parameters.renderInteractiveForms));
15919  }
15920
15921  _createClass(RadioButtonWidgetAnnotationElement, [{
15922    key: 'render',
15923    value: function render() {
15924      this.container.className = 'buttonWidgetAnnotation radioButton';
15925      var element = document.createElement('input');
15926      element.disabled = this.data.readOnly;
15927      element.type = 'radio';
15928      element.name = this.data.fieldName;
15929      if (this.data.fieldValue === this.data.buttonValue) {
15930        element.setAttribute('checked', true);
15931      }
15932      this.container.appendChild(element);
15933      return this.container;
15934    }
15935  }]);
15936
15937  return RadioButtonWidgetAnnotationElement;
15938}(WidgetAnnotationElement);
15939
15940var PushButtonWidgetAnnotationElement = function (_LinkAnnotationElemen) {
15941  _inherits(PushButtonWidgetAnnotationElement, _LinkAnnotationElemen);
15942
15943  function PushButtonWidgetAnnotationElement() {
15944    _classCallCheck(this, PushButtonWidgetAnnotationElement);
15945
15946    return _possibleConstructorReturn(this, (PushButtonWidgetAnnotationElement.__proto__ || Object.getPrototypeOf(PushButtonWidgetAnnotationElement)).apply(this, arguments));
15947  }
15948
15949  _createClass(PushButtonWidgetAnnotationElement, [{
15950    key: 'render',
15951    value: function render() {
15952      var container = _get(PushButtonWidgetAnnotationElement.prototype.__proto__ || Object.getPrototypeOf(PushButtonWidgetAnnotationElement.prototype), 'render', this).call(this);
15953      container.className = 'buttonWidgetAnnotation pushButton';
15954      return container;
15955    }
15956  }]);
15957
15958  return PushButtonWidgetAnnotationElement;
15959}(LinkAnnotationElement);
15960
15961var ChoiceWidgetAnnotationElement = function (_WidgetAnnotationElem4) {
15962  _inherits(ChoiceWidgetAnnotationElement, _WidgetAnnotationElem4);
15963
15964  function ChoiceWidgetAnnotationElement(parameters) {
15965    _classCallCheck(this, ChoiceWidgetAnnotationElement);
15966
15967    return _possibleConstructorReturn(this, (ChoiceWidgetAnnotationElement.__proto__ || Object.getPrototypeOf(ChoiceWidgetAnnotationElement)).call(this, parameters, parameters.renderInteractiveForms));
15968  }
15969
15970  _createClass(ChoiceWidgetAnnotationElement, [{
15971    key: 'render',
15972    value: function render() {
15973      this.container.className = 'choiceWidgetAnnotation';
15974      var selectElement = document.createElement('select');
15975      selectElement.disabled = this.data.readOnly;
15976      if (!this.data.combo) {
15977        selectElement.size = this.data.options.length;
15978        if (this.data.multiSelect) {
15979          selectElement.multiple = true;
15980        }
15981      }
15982      for (var i = 0, ii = this.data.options.length; i < ii; i++) {
15983        var option = this.data.options[i];
15984        var optionElement = document.createElement('option');
15985        optionElement.textContent = option.displayValue;
15986        optionElement.value = option.exportValue;
15987        if (this.data.fieldValue.includes(option.displayValue)) {
15988          optionElement.setAttribute('selected', true);
15989        }
15990        selectElement.appendChild(optionElement);
15991      }
15992      this.container.appendChild(selectElement);
15993      return this.container;
15994    }
15995  }]);
15996
15997  return ChoiceWidgetAnnotationElement;
15998}(WidgetAnnotationElement);
15999
16000var PopupAnnotationElement = function (_AnnotationElement4) {
16001  _inherits(PopupAnnotationElement, _AnnotationElement4);
16002
16003  function PopupAnnotationElement(parameters) {
16004    _classCallCheck(this, PopupAnnotationElement);
16005
16006    var isRenderable = !!(parameters.data.title || parameters.data.contents);
16007    return _possibleConstructorReturn(this, (PopupAnnotationElement.__proto__ || Object.getPrototypeOf(PopupAnnotationElement)).call(this, parameters, isRenderable));
16008  }
16009
16010  _createClass(PopupAnnotationElement, [{
16011    key: 'render',
16012    value: function render() {
16013      var IGNORE_TYPES = ['Line', 'Square', 'Circle', 'PolyLine', 'Polygon', 'Ink'];
16014      this.container.className = 'popupAnnotation';
16015      if (IGNORE_TYPES.includes(this.data.parentType)) {
16016        return this.container;
16017      }
16018      var selector = '[data-annotation-id="' + this.data.parentId + '"]';
16019      var parentElement = this.layer.querySelector(selector);
16020      if (!parentElement) {
16021        return this.container;
16022      }
16023      var popup = new PopupElement({
16024        container: this.container,
16025        trigger: parentElement,
16026        color: this.data.color,
16027        title: this.data.title,
16028        contents: this.data.contents
16029      });
16030      var parentLeft = parseFloat(parentElement.style.left);
16031      var parentWidth = parseFloat(parentElement.style.width);
16032      this.container.style.transformOrigin = -(parentLeft + parentWidth) + 'px -' + parentElement.style.top;
16033      this.container.style.left = parentLeft + parentWidth + 'px';
16034      this.container.appendChild(popup.render());
16035      return this.container;
16036    }
16037  }]);
16038
16039  return PopupAnnotationElement;
16040}(AnnotationElement);
16041
16042var PopupElement = function () {
16043  function PopupElement(parameters) {
16044    _classCallCheck(this, PopupElement);
16045
16046    this.container = parameters.container;
16047    this.trigger = parameters.trigger;
16048    this.color = parameters.color;
16049    this.title = parameters.title;
16050    this.contents = parameters.contents;
16051    this.hideWrapper = parameters.hideWrapper || false;
16052    this.pinned = false;
16053  }
16054
16055  _createClass(PopupElement, [{
16056    key: 'render',
16057    value: function render() {
16058      var BACKGROUND_ENLIGHT = 0.7;
16059      var wrapper = document.createElement('div');
16060      wrapper.className = 'popupWrapper';
16061      this.hideElement = this.hideWrapper ? wrapper : this.container;
16062      this.hideElement.setAttribute('hidden', true);
16063      var popup = document.createElement('div');
16064      popup.className = 'popup';
16065      var color = this.color;
16066      if (color) {
16067        var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
16068        var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
16069        var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
16070        popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);
16071      }
16072      var contents = this._formatContents(this.contents);
16073      var title = document.createElement('h1');
16074      title.textContent = this.title;
16075      this.trigger.addEventListener('click', this._toggle.bind(this));
16076      this.trigger.addEventListener('mouseover', this._show.bind(this, false));
16077      this.trigger.addEventListener('mouseout', this._hide.bind(this, false));
16078      popup.addEventListener('click', this._hide.bind(this, true));
16079      popup.appendChild(title);
16080      popup.appendChild(contents);
16081      wrapper.appendChild(popup);
16082      return wrapper;
16083    }
16084  }, {
16085    key: '_formatContents',
16086    value: function _formatContents(contents) {
16087      var p = document.createElement('p');
16088      var lines = contents.split(/(?:\r\n?|\n)/);
16089      for (var i = 0, ii = lines.length; i < ii; ++i) {
16090        var line = lines[i];
16091        p.appendChild(document.createTextNode(line));
16092        if (i < ii - 1) {
16093          p.appendChild(document.createElement('br'));
16094        }
16095      }
16096      return p;
16097    }
16098  }, {
16099    key: '_toggle',
16100    value: function _toggle() {
16101      if (this.pinned) {
16102        this._hide(true);
16103      } else {
16104        this._show(true);
16105      }
16106    }
16107  }, {
16108    key: '_show',
16109    value: function _show() {
16110      var pin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
16111
16112      if (pin) {
16113        this.pinned = true;
16114      }
16115      if (this.hideElement.hasAttribute('hidden')) {
16116        this.hideElement.removeAttribute('hidden');
16117        this.container.style.zIndex += 1;
16118      }
16119    }
16120  }, {
16121    key: '_hide',
16122    value: function _hide() {
16123      var unpin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
16124
16125      if (unpin) {
16126        this.pinned = false;
16127      }
16128      if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {
16129        this.hideElement.setAttribute('hidden', true);
16130        this.container.style.zIndex -= 1;
16131      }
16132    }
16133  }]);
16134
16135  return PopupElement;
16136}();
16137
16138var LineAnnotationElement = function (_AnnotationElement5) {
16139  _inherits(LineAnnotationElement, _AnnotationElement5);
16140
16141  function LineAnnotationElement(parameters) {
16142    _classCallCheck(this, LineAnnotationElement);
16143
16144    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
16145    return _possibleConstructorReturn(this, (LineAnnotationElement.__proto__ || Object.getPrototypeOf(LineAnnotationElement)).call(this, parameters, isRenderable, true));
16146  }
16147
16148  _createClass(LineAnnotationElement, [{
16149    key: 'render',
16150    value: function render() {
16151      this.container.className = 'lineAnnotation';
16152      var data = this.data;
16153      var width = data.rect[2] - data.rect[0];
16154      var height = data.rect[3] - data.rect[1];
16155      var svg = this.svgFactory.create(width, height);
16156      var line = this.svgFactory.createElement('svg:line');
16157      line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]);
16158      line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]);
16159      line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]);
16160      line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]);
16161      line.setAttribute('stroke-width', data.borderStyle.width);
16162      line.setAttribute('stroke', 'transparent');
16163      svg.appendChild(line);
16164      this.container.append(svg);
16165      this._createPopup(this.container, line, data);
16166      return this.container;
16167    }
16168  }]);
16169
16170  return LineAnnotationElement;
16171}(AnnotationElement);
16172
16173var SquareAnnotationElement = function (_AnnotationElement6) {
16174  _inherits(SquareAnnotationElement, _AnnotationElement6);
16175
16176  function SquareAnnotationElement(parameters) {
16177    _classCallCheck(this, SquareAnnotationElement);
16178
16179    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
16180    return _possibleConstructorReturn(this, (SquareAnnotationElement.__proto__ || Object.getPrototypeOf(SquareAnnotationElement)).call(this, parameters, isRenderable, true));
16181  }
16182
16183  _createClass(SquareAnnotationElement, [{
16184    key: 'render',
16185    value: function render() {
16186      this.container.className = 'squareAnnotation';
16187      var data = this.data;
16188      var width = data.rect[2] - data.rect[0];
16189      var height = data.rect[3] - data.rect[1];
16190      var svg = this.svgFactory.create(width, height);
16191      var borderWidth = data.borderStyle.width;
16192      var square = this.svgFactory.createElement('svg:rect');
16193      square.setAttribute('x', borderWidth / 2);
16194      square.setAttribute('y', borderWidth / 2);
16195      square.setAttribute('width', width - borderWidth);
16196      square.setAttribute('height', height - borderWidth);
16197      square.setAttribute('stroke-width', borderWidth);
16198      square.setAttribute('stroke', 'transparent');
16199      square.setAttribute('fill', 'none');
16200      svg.appendChild(square);
16201      this.container.append(svg);
16202      this._createPopup(this.container, square, data);
16203      return this.container;
16204    }
16205  }]);
16206
16207  return SquareAnnotationElement;
16208}(AnnotationElement);
16209
16210var CircleAnnotationElement = function (_AnnotationElement7) {
16211  _inherits(CircleAnnotationElement, _AnnotationElement7);
16212
16213  function CircleAnnotationElement(parameters) {
16214    _classCallCheck(this, CircleAnnotationElement);
16215
16216    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
16217    return _possibleConstructorReturn(this, (CircleAnnotationElement.__proto__ || Object.getPrototypeOf(CircleAnnotationElement)).call(this, parameters, isRenderable, true));
16218  }
16219
16220  _createClass(CircleAnnotationElement, [{
16221    key: 'render',
16222    value: function render() {
16223      this.container.className = 'circleAnnotation';
16224      var data = this.data;
16225      var width = data.rect[2] - data.rect[0];
16226      var height = data.rect[3] - data.rect[1];
16227      var svg = this.svgFactory.create(width, height);
16228      var borderWidth = data.borderStyle.width;
16229      var circle = this.svgFactory.createElement('svg:ellipse');
16230      circle.setAttribute('cx', width / 2);
16231      circle.setAttribute('cy', height / 2);
16232      circle.setAttribute('rx', width / 2 - borderWidth / 2);
16233      circle.setAttribute('ry', height / 2 - borderWidth / 2);
16234      circle.setAttribute('stroke-width', borderWidth);
16235      circle.setAttribute('stroke', 'transparent');
16236      circle.setAttribute('fill', 'none');
16237      svg.appendChild(circle);
16238      this.container.append(svg);
16239      this._createPopup(this.container, circle, data);
16240      return this.container;
16241    }
16242  }]);
16243
16244  return CircleAnnotationElement;
16245}(AnnotationElement);
16246
16247var PolylineAnnotationElement = function (_AnnotationElement8) {
16248  _inherits(PolylineAnnotationElement, _AnnotationElement8);
16249
16250  function PolylineAnnotationElement(parameters) {
16251    _classCallCheck(this, PolylineAnnotationElement);
16252
16253    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
16254
16255    var _this15 = _possibleConstructorReturn(this, (PolylineAnnotationElement.__proto__ || Object.getPrototypeOf(PolylineAnnotationElement)).call(this, parameters, isRenderable, true));
16256
16257    _this15.containerClassName = 'polylineAnnotation';
16258    _this15.svgElementName = 'svg:polyline';
16259    return _this15;
16260  }
16261
16262  _createClass(PolylineAnnotationElement, [{
16263    key: 'render',
16264    value: function render() {
16265      this.container.className = this.containerClassName;
16266      var data = this.data;
16267      var width = data.rect[2] - data.rect[0];
16268      var height = data.rect[3] - data.rect[1];
16269      var svg = this.svgFactory.create(width, height);
16270      var vertices = data.vertices;
16271      var points = [];
16272      for (var i = 0, ii = vertices.length; i < ii; i++) {
16273        var x = vertices[i].x - data.rect[0];
16274        var y = data.rect[3] - vertices[i].y;
16275        points.push(x + ',' + y);
16276      }
16277      points = points.join(' ');
16278      var borderWidth = data.borderStyle.width;
16279      var polyline = this.svgFactory.createElement(this.svgElementName);
16280      polyline.setAttribute('points', points);
16281      polyline.setAttribute('stroke-width', borderWidth);
16282      polyline.setAttribute('stroke', 'transparent');
16283      polyline.setAttribute('fill', 'none');
16284      svg.appendChild(polyline);
16285      this.container.append(svg);
16286      this._createPopup(this.container, polyline, data);
16287      return this.container;
16288    }
16289  }]);
16290
16291  return PolylineAnnotationElement;
16292}(AnnotationElement);
16293
16294var PolygonAnnotationElement = function (_PolylineAnnotationEl) {
16295  _inherits(PolygonAnnotationElement, _PolylineAnnotationEl);
16296
16297  function PolygonAnnotationElement(parameters) {
16298    _classCallCheck(this, PolygonAnnotationElement);
16299
16300    var _this16 = _possibleConstructorReturn(this, (PolygonAnnotationElement.__proto__ || Object.getPrototypeOf(PolygonAnnotationElement)).call(this, parameters));
16301
16302    _this16.containerClassName = 'polygonAnnotation';
16303    _this16.svgElementName = 'svg:polygon';
16304    return _this16;
16305  }
16306
16307  return PolygonAnnotationElement;
16308}(PolylineAnnotationElement);
16309
16310var InkAnnotationElement = function (_AnnotationElement9) {
16311  _inherits(InkAnnotationElement, _AnnotationElement9);
16312
16313  function InkAnnotationElement(parameters) {
16314    _classCallCheck(this, InkAnnotationElement);
16315
16316    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
16317
16318    var _this17 = _possibleConstructorReturn(this, (InkAnnotationElement.__proto__ || Object.getPrototypeOf(InkAnnotationElement)).call(this, parameters, isRenderable, true));
16319
16320    _this17.containerClassName = 'inkAnnotation';
16321    _this17.svgElementName = 'svg:polyline';
16322    return _this17;
16323  }
16324
16325  _createClass(InkAnnotationElement, [{
16326    key: 'render',
16327    value: function render() {
16328      this.container.className = this.containerClassName;
16329      var data = this.data;
16330      var width = data.rect[2] - data.rect[0];
16331      var height = data.rect[3] - data.rect[1];
16332      var svg = this.svgFactory.create(width, height);
16333      var inkLists = data.inkLists;
16334      for (var i = 0, ii = inkLists.length; i < ii; i++) {
16335        var inkList = inkLists[i];
16336        var points = [];
16337        for (var j = 0, jj = inkList.length; j < jj; j++) {
16338          var x = inkList[j].x - data.rect[0];
16339          var y = data.rect[3] - inkList[j].y;
16340          points.push(x + ',' + y);
16341        }
16342        points = points.join(' ');
16343        var borderWidth = data.borderStyle.width;
16344        var polyline = this.svgFactory.createElement(this.svgElementName);
16345        polyline.setAttribute('points', points);
16346        polyline.setAttribute('stroke-width', borderWidth);
16347        polyline.setAttribute('stroke', 'transparent');
16348        polyline.setAttribute('fill', 'none');
16349        this._createPopup(this.container, polyline, data);
16350        svg.appendChild(polyline);
16351      }
16352      this.container.append(svg);
16353      return this.container;
16354    }
16355  }]);
16356
16357  return InkAnnotationElement;
16358}(AnnotationElement);
16359
16360var HighlightAnnotationElement = function (_AnnotationElement10) {
16361  _inherits(HighlightAnnotationElement, _AnnotationElement10);
16362
16363  function HighlightAnnotationElement(parameters) {
16364    _classCallCheck(this, HighlightAnnotationElement);
16365
16366    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
16367    return _possibleConstructorReturn(this, (HighlightAnnotationElement.__proto__ || Object.getPrototypeOf(HighlightAnnotationElement)).call(this, parameters, isRenderable, true));
16368  }
16369
16370  _createClass(HighlightAnnotationElement, [{
16371    key: 'render',
16372    value: function render() {
16373      this.container.className = 'highlightAnnotation';
16374      if (!this.data.hasPopup) {
16375        this._createPopup(this.container, null, this.data);
16376      }
16377      return this.container;
16378    }
16379  }]);
16380
16381  return HighlightAnnotationElement;
16382}(AnnotationElement);
16383
16384var UnderlineAnnotationElement = function (_AnnotationElement11) {
16385  _inherits(UnderlineAnnotationElement, _AnnotationElement11);
16386
16387  function UnderlineAnnotationElement(parameters) {
16388    _classCallCheck(this, UnderlineAnnotationElement);
16389
16390    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
16391    return _possibleConstructorReturn(this, (UnderlineAnnotationElement.__proto__ || Object.getPrototypeOf(UnderlineAnnotationElement)).call(this, parameters, isRenderable, true));
16392  }
16393
16394  _createClass(UnderlineAnnotationElement, [{
16395    key: 'render',
16396    value: function render() {
16397      this.container.className = 'underlineAnnotation';
16398      if (!this.data.hasPopup) {
16399        this._createPopup(this.container, null, this.data);
16400      }
16401      return this.container;
16402    }
16403  }]);
16404
16405  return UnderlineAnnotationElement;
16406}(AnnotationElement);
16407
16408var SquigglyAnnotationElement = function (_AnnotationElement12) {
16409  _inherits(SquigglyAnnotationElement, _AnnotationElement12);
16410
16411  function SquigglyAnnotationElement(parameters) {
16412    _classCallCheck(this, SquigglyAnnotationElement);
16413
16414    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
16415    return _possibleConstructorReturn(this, (SquigglyAnnotationElement.__proto__ || Object.getPrototypeOf(SquigglyAnnotationElement)).call(this, parameters, isRenderable, true));
16416  }
16417
16418  _createClass(SquigglyAnnotationElement, [{
16419    key: 'render',
16420    value: function render() {
16421      this.container.className = 'squigglyAnnotation';
16422      if (!this.data.hasPopup) {
16423        this._createPopup(this.container, null, this.data);
16424      }
16425      return this.container;
16426    }
16427  }]);
16428
16429  return SquigglyAnnotationElement;
16430}(AnnotationElement);
16431
16432var StrikeOutAnnotationElement = function (_AnnotationElement13) {
16433  _inherits(StrikeOutAnnotationElement, _AnnotationElement13);
16434
16435  function StrikeOutAnnotationElement(parameters) {
16436    _classCallCheck(this, StrikeOutAnnotationElement);
16437
16438    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
16439    return _possibleConstructorReturn(this, (StrikeOutAnnotationElement.__proto__ || Object.getPrototypeOf(StrikeOutAnnotationElement)).call(this, parameters, isRenderable, true));
16440  }
16441
16442  _createClass(StrikeOutAnnotationElement, [{
16443    key: 'render',
16444    value: function render() {
16445      this.container.className = 'strikeoutAnnotation';
16446      if (!this.data.hasPopup) {
16447        this._createPopup(this.container, null, this.data);
16448      }
16449      return this.container;
16450    }
16451  }]);
16452
16453  return StrikeOutAnnotationElement;
16454}(AnnotationElement);
16455
16456var StampAnnotationElement = function (_AnnotationElement14) {
16457  _inherits(StampAnnotationElement, _AnnotationElement14);
16458
16459  function StampAnnotationElement(parameters) {
16460    _classCallCheck(this, StampAnnotationElement);
16461
16462    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
16463    return _possibleConstructorReturn(this, (StampAnnotationElement.__proto__ || Object.getPrototypeOf(StampAnnotationElement)).call(this, parameters, isRenderable, true));
16464  }
16465
16466  _createClass(StampAnnotationElement, [{
16467    key: 'render',
16468    value: function render() {
16469      this.container.className = 'stampAnnotation';
16470      if (!this.data.hasPopup) {
16471        this._createPopup(this.container, null, this.data);
16472      }
16473      return this.container;
16474    }
16475  }]);
16476
16477  return StampAnnotationElement;
16478}(AnnotationElement);
16479
16480var FileAttachmentAnnotationElement = function (_AnnotationElement15) {
16481  _inherits(FileAttachmentAnnotationElement, _AnnotationElement15);
16482
16483  function FileAttachmentAnnotationElement(parameters) {
16484    _classCallCheck(this, FileAttachmentAnnotationElement);
16485
16486    var _this23 = _possibleConstructorReturn(this, (FileAttachmentAnnotationElement.__proto__ || Object.getPrototypeOf(FileAttachmentAnnotationElement)).call(this, parameters, true));
16487
16488    var _this23$data$file = _this23.data.file,
16489        filename = _this23$data$file.filename,
16490        content = _this23$data$file.content;
16491
16492    _this23.filename = (0, _dom_utils.getFilenameFromUrl)(filename);
16493    _this23.content = content;
16494    if (_this23.linkService.eventBus) {
16495      _this23.linkService.eventBus.dispatch('fileattachmentannotation', {
16496        source: _this23,
16497        id: (0, _util.stringToPDFString)(filename),
16498        filename: filename,
16499        content: content
16500      });
16501    }
16502    return _this23;
16503  }
16504
16505  _createClass(FileAttachmentAnnotationElement, [{
16506    key: 'render',
16507    value: function render() {
16508      this.container.className = 'fileAttachmentAnnotation';
16509      var trigger = document.createElement('div');
16510      trigger.style.height = this.container.style.height;
16511      trigger.style.width = this.container.style.width;
16512      trigger.addEventListener('dblclick', this._download.bind(this));
16513      if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
16514        this._createPopup(this.container, trigger, this.data);
16515      }
16516      this.container.appendChild(trigger);
16517      return this.container;
16518    }
16519  }, {
16520    key: '_download',
16521    value: function _download() {
16522      if (!this.downloadManager) {
16523        (0, _util.warn)('Download cannot be started due to unavailable download manager');
16524        return;
16525      }
16526      this.downloadManager.downloadData(this.content, this.filename, '');
16527    }
16528  }]);
16529
16530  return FileAttachmentAnnotationElement;
16531}(AnnotationElement);
16532
16533var AnnotationLayer = function () {
16534  function AnnotationLayer() {
16535    _classCallCheck(this, AnnotationLayer);
16536  }
16537
16538  _createClass(AnnotationLayer, null, [{
16539    key: 'render',
16540    value: function render(parameters) {
16541      for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {
16542        var data = parameters.annotations[i];
16543        if (!data) {
16544          continue;
16545        }
16546        var element = AnnotationElementFactory.create({
16547          data: data,
16548          layer: parameters.div,
16549          page: parameters.page,
16550          viewport: parameters.viewport,
16551          linkService: parameters.linkService,
16552          downloadManager: parameters.downloadManager,
16553          imageResourcesPath: parameters.imageResourcesPath || '',
16554          renderInteractiveForms: parameters.renderInteractiveForms || false,
16555          svgFactory: new _dom_utils.DOMSVGFactory()
16556        });
16557        if (element.isRenderable) {
16558          parameters.div.appendChild(element.render());
16559        }
16560      }
16561    }
16562  }, {
16563    key: 'update',
16564    value: function update(parameters) {
16565      for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {
16566        var data = parameters.annotations[i];
16567        var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]');
16568        if (element) {
16569          element.style.transform = 'matrix(' + parameters.viewport.transform.join(',') + ')';
16570        }
16571      }
16572      parameters.div.removeAttribute('hidden');
16573    }
16574  }]);
16575
16576  return AnnotationLayer;
16577}();
16578
16579exports.AnnotationLayer = AnnotationLayer;
16580
16581/***/ }),
16582/* 147 */
16583/***/ (function(module, exports, __w_pdfjs_require__) {
16584
16585"use strict";
16586
16587
16588Object.defineProperty(exports, "__esModule", {
16589  value: true
16590});
16591exports.SVGGraphics = undefined;
16592
16593var _util = __w_pdfjs_require__(1);
16594
16595var _dom_utils = __w_pdfjs_require__(130);
16596
16597var _is_node = __w_pdfjs_require__(4);
16598
16599var _is_node2 = _interopRequireDefault(_is_node);
16600
16601function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16602
16603var SVGGraphics = function SVGGraphics() {
16604  throw new Error('Not implemented: SVGGraphics');
16605};
16606{
16607  var SVG_DEFAULTS = {
16608    fontStyle: 'normal',
16609    fontWeight: 'normal',
16610    fillColor: '#000000'
16611  };
16612  var convertImgDataToPng = function convertImgDataToPngClosure() {
16613    var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
16614    var CHUNK_WRAPPER_SIZE = 12;
16615    var crcTable = new Int32Array(256);
16616    for (var i = 0; i < 256; i++) {
16617      var c = i;
16618      for (var h = 0; h < 8; h++) {
16619        if (c & 1) {
16620          c = 0xedB88320 ^ c >> 1 & 0x7fffffff;
16621        } else {
16622          c = c >> 1 & 0x7fffffff;
16623        }
16624      }
16625      crcTable[i] = c;
16626    }
16627    function crc32(data, start, end) {
16628      var crc = -1;
16629      for (var i = start; i < end; i++) {
16630        var a = (crc ^ data[i]) & 0xff;
16631        var b = crcTable[a];
16632        crc = crc >>> 8 ^ b;
16633      }
16634      return crc ^ -1;
16635    }
16636    function writePngChunk(type, body, data, offset) {
16637      var p = offset;
16638      var len = body.length;
16639      data[p] = len >> 24 & 0xff;
16640      data[p + 1] = len >> 16 & 0xff;
16641      data[p + 2] = len >> 8 & 0xff;
16642      data[p + 3] = len & 0xff;
16643      p += 4;
16644      data[p] = type.charCodeAt(0) & 0xff;
16645      data[p + 1] = type.charCodeAt(1) & 0xff;
16646      data[p + 2] = type.charCodeAt(2) & 0xff;
16647      data[p + 3] = type.charCodeAt(3) & 0xff;
16648      p += 4;
16649      data.set(body, p);
16650      p += body.length;
16651      var crc = crc32(data, offset + 4, p);
16652      data[p] = crc >> 24 & 0xff;
16653      data[p + 1] = crc >> 16 & 0xff;
16654      data[p + 2] = crc >> 8 & 0xff;
16655      data[p + 3] = crc & 0xff;
16656    }
16657    function adler32(data, start, end) {
16658      var a = 1;
16659      var b = 0;
16660      for (var i = start; i < end; ++i) {
16661        a = (a + (data[i] & 0xff)) % 65521;
16662        b = (b + a) % 65521;
16663      }
16664      return b << 16 | a;
16665    }
16666    function deflateSync(literals) {
16667      if (!(0, _is_node2.default)()) {
16668        return deflateSyncUncompressed(literals);
16669      }
16670      try {
16671        var input;
16672        if (parseInt(process.versions.node) >= 8) {
16673          input = literals;
16674        } else {
16675          input = new Buffer(literals);
16676        }
16677        var output = require('zlib').deflateSync(input, { level: 9 });
16678        return output instanceof Uint8Array ? output : new Uint8Array(output);
16679      } catch (e) {
16680        (0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);
16681      }
16682      return deflateSyncUncompressed(literals);
16683    }
16684    function deflateSyncUncompressed(literals) {
16685      var len = literals.length;
16686      var maxBlockLength = 0xFFFF;
16687      var deflateBlocks = Math.ceil(len / maxBlockLength);
16688      var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);
16689      var pi = 0;
16690      idat[pi++] = 0x78;
16691      idat[pi++] = 0x9c;
16692      var pos = 0;
16693      while (len > maxBlockLength) {
16694        idat[pi++] = 0x00;
16695        idat[pi++] = 0xff;
16696        idat[pi++] = 0xff;
16697        idat[pi++] = 0x00;
16698        idat[pi++] = 0x00;
16699        idat.set(literals.subarray(pos, pos + maxBlockLength), pi);
16700        pi += maxBlockLength;
16701        pos += maxBlockLength;
16702        len -= maxBlockLength;
16703      }
16704      idat[pi++] = 0x01;
16705      idat[pi++] = len & 0xff;
16706      idat[pi++] = len >> 8 & 0xff;
16707      idat[pi++] = ~len & 0xffff & 0xff;
16708      idat[pi++] = (~len & 0xffff) >> 8 & 0xff;
16709      idat.set(literals.subarray(pos), pi);
16710      pi += literals.length - pos;
16711      var adler = adler32(literals, 0, literals.length);
16712      idat[pi++] = adler >> 24 & 0xff;
16713      idat[pi++] = adler >> 16 & 0xff;
16714      idat[pi++] = adler >> 8 & 0xff;
16715      idat[pi++] = adler & 0xff;
16716      return idat;
16717    }
16718    function encode(imgData, kind, forceDataSchema, isMask) {
16719      var width = imgData.width;
16720      var height = imgData.height;
16721      var bitDepth, colorType, lineSize;
16722      var bytes = imgData.data;
16723      switch (kind) {
16724        case _util.ImageKind.GRAYSCALE_1BPP:
16725          colorType = 0;
16726          bitDepth = 1;
16727          lineSize = width + 7 >> 3;
16728          break;
16729        case _util.ImageKind.RGB_24BPP:
16730          colorType = 2;
16731          bitDepth = 8;
16732          lineSize = width * 3;
16733          break;
16734        case _util.ImageKind.RGBA_32BPP:
16735          colorType = 6;
16736          bitDepth = 8;
16737          lineSize = width * 4;
16738          break;
16739        default:
16740          throw new Error('invalid format');
16741      }
16742      var literals = new Uint8Array((1 + lineSize) * height);
16743      var offsetLiterals = 0,
16744          offsetBytes = 0;
16745      var y, i;
16746      for (y = 0; y < height; ++y) {
16747        literals[offsetLiterals++] = 0;
16748        literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);
16749        offsetBytes += lineSize;
16750        offsetLiterals += lineSize;
16751      }
16752      if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {
16753        offsetLiterals = 0;
16754        for (y = 0; y < height; y++) {
16755          offsetLiterals++;
16756          for (i = 0; i < lineSize; i++) {
16757            literals[offsetLiterals++] ^= 0xFF;
16758          }
16759        }
16760      }
16761      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]);
16762      var idat = deflateSync(literals);
16763      var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;
16764      var data = new Uint8Array(pngLength);
16765      var offset = 0;
16766      data.set(PNG_HEADER, offset);
16767      offset += PNG_HEADER.length;
16768      writePngChunk('IHDR', ihdr, data, offset);
16769      offset += CHUNK_WRAPPER_SIZE + ihdr.length;
16770      writePngChunk('IDATA', idat, data, offset);
16771      offset += CHUNK_WRAPPER_SIZE + idat.length;
16772      writePngChunk('IEND', new Uint8Array(0), data, offset);
16773      return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema);
16774    }
16775    return function convertImgDataToPng(imgData, forceDataSchema, isMask) {
16776      var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;
16777      return encode(imgData, kind, forceDataSchema, isMask);
16778    };
16779  }();
16780  var SVGExtraState = function SVGExtraStateClosure() {
16781    function SVGExtraState() {
16782      this.fontSizeScale = 1;
vendor: 14,800 bytes, lines 16783-17196
16783      this.fontWeight = SVG_DEFAULTS.fontWeight;
16784      this.fontSize = 0;
16785      this.textMatrix = _util.IDENTITY_MATRIX;
16786      this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
16787      this.leading = 0;
16788      this.textRenderingMode = _util.TextRenderingMode.FILL;
16789      this.x = 0;
16790      this.y = 0;
16791      this.lineX = 0;
16792      this.lineY = 0;
16793      this.charSpacing = 0;
16794      this.wordSpacing = 0;
16795      this.textHScale = 1;
16796      this.textRise = 0;
16797      this.fillColor = SVG_DEFAULTS.fillColor;
16798      this.strokeColor = '#000000';
16799      this.fillAlpha = 1;
16800      this.strokeAlpha = 1;
16801      this.lineWidth = 1;
16802      this.lineJoin = '';
16803      this.lineCap = '';
16804      this.miterLimit = 0;
16805      this.dashArray = [];
16806      this.dashPhase = 0;
16807      this.dependencies = [];
16808      this.activeClipUrl = null;
16809      this.clipGroup = null;
16810      this.maskId = '';
16811    }
16812    SVGExtraState.prototype = {
16813      clone: function SVGExtraState_clone() {
16814        return Object.create(this);
16815      },
16816      setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) {
16817        this.x = x;
16818        this.y = y;
16819      }
16820    };
16821    return SVGExtraState;
16822  }();
16823  exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() {
16824    function opListToTree(opList) {
16825      var opTree = [];
16826      var tmp = [];
16827      var opListLen = opList.length;
16828      for (var x = 0; x < opListLen; x++) {
16829        if (opList[x].fn === 'save') {
16830          opTree.push({
16831            'fnId': 92,
16832            'fn': 'group',
16833            'items': []
16834          });
16835          tmp.push(opTree);
16836          opTree = opTree[opTree.length - 1].items;
16837          continue;
16838        }
16839        if (opList[x].fn === 'restore') {
16840          opTree = tmp.pop();
16841        } else {
16842          opTree.push(opList[x]);
16843        }
16844      }
16845      return opTree;
16846    }
16847    function pf(value) {
16848      if (Number.isInteger(value)) {
16849        return value.toString();
16850      }
16851      var s = value.toFixed(10);
16852      var i = s.length - 1;
16853      if (s[i] !== '0') {
16854        return s;
16855      }
16856      do {
16857        i--;
16858      } while (s[i] === '0');
16859      return s.substring(0, s[i] === '.' ? i : i + 1);
16860    }
16861    function pm(m) {
16862      if (m[4] === 0 && m[5] === 0) {
16863        if (m[1] === 0 && m[2] === 0) {
16864          if (m[0] === 1 && m[3] === 1) {
16865            return '';
16866          }
16867          return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';
16868        }
16869        if (m[0] === m[3] && m[1] === -m[2]) {
16870          var a = Math.acos(m[0]) * 180 / Math.PI;
16871          return 'rotate(' + pf(a) + ')';
16872        }
16873      } else {
16874        if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {
16875          return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';
16876        }
16877      }
16878      return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';
16879    }
16880    function SVGGraphics(commonObjs, objs, forceDataSchema) {
16881      this.svgFactory = new _dom_utils.DOMSVGFactory();
16882      this.current = new SVGExtraState();
16883      this.transformMatrix = _util.IDENTITY_MATRIX;
16884      this.transformStack = [];
16885      this.extraStack = [];
16886      this.commonObjs = commonObjs;
16887      this.objs = objs;
16888      this.pendingClip = null;
16889      this.pendingEOFill = false;
16890      this.embedFonts = false;
16891      this.embeddedFonts = Object.create(null);
16892      this.cssStyle = null;
16893      this.forceDataSchema = !!forceDataSchema;
16894    }
16895    var XML_NS = 'http://www.w3.org/XML/1998/namespace';
16896    var XLINK_NS = 'http://www.w3.org/1999/xlink';
16897    var LINE_CAP_STYLES = ['butt', 'round', 'square'];
16898    var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
16899    var clipCount = 0;
16900    var maskCount = 0;
16901    SVGGraphics.prototype = {
16902      save: function SVGGraphics_save() {
16903        this.transformStack.push(this.transformMatrix);
16904        var old = this.current;
16905        this.extraStack.push(old);
16906        this.current = old.clone();
16907      },
16908      restore: function SVGGraphics_restore() {
16909        this.transformMatrix = this.transformStack.pop();
16910        this.current = this.extraStack.pop();
16911        this.pendingClip = null;
16912        this.tgrp = null;
16913      },
16914      group: function SVGGraphics_group(items) {
16915        this.save();
16916        this.executeOpTree(items);
16917        this.restore();
16918      },
16919      loadDependencies: function SVGGraphics_loadDependencies(operatorList) {
16920        var _this = this;
16921
16922        var fnArray = operatorList.fnArray;
16923        var fnArrayLen = fnArray.length;
16924        var argsArray = operatorList.argsArray;
16925        for (var i = 0; i < fnArrayLen; i++) {
16926          if (_util.OPS.dependency === fnArray[i]) {
16927            var deps = argsArray[i];
16928            for (var n = 0, nn = deps.length; n < nn; n++) {
16929              var obj = deps[n];
16930              var common = obj.substring(0, 2) === 'g_';
16931              var promise;
16932              if (common) {
16933                promise = new Promise(function (resolve) {
16934                  _this.commonObjs.get(obj, resolve);
16935                });
16936              } else {
16937                promise = new Promise(function (resolve) {
16938                  _this.objs.get(obj, resolve);
16939                });
16940              }
16941              this.current.dependencies.push(promise);
16942            }
16943          }
16944        }
16945        return Promise.all(this.current.dependencies);
16946      },
16947      transform: function SVGGraphics_transform(a, b, c, d, e, f) {
16948        var transformMatrix = [a, b, c, d, e, f];
16949        this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);
16950        this.tgrp = null;
16951      },
16952      getSVG: function SVGGraphics_getSVG(operatorList, viewport) {
16953        var _this2 = this;
16954
16955        this.viewport = viewport;
16956        var svgElement = this._initialize(viewport);
16957        return this.loadDependencies(operatorList).then(function () {
16958          _this2.transformMatrix = _util.IDENTITY_MATRIX;
16959          var opTree = _this2.convertOpList(operatorList);
16960          _this2.executeOpTree(opTree);
16961          return svgElement;
16962        });
16963      },
16964      convertOpList: function SVGGraphics_convertOpList(operatorList) {
16965        var argsArray = operatorList.argsArray;
16966        var fnArray = operatorList.fnArray;
16967        var fnArrayLen = fnArray.length;
16968        var REVOPS = [];
16969        var opList = [];
16970        for (var op in _util.OPS) {
16971          REVOPS[_util.OPS[op]] = op;
16972        }
16973        for (var x = 0; x < fnArrayLen; x++) {
16974          var fnId = fnArray[x];
16975          opList.push({
16976            'fnId': fnId,
16977            'fn': REVOPS[fnId],
16978            'args': argsArray[x]
16979          });
16980        }
16981        return opListToTree(opList);
16982      },
16983      executeOpTree: function SVGGraphics_executeOpTree(opTree) {
16984        var opTreeLen = opTree.length;
16985        for (var x = 0; x < opTreeLen; x++) {
16986          var fn = opTree[x].fn;
16987          var fnId = opTree[x].fnId;
16988          var args = opTree[x].args;
16989          switch (fnId | 0) {
16990            case _util.OPS.beginText:
16991              this.beginText();
16992              break;
16993            case _util.OPS.dependency:
16994              break;
16995            case _util.OPS.setLeading:
16996              this.setLeading(args);
16997              break;
16998            case _util.OPS.setLeadingMoveText:
16999              this.setLeadingMoveText(args[0], args[1]);
17000              break;
17001            case _util.OPS.setFont:
17002              this.setFont(args);
17003              break;
17004            case _util.OPS.showText:
17005              this.showText(args[0]);
17006              break;
17007            case _util.OPS.showSpacedText:
17008              this.showText(args[0]);
17009              break;
17010            case _util.OPS.endText:
17011              this.endText();
17012              break;
17013            case _util.OPS.moveText:
17014              this.moveText(args[0], args[1]);
17015              break;
17016            case _util.OPS.setCharSpacing:
17017              this.setCharSpacing(args[0]);
17018              break;
17019            case _util.OPS.setWordSpacing:
17020              this.setWordSpacing(args[0]);
17021              break;
17022            case _util.OPS.setHScale:
17023              this.setHScale(args[0]);
17024              break;
17025            case _util.OPS.setTextMatrix:
17026              this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
17027              break;
17028            case _util.OPS.setTextRise:
17029              this.setTextRise(args[0]);
17030              break;
17031            case _util.OPS.setTextRenderingMode:
17032              this.setTextRenderingMode(args[0]);
17033              break;
17034            case _util.OPS.setLineWidth:
17035              this.setLineWidth(args[0]);
17036              break;
17037            case _util.OPS.setLineJoin:
17038              this.setLineJoin(args[0]);
17039              break;
17040            case _util.OPS.setLineCap:
17041              this.setLineCap(args[0]);
17042              break;
17043            case _util.OPS.setMiterLimit:
17044              this.setMiterLimit(args[0]);
17045              break;
17046            case _util.OPS.setFillRGBColor:
17047              this.setFillRGBColor(args[0], args[1], args[2]);
17048              break;
17049            case _util.OPS.setStrokeRGBColor:
17050              this.setStrokeRGBColor(args[0], args[1], args[2]);
17051              break;
17052            case _util.OPS.setDash:
17053              this.setDash(args[0], args[1]);
17054              break;
17055            case _util.OPS.setGState:
17056              this.setGState(args[0]);
17057              break;
17058            case _util.OPS.fill:
17059              this.fill();
17060              break;
17061            case _util.OPS.eoFill:
17062              this.eoFill();
17063              break;
17064            case _util.OPS.stroke:
17065              this.stroke();
17066              break;
17067            case _util.OPS.fillStroke:
17068              this.fillStroke();
17069              break;
17070            case _util.OPS.eoFillStroke:
17071              this.eoFillStroke();
17072              break;
17073            case _util.OPS.clip:
17074              this.clip('nonzero');
17075              break;
17076            case _util.OPS.eoClip:
17077              this.clip('evenodd');
17078              break;
17079            case _util.OPS.paintSolidColorImageMask:
17080              this.paintSolidColorImageMask();
17081              break;
17082            case _util.OPS.paintJpegXObject:
17083              this.paintJpegXObject(args[0], args[1], args[2]);
17084              break;
17085            case _util.OPS.paintImageXObject:
17086              this.paintImageXObject(args[0]);
17087              break;
17088            case _util.OPS.paintInlineImageXObject:
17089              this.paintInlineImageXObject(args[0]);
17090              break;
17091            case _util.OPS.paintImageMaskXObject:
17092              this.paintImageMaskXObject(args[0]);
17093              break;
17094            case _util.OPS.paintFormXObjectBegin:
17095              this.paintFormXObjectBegin(args[0], args[1]);
17096              break;
17097            case _util.OPS.paintFormXObjectEnd:
17098              this.paintFormXObjectEnd();
17099              break;
17100            case _util.OPS.closePath:
17101              this.closePath();
17102              break;
17103            case _util.OPS.closeStroke:
17104              this.closeStroke();
17105              break;
17106            case _util.OPS.closeFillStroke:
17107              this.closeFillStroke();
17108              break;
17109            case _util.OPS.closeEOFillStroke:
17110              this.closeEOFillStroke();
17111              break;
17112            case _util.OPS.nextLine:
17113              this.nextLine();
17114              break;
17115            case _util.OPS.transform:
17116              this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);
17117              break;
17118            case _util.OPS.constructPath:
17119              this.constructPath(args[0], args[1]);
17120              break;
17121            case _util.OPS.endPath:
17122              this.endPath();
17123              break;
17124            case 92:
17125              this.group(opTree[x].items);
17126              break;
17127            default:
17128              (0, _util.warn)('Unimplemented operator ' + fn);
17129              break;
17130          }
17131        }
17132      },
17133      setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) {
17134        this.current.wordSpacing = wordSpacing;
17135      },
17136      setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) {
17137        this.current.charSpacing = charSpacing;
17138      },
17139      nextLine: function SVGGraphics_nextLine() {
17140        this.moveText(0, this.current.leading);
17141      },
17142      setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) {
17143        var current = this.current;
17144        this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f];
17145        this.current.x = this.current.lineX = 0;
17146        this.current.y = this.current.lineY = 0;
17147        current.xcoords = [];
17148        current.tspan = this.svgFactory.createElement('svg:tspan');
17149        current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
17150        current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
17151        current.tspan.setAttributeNS(null, 'y', pf(-current.y));
17152        current.txtElement = this.svgFactory.createElement('svg:text');
17153        current.txtElement.appendChild(current.tspan);
17154      },
17155      beginText: function SVGGraphics_beginText() {
17156        this.current.x = this.current.lineX = 0;
17157        this.current.y = this.current.lineY = 0;
17158        this.current.textMatrix = _util.IDENTITY_MATRIX;
17159        this.current.lineMatrix = _util.IDENTITY_MATRIX;
17160        this.current.tspan = this.svgFactory.createElement('svg:tspan');
17161        this.current.txtElement = this.svgFactory.createElement('svg:text');
17162        this.current.txtgrp = this.svgFactory.createElement('svg:g');
17163        this.current.xcoords = [];
17164      },
17165      moveText: function SVGGraphics_moveText(x, y) {
17166        var current = this.current;
17167        this.current.x = this.current.lineX += x;
17168        this.current.y = this.current.lineY += y;
17169        current.xcoords = [];
17170        current.tspan = this.svgFactory.createElement('svg:tspan');
17171        current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
17172        current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
17173        current.tspan.setAttributeNS(null, 'y', pf(-current.y));
17174      },
17175      showText: function SVGGraphics_showText(glyphs) {
17176        var current = this.current;
17177        var font = current.font;
17178        var fontSize = current.fontSize;
17179        if (fontSize === 0) {
17180          return;
17181        }
17182        var charSpacing = current.charSpacing;
17183        var wordSpacing = current.wordSpacing;
17184        var fontDirection = current.fontDirection;
17185        var textHScale = current.textHScale * fontDirection;
17186        var glyphsLength = glyphs.length;
17187        var vertical = font.vertical;
17188        var widthAdvanceScale = fontSize * current.fontMatrix[0];
17189        var x = 0,
17190            i;
17191        for (i = 0; i < glyphsLength; ++i) {
17192          var glyph = glyphs[i];
17193          if (glyph === null) {
17194            x += fontDirection * wordSpacing;
17195            continue;
17196          }
17196 else if ((0, _util.isNum)(glyph)) {
17197            x += -glyph * fontSize * 0.001;
17198            continue;
17199          }
17200          var width = glyph.width;
17201          var character = glyph.fontChar;
17202          var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
17203          var charWidth = width * widthAdvanceScale + spacing * fontDirection;
17204          if (!glyph.isInFont && !font.missingFile) {
17205            x += charWidth;
17206            continue;
17207          }
17208          current.xcoords.push(current.x + x * textHScale);
17209          current.tspan.textContent += character;
17210          x += charWidth;
17211        }
17212        if (vertical) {
17213          current.y -= x * textHScale;
17214        } else {
17215          current.x += x * textHScale;
17216        }
17217        current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' '));
17218        current.tspan.setAttributeNS(null, 'y', pf(-current.y));
17219        current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
17220        current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
17221        if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
17222          current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);
17223        }
17224        if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
17225          current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);
17226        }
17227        var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
17228        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
17229          if (current.fillColor !== SVG_DEFAULTS.fillColor) {
17230            current.tspan.setAttributeNS(null, 'fill', current.fillColor);
17231          }
17232          if (current.fillAlpha < 1) {
17233            current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
17234          }
17235        } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {
17236          current.tspan.setAttributeNS(null, 'fill', 'transparent');
17237        } else {
17238          current.tspan.setAttributeNS(null, 'fill', 'none');
17239        }
17240        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
17241          this._setStrokeAttributes(current.tspan);
17242        }
17243        var textMatrix = current.textMatrix;
17244        if (current.textRise !== 0) {
17245          textMatrix = textMatrix.slice();
17246          textMatrix[5] += current.textRise;
17247        }
17248        current.txtElement.setAttributeNS(null, 'transform', pm(textMatrix) + ' scale(1, -1)');
17249        current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');
17250        current.txtElement.appendChild(current.tspan);
17251        current.txtgrp.appendChild(current.txtElement);
17252        this._ensureTransformGroup().appendChild(current.txtElement);
17253      },
17254      setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {
17255        this.setLeading(-y);
17256        this.moveText(x, y);
17257      },
17258      addFontStyle: function SVGGraphics_addFontStyle(fontObj) {
17259        if (!this.cssStyle) {
17260          this.cssStyle = this.svgFactory.createElement('svg:style');
17261          this.cssStyle.setAttributeNS(null, 'type', 'text/css');
17262          this.defs.appendChild(this.cssStyle);
17263        }
17264        var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);
17265        this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n';
17266      },
17267      setFont: function SVGGraphics_setFont(details) {
17268        var current = this.current;
17269        var fontObj = this.commonObjs.get(details[0]);
17270        var size = details[1];
17271        this.current.font = fontObj;
17272        if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) {
17273          this.addFontStyle(fontObj);
17274          this.embeddedFonts[fontObj.loadedName] = fontObj;
17275        }
17276        current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
17277        var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal';
17278        var italic = fontObj.italic ? 'italic' : 'normal';
17279        if (size < 0) {
17280          size = -size;
17281          current.fontDirection = -1;
17282        } else {
17283          current.fontDirection = 1;
17284        }
17285        current.fontSize = size;
17286        current.fontFamily = fontObj.loadedName;
17287        current.fontWeight = bold;
17288        current.fontStyle = italic;
17289        current.tspan = this.svgFactory.createElement('svg:tspan');
17290        current.tspan.setAttributeNS(null, 'y', pf(-current.y));
17291        current.xcoords = [];
17292      },
17293      endText: function endText() {
17294        var current = this.current;
17295        if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {
17296          current.element = current.txtElement;
17297          this.clip('nonzero');
17298          this.endPath();
17299        }
17300      },
17301
17302      setLineWidth: function SVGGraphics_setLineWidth(width) {
17303        this.current.lineWidth = width;
17304      },
17305      setLineCap: function SVGGraphics_setLineCap(style) {
17306        this.current.lineCap = LINE_CAP_STYLES[style];
17307      },
17308      setLineJoin: function SVGGraphics_setLineJoin(style) {
17309        this.current.lineJoin = LINE_JOIN_STYLES[style];
17310      },
17311      setMiterLimit: function SVGGraphics_setMiterLimit(limit) {
17312        this.current.miterLimit = limit;
17313      },
17314      setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) {
17315        this.current.strokeAlpha = strokeAlpha;
17316      },
17317      setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {
17318        var color = _util.Util.makeCssRgb(r, g, b);
17319        this.current.strokeColor = color;
17320      },
17321      setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) {
17322        this.current.fillAlpha = fillAlpha;
17323      },
17324      setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {
17325        var color = _util.Util.makeCssRgb(r, g, b);
17326        this.current.fillColor = color;
17327        this.current.tspan = this.svgFactory.createElement('svg:tspan');
17328        this.current.xcoords = [];
17329      },
17330      setDash: function SVGGraphics_setDash(dashArray, dashPhase) {
17331        this.current.dashArray = dashArray;
17332        this.current.dashPhase = dashPhase;
17333      },
17334      constructPath: function SVGGraphics_constructPath(ops, args) {
17335        var current = this.current;
17336        var x = current.x,
17337            y = current.y;
17338        current.path = this.svgFactory.createElement('svg:path');
17339        var d = [];
17340        var opLength = ops.length;
17341        for (var i = 0, j = 0; i < opLength; i++) {
17342          switch (ops[i] | 0) {
17343            case _util.OPS.rectangle:
17344              x = args[j++];
17345              y = args[j++];
17346              var width = args[j++];
17347              var height = args[j++];
17348              var xw = x + width;
17349              var yh = y + height;
17350              d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z');
17351              break;
17352            case _util.OPS.moveTo:
17353              x = args[j++];
17354              y = args[j++];
17355              d.push('M', pf(x), pf(y));
17356              break;
17357            case _util.OPS.lineTo:
17358              x = args[j++];
17359              y = args[j++];
17360              d.push('L', pf(x), pf(y));
17361              break;
17362            case _util.OPS.curveTo:
17363              x = args[j + 4];
17364              y = args[j + 5];
17365              d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));
17366              j += 6;
17367              break;
17368            case _util.OPS.curveTo2:
17369              x = args[j + 2];
17370              y = args[j + 3];
17371              d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));
17372              j += 4;
17373              break;
17374            case _util.OPS.curveTo3:
17375              x = args[j + 2];
17376              y = args[j + 3];
17377              d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));
17378              j += 4;
17379              break;
17380            case _util.OPS.closePath:
17381              d.push('Z');
17382              break;
17383          }
17384        }
17385        current.path.setAttributeNS(null, 'd', d.join(' '));
17386        current.path.setAttributeNS(null, 'fill', 'none');
17387        this._ensureTransformGroup().appendChild(current.path);
17388        current.element = current.path;
17389        current.setCurrentPoint(x, y);
17390      },
17391      endPath: function SVGGraphics_endPath() {
17392        if (!this.pendingClip) {
17393          return;
17394        }
17395        var current = this.current;
17396        var clipId = 'clippath' + clipCount;
17397        clipCount++;
17398        var clipPath = this.svgFactory.createElement('svg:clipPath');
17399        clipPath.setAttributeNS(null, 'id', clipId);
17400        clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));
17401        var clipElement = current.element.cloneNode(true);
17402        if (this.pendingClip === 'evenodd') {
17403          clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');
17404        } else {
17405          clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');
17406        }
17407        this.pendingClip = null;
17408        clipPath.appendChild(clipElement);
17409        this.defs.appendChild(clipPath);
17410        if (current.activeClipUrl) {
17411          current.clipGroup = null;
17412          this.extraStack.forEach(function (prev) {
17413            prev.clipGroup = null;
17414          });
17415          clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl);
17416        }
17417        current.activeClipUrl = 'url(#' + clipId + ')';
17418        this.tgrp = null;
17419      },
17420      clip: function SVGGraphics_clip(type) {
17421        this.pendingClip = type;
17422      },
17423      closePath: function SVGGraphics_closePath() {
17424        var current = this.current;
17425        if (current.path) {
17426          var d = current.path.getAttributeNS(null, 'd');
17427          d += 'Z';
17428          current.path.setAttributeNS(null, 'd', d);
17429        }
17430      },
17431      setLeading: function SVGGraphics_setLeading(leading) {
17432        this.current.leading = -leading;
17433      },
17434      setTextRise: function SVGGraphics_setTextRise(textRise) {
17435        this.current.textRise = textRise;
17436      },
17437      setTextRenderingMode: function setTextRenderingMode(textRenderingMode) {
17438        this.current.textRenderingMode = textRenderingMode;
17439      },
17440
17441      setHScale: function SVGGraphics_setHScale(scale) {
17442        this.current.textHScale = scale / 100;
17443      },
17444      setGState: function SVGGraphics_setGState(states) {
17445        for (var i = 0, ii = states.length; i < ii; i++) {
17446          var state = states[i];
17447          var key = state[0];
17448          var value = state[1];
17449          switch (key) {
17450            case 'LW':
17451              this.setLineWidth(value);
17452              break;
17453            case 'LC':
17454              this.setLineCap(value);
17455              break;
17456            case 'LJ':
17457              this.setLineJoin(value);
17458              break;
17459            case 'ML':
17460              this.setMiterLimit(value);
17461              break;
17462            case 'D':
17463              this.setDash(value[0], value[1]);
17464              break;
17465            case 'Font':
17466              this.setFont(value);
17467              break;
17468            case 'CA':
17469              this.setStrokeAlpha(value);
17470              break;
17471            case 'ca':
17472              this.setFillAlpha(value);
17473              break;
17474            default:
17475              (0, _util.warn)('Unimplemented graphic state ' + key);
17476              break;
17477          }
17478        }
17479      },
17480      fill: function SVGGraphics_fill() {
17481        var current = this.current;
17482        if (current.element) {
17483          current.element.setAttributeNS(null, 'fill', current.fillColor);
17484          current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
17485          this.endPath();
17486        }
17487      },
17488      stroke: function SVGGraphics_stroke() {
17489        var current = this.current;
17490        if (current.element) {
17491          this._setStrokeAttributes(current.element);
17492          current.element.setAttributeNS(null, 'fill', 'none');
17493          this.endPath();
17494        }
17495      },
17496      _setStrokeAttributes: function _setStrokeAttributes(element) {
17497        var current = this.current;
17498        element.setAttributeNS(null, 'stroke', current.strokeColor);
17499        element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha);
17500        element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit));
17501        element.setAttributeNS(null, 'stroke-linecap', current.lineCap);
17502        element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);
17503        element.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px');
17504        element.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' '));
17505        element.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px');
17506      },
17507
17508      eoFill: function SVGGraphics_eoFill() {
17509        if (this.current.element) {
17510          this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
17511        }
17512        this.fill();
17513      },
17514      fillStroke: function SVGGraphics_fillStroke() {
17515        this.stroke();
17516        this.fill();
17517      },
17518      eoFillStroke: function SVGGraphics_eoFillStroke() {
17519        if (this.current.element) {
17520          this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
17521        }
17522        this.fillStroke();
17523      },
17524      closeStroke: function SVGGraphics_closeStroke() {
17525        this.closePath();
17526        this.stroke();
17527      },
17528      closeFillStroke: function SVGGraphics_closeFillStroke() {
17529        this.closePath();
17530        this.fillStroke();
17531      },
17532      closeEOFillStroke: function closeEOFillStroke() {
17533        this.closePath();
17534        this.eoFillStroke();
17535      },
17536
17537      paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() {
17538        var current = this.current;
17539        var rect = this.svgFactory.createElement('svg:rect');
17540        rect.setAttributeNS(null, 'x', '0');
17541        rect.setAttributeNS(null, 'y', '0');
17542        rect.setAttributeNS(null, 'width', '1px');
17543        rect.setAttributeNS(null, 'height', '1px');
17544        rect.setAttributeNS(null, 'fill', current.fillColor);
17545        this._ensureTransformGroup().appendChild(rect);
17546      },
17547      paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {
17548        var imgObj = this.objs.get(objId);
17549        var imgEl = this.svgFactory.createElement('svg:image');
17550        imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);
17551        imgEl.setAttributeNS(null, 'width', pf(w));
17552        imgEl.setAttributeNS(null, 'height', pf(h));
17553        imgEl.setAttributeNS(null, 'x', '0');
17554        imgEl.setAttributeNS(null, 'y', pf(-h));
17555        imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');
17556        this._ensureTransformGroup().appendChild(imgEl);
17557      },
17558      paintImageXObject: function SVGGraphics_paintImageXObject(objId) {
17559        var imgData = this.objs.get(objId);
17560        if (!imgData) {
17561          (0, _util.warn)('Dependent image isn\'t ready yet');
17562          return;
17563        }
17564        this.paintInlineImageXObject(imgData);
17565      },
17566      paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) {
17567        var width = imgData.width;
17568        var height = imgData.height;
17569        var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);
17570        var cliprect = this.svgFactory.createElement('svg:rect');
17571        cliprect.setAttributeNS(null, 'x', '0');
17572        cliprect.setAttributeNS(null, 'y', '0');
17573        cliprect.setAttributeNS(null, 'width', pf(width));
17574        cliprect.setAttributeNS(null, 'height', pf(height));
17575        this.current.element = cliprect;
17576        this.clip('nonzero');
17577        var imgEl = this.svgFactory.createElement('svg:image');
17578        imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);
17579        imgEl.setAttributeNS(null, 'x', '0');
17580        imgEl.setAttributeNS(null, 'y', pf(-height));
17581        imgEl.setAttributeNS(null, 'width', pf(width) + 'px');
17582        imgEl.setAttributeNS(null, 'height', pf(height) + 'px');
17583        imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')');
17584        if (mask) {
17585          mask.appendChild(imgEl);
17586        } else {
17587          this._ensureTransformGroup().appendChild(imgEl);
17588        }
17589      },
17590      paintImageMa
17590skXObject: function SVGGraphics_paintImageMaskXObject(imgData) {
17591        var current = this.current;
17592        var width = imgData.width;
17593        var height = imgData.height;
17594        var fillColor = current.fillColor;
17595        current.maskId = 'mask' + maskCount++;
17596        var mask = this.svgFactory.createElement('svg:mask');
17597        mask.setAttributeNS(null, 'id', current.maskId);
17598        var rect = this.svgFactory.createElement('svg:rect');
17599        rect.setAttributeNS(null, 'x', '0');
17600        rect.setAttributeNS(null, 'y', '0');
17601        rect.setAttributeNS(null, 'width', pf(width));
17602        rect.setAttributeNS(null, 'height', pf(height));
17603        rect.setAttributeNS(null, 'fill', fillColor);
17604        rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')');
17605        this.defs.appendChild(mask);
17606        this._ensureTransformGroup().appendChild(rect);
17607        this.paintInlineImageXObject(imgData, mask);
17608      },
17609      paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {
17610        if (Array.isArray(matrix) && matrix.length === 6) {
17611          this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
17612        }
17613        if (Array.isArray(bbox) && bbox.length === 4) {
17614          var width = bbox[2] - bbox[0];
17615          var height = bbox[3] - bbox[1];
17616          var cliprect = this.svgFactory.createElement('svg:rect');
17617          cliprect.setAttributeNS(null, 'x', bbox[0]);
17618          cliprect.setAttributeNS(null, 'y', bbox[1]);
17619          cliprect.setAttributeNS(null, 'width', pf(width));
17620          cliprect.setAttributeNS(null, 'height', pf(height));
17621          this.current.element = cliprect;
17622          this.clip('nonzero');
17623          this.endPath();
17624        }
17625      },
17626      paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {},
17627      _initialize: function _initialize(viewport) {
17628        var svg = this.svgFactory.create(viewport.width, viewport.height);
17629        var definitions = this.svgFactory.createElement('svg:defs');
17630        svg.appendChild(definitions);
17631        this.defs = definitions;
17632        var rootGroup = this.svgFactory.createElement('svg:g');
17633        rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform));
17634        svg.appendChild(rootGroup);
17635        this.svg = rootGroup;
17636        return svg;
17637      },
17638
17639      _ensureClipGroup: function SVGGraphics_ensureClipGroup() {
17640        if (!this.current.clipGroup) {
17641          var clipGroup = this.svgFactory.createElement('svg:g');
17642          clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl);
17643          this.svg.appendChild(clipGroup);
17644          this.current.clipGroup = clipGroup;
17645        }
17646        return this.current.clipGroup;
17647      },
17648      _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() {
17649        if (!this.tgrp) {
17650          this.tgrp = this.svgFactory.createElement('svg:g');
17651          this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
17652          if (this.current.activeClipUrl) {
17653            this._ensureClipGroup().appendChild(this.tgrp);
17654          } else {
17655            this.svg.appendChild(this.tgrp);
17656          }
17657        }
17658        return this.tgrp;
17659      }
17660    };
17661    return SVGGraphics;
17662  }();
17663}
17664exports.SVGGraphics = SVGGraphics;
17665
17666/***/ }),
17667/* 148 */
17668/***/ (function(module, exports, __w_pdfjs_require__) {
17669
17670"use strict";
17671
17672
17673Object.defineProperty(exports, "__esModule", {
17674  value: true
17675});
17676exports.PDFNodeStream = undefined;
17677
17678var _regenerator = __w_pdfjs_require__(137);
17679
17680var _regenerator2 = _interopRequireDefault(_regenerator);
17681
17682var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
17683
17684var _util = __w_pdfjs_require__(1);
17685
17686var _network_utils = __w_pdfjs_require__(149);
17687
17688function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17689
17690function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
17691
17692function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { c
17692onstructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
17693
17694function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
17695
17696function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17697
17698var fs = require('fs');
17699var http = require('http');
17700var https = require('https');
17701var url = require('url');
17702
17703var fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//;
17704function parseUrl(sourceUrl) {
17705  var parsedUrl = url.parse(sourceUrl);
17706  if (parsedUrl.protocol === 'file:' || parsedUrl.host) {
17707    return parsedUrl;
17708  }
17709  if (/^[a-z]:[/\\]/i.test(sourceUrl)) {
17710    return url.parse('file:///' + sourceUrl);
17711  }
17712  if (!parsedUrl.host) {
17713    parsedUrl.protocol = 'file:';
17714  }
17715  return parsedUrl;
17716}
17717
17718var PDFNodeStream = function () {
17719  function PDFNodeStream(source) {
17720    _classCallCheck(this, PDFNodeStream);
17721
17722    this.source = source;
17723    this.url = parseUrl(source.url);
17724    this.isHttp = this.url.protocol === 'http:' || this.url.protocol === 'https:';
17725    this.isFsUrl = this.url.protocol === 'file:';
17726    this.httpHeaders = this.isHttp && source.httpHeaders || {};
17727    this._fullRequest = null;
17728    this._rangeRequestReaders = [];
17729  }
17730
17731  _createClass(PDFNodeStream, [{
17732    key: 'getFullReader',
17733    value: function getFullReader() {
17734      (0, _util.assert)(!this._fullRequest);
17735      this._fullRequest = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);
17736      return this._fullRequest;
17737    }
17738  }, {
17739    key: 'getRangeReader',
17740    value: function getRangeReader(start, end) {
17741      var rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);
17742      this._rangeRequestReaders.push(rangeReader);
17743      return rangeReader;
17744    }
17745  }, {
17746    key: 'cancelAllRequests',
17747    value: function cancelAllRequests(reason) {
17748      if (this._fullRequest) {
17749        this._fullRequest.cancel(reason);
17750      }
17751      var readers = this._rangeRequestReaders.slice(0);
17752      readers.forEach(function (reader) {
17753        reader.cancel(reason);
17754      });
17755    }
17756  }]);
17757
17758  return PDFNodeStream;
17759}();
17760
17761var BaseFullReader = function () {
17762  function BaseFullReader(stream) {
17763    _classCallCheck(this, BaseFullReader);
17764
17765    this._url = stream.url;
17766    this._done = false;
17767    this._storedError = null;
17768    this.onProgress = null;
17769    var source = stream.source;
17770    this._contentLength = source.length;
17771    this._loaded = 0;
17772    this._filename = null;
17773    this._disableRange = source.disableRange || false;
17774    this._rangeChunkSize = source.rangeChunkSize;
17775    if (!this._rangeChunkSize && !this._disableRange) {
17776      this._disableRange = true;
17777    }
17778    this._isStreamingSupported = !source.disableStream;
17779    this._isRangeSupported = !source.disableRange;
17780    this._readableStream = null;
17781    this._readCapability = (0, _util.createPromiseCapability)();
17782    this._headersCapability = (0, _util.createPromiseCapability)();
17783  }
17784
17785  _createClass(BaseFullReader, [{
17786    key: 'read',
17787    value: function () {
17788      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
17789        var chunk, buffer;
17790        return _regenerator2.default.wrap(function _callee$(_context) {
17791          while (1) {
17792            switch (_context.prev = _context.next) {
17793              case 0:
17794                _context.next = 2;
17795                return this._readCapability.promise;
17796
17797              case 2:
17798                if (!this._done) {
17799                  _context.next = 4;
17800                  break;
17801                }
17802
17803                return _context.abrupt('return', {
17804                  value: undefined,
17805                  done: true
17806                });
17807
17808              case 4:
17809                if (!this._storedError) {
17810                  _context.next = 6;
17811                  break;
17812                }
17813
17814                throw this._storedError;
17815
17816              case 6:
17817                chunk = this._readableStream.read();
17818
17819                if (!(chunk === null)) {
17820                  _context.next = 10;
17821                  break;
17822                }
17823
17824                this._readCapability = (0, _util.createPromiseCapability)();
17825                return _context.abrupt('return', this.read());
17826
17827              case 10:
17828                this._loaded += chunk.length;
17829                if (this.onProgress) {
17830                  this.onProgress({
17831                    loaded: this._loaded,
17832                    total: this._contentLength
17833                  });
17834                }
17835                buffer = new Uint8Array(chunk).buffer;
17836                return _context.abrupt('return', {
17837                  value: buffer,
17838                  done: false
17839                });
17840
17841              case 14:
17842              case 'end':
17843                return _context.stop();
17844            }
17845          }
17846        }, _callee, this);
17847      }));
17848
17849      function read() {
17850        return _ref.apply(this, arguments);
17851      }
17852
17853      return read;
17854    }()
17855  }, {
17856    key: 'cancel',
17857    value: function cancel(reason) {
17858      if (!this._readableStream) {
17859        this._error(reason);
17860        return;
17861      }
17862      this._readableStream.destroy(reason);
17863    }
17864  }, {
17865    key: '_error',
17866    value: function _error(reason) {
17867      this._storedError = reason;
17868      this._readCapability.resolve();
17869    }
17870  }, {
17871    key: '_setReadableStream',
17872    value: function _setReadableStream(readableStream) {
17873      var _this = this;
17874
17875      this._readableStream = readableStream;
17876      readableStream.on('readable', function () {
17877        _this._readCapability.resolve();
17878      });
17879      readableStream.on('end', function () {
17880        readableStream.destroy();
17881        _this._done = true;
17882        _this._readCapability.resolve();
17883      });
17884      readableStream.on('error', function (reason) {
17885        _this._error(reason);
17886      });
17887      if (!this._isStreamingSupported && this._isRangeSupported) {
17888        this._error(new _util.AbortException('streaming is disabled'));
17889      }
17890      if (this._storedError) {
17891        this._readableStream.destroy(this._storedError);
17892      }
17893    }
17894  }, {
17895    key: 'headersReady',
17896    get: function get() {
17897      return this._headersCapability.promise;
17898    }
17899  }, {
17900    key: 'filename',
17901    get: function get() {
17902      return this._filename;
17903    }
17904  }, {
17905    key: 'contentLength',
17906    get: function get() {
17907      return this._contentLength;
17908    }
17909  }, {
17910    key: 'isRangeSupported',
17911    get: function get() {
17912      return this._isRangeSupported;
17913    }
17914  }, {
17915    key: 'isStreamingSupported',
17916    get: function get() {
17917      return this._isStreamingSupported;
17918    }
17919  }]);
17920
17921  return BaseFullReader;
17922}();
17923
17924var BaseRangeReader = function () {
17925  function BaseRangeReader(stream) {
17926    _classCallCheck(this, BaseRangeReader);
17927
17928    this._url = stream.url;
17929    this._done = false;
17930    this._storedError = null;
17931    this.onProgress = null;
17932    this._loaded = 0;
17933    this._readableStream = null;
17934    this._readCapability = (0, _util.createPromiseCapability)();
17935    var source = stream.source;
17936    this._isStreamingSupported = !source.disableStream;
17937  }
17938
17939  _createClass(BaseRangeReader, [{
17940    key: 'read',
17941    value: function () {
17942      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
17943        var chunk, buffer;
17944        return _regenerator2.default.wrap(function _callee2$(_context2) {
17945          while (1) {
17946            switch (_context2.prev = _context2.next) {
17947              case 0:
17948                _context2.next = 2;
17949                return this._readCapability.promise;
17950
17951              case 2:
17952                if (!this._done) {
17953                  _context2.next = 4;
17954                  break;
17955                }
17956
17957                return _context2.abrupt('return', {
17958                  value: undefined,
17959                  done: true
17960                });
17961
17962              case 4:
17963                if (!this._storedError) {
17964                  _context2.next = 6;
17965                  break;
17966                }
17967
17968                throw this._storedError;
17969
17970              case 6:
17971                chunk = this._readableStream.read();
17972
17973                if (!(chunk === null)) {
17974                  _context2.next = 10;
17975                  break;
17976                }
17977
17978                this._readCapability = (0, _util.createPromiseCapability)();
17979                return _context2.abrupt('return', this.read());
17980
17981              case 10:
17982                this._loaded += chunk.length;
17983                if (this.onProgress) {
17984                  this.onProgress({ loaded: this._loaded });
17985                }
17986                buffer = new Uint8Array(chunk).buffer;
17987                return _context2.abrupt('return', {
17988                  value: buffer,
17989                  done: false
17990                });
17991
17992              case 14:
17993              case 'end':
17994                return _context2.stop();
17995            }
17996          }
17997        }, _callee2, this);
17998      }));
17999
18000      function read() {
18001        return _ref2.apply(this, arguments);
18002      }
18003
18004      return read;
18005    }()
18006  }, {
18007    key: 'cancel',
18008    value: function cancel(reason) {
18009      if (!this._readableStream) {
18010        this._error(reason);
18011        return;
18012      }
18013      this._readableStream.destroy(reason);
18014    }
18015  }, {
18016    key: '_error',
18017    value: function _error(reason) {
18018      this._storedError = reason;
18019      this._readCapability.resolve();
18020    }
18021  }, {
18022    key: '_setReadableStream',
18023    value: function _setReadableStream(readableStream) {
18024      var _this2 = this;
18025
18026      this._readableStream = readableStream;
18027      readableStream.on('readable', function () {
18028        _this2._readCapability.resolve();
18029      });
18030      readableStream.on('end', function () {
18031        readableStream.destroy();
18032        _this2._done = true;
18033        _this2._readCapability.resolve();
18034      });
18035      readableStream.on('error', function (reason) {
18036        _this2._error(reason);
18037      });
18038      if (this._storedError) {
18039        this._readableStream.destroy(this._storedError);
18040      }
18041    }
18042  }, {
18043    key: 'isStreamingSupported',
18044    get: function get() {
18045      return this._isStreamingSupported;
18046    }
18047  }]);
18048
18049  return BaseRangeReader;
18050}();
18051
18052function createRequestOptions(url, headers) {
18053  return {
18054    protocol: url.protocol,
18055    auth: url.auth,
18056    host: url.hostname,
18057    port: url.port,
18058    path: url.path,
18059    method: 'GET',
18060    headers: headers
18061  };
18062}
18063
18064var PDFNodeStreamFullReader = function (_BaseFullReader) {
18065  _inherits(PDFNodeStreamFullReader, _BaseFullReader);
18066
18067  function PDFNodeStreamFullReader(stream) {
18068    _classCallCheck(this, PDFNodeStreamFullReader);
18069
18070    var _this3 = _possibleConstructorReturn(this, (PDFNodeStreamFullReader.__proto__ || Object.getPrototypeOf(PDFNodeStreamFullReader)).call(this, stream));
18071
18072    var handleResponse = function handleResponse(response) {
18073      if (response.statusCode === 404) {
18074        var error = new _util.MissingPDFException('Missing PDF "' + _this3._url + '".');
18075        _this3._storedError = error;
18076        _this3._headersCapability.reject(error);
18077        return;
18078      }
18079      _this3._headersCapability.resolve();
18080      _this3._setReadableStream(response);
18081      var getResponseHeader = function getResponseHeader(name) {
18082        return _this3._readableStream.headers[name.toLowerCase()];
18083      };
18084
18085      var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
18086        getResponseHeader: getResponseHeader,
18087        isHttp: stream.isHttp,
18088        rangeChunkSize: _this3._rangeChunkSize,
18089        disableRange: _this3._disableRange
18090      }),
18091          allowRangeRequests = _validateRangeRequest.allowRangeRequests,
18092          suggestedLength = _validateRangeRequest.suggestedLength;
18093
18094      _this3._isRangeSupported = allowRangeRequests;
18095      _this3._contentLength = suggestedLength || _this3._contentLength;
18096      _this3._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
18097    };
18098    _this3._request = null;
18099    if (_this3._url.protocol === 'http:') {
18100      _this3._request = http.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);
18101    } else {
18102      _this3._request = https.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);
18103    }
18104    _this3._request.on('error', function (reason) {
18105      _this3._storedError = reason;
18106      _this3._headersCapability.reject(reason);
18107    });
18108    _this3._request.end();
18109    return _this3;
18110  }
18111
18112  return PDFNodeStreamFullReader;
18113}(BaseFullReader);
18114
18115var PDFNodeStreamRangeReader = function (_BaseRangeReader) {
18116  _inherits(PDFNodeStreamRangeReader, _BaseRangeReader);
18117
18118  function PDFNodeStreamRangeReader(stream, start, end) {
18119    _classCallCheck(this, PDFNodeStreamRangeReader);
18120
18121    var _this4 = _possibleConstructorReturn(this, (PDFNodeStreamRangeReader.__proto__ || Object.getPrototypeOf(PDFNodeStreamRangeReader)).call(this, stream));
18122
18123    _this4._httpHeaders = {};
18124    for (var property in stream.httpHeaders) {
18125      var value = stream.httpHeaders[property];
18126      if (typeof value === 'undefined') {
18127        continue;
18128      }
18129      _this4._httpHeaders[property] = value;
18130    }
18131    _this4._httpHeaders['Range'] = 'bytes=' + start + '-' + (end - 1);
18132    var handleResponse = function handleResponse(response) {
18133      if (response.statusCode === 404) {
18134        var error = new _util.MissingPDFException('Missing PDF "' + _this4._url + '".');
18135        _this4._storedError = error;
18136        return;
18137      }
18138      _this4._setReadableStream(response);
18139    };
18140    _this4._request = null;
18141    if (_this4._url.protocol === 'http:') {
18142      _this4._request = http.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);
18143    } else {
18144      _this4._request = https.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);
18145    }
18146    _this4._request.on('error', function (reason) {
18147      _this4._storedError = reason;
18148    });
18149    _this4._request.end();
18150    return _this4;
18151  }
18152
18153  return PDFNodeStreamRangeReader;
18154}(BaseRangeReader);
18155
18156var PDFNodeStreamFsFullReader = function (_BaseFullReader2) {
18157  _inherits(PDFNodeStreamFsFullReader, _BaseFullReader2);
18158
18159  function PDFNodeStreamFsFullReader(stream) {
18160    _classCallCheck(this, PDFNodeStreamFsFullReader);
18161
18162    var _this5 = _possibleConstructorReturn(this, (PDFNodeStreamFsFullReader.__proto__ || Object.getPrototypeOf(PDFNodeStreamFsFullReader)).call(this, stream));
18163
18164    var path = decodeURIComponent(_this5._url.path);
18165    if (fileUriRegex.test(_this5._url.href)) {
18166      path = path.replace(/^\//, '');
18167    }
18168    fs.lstat(path, function (error, stat) {
18169      if (error) {
18170        if (error.code === 'ENOENT') {
18171          error = new _util.MissingPDFException('Missing PDF "' + path + '".');
18172        }
18173        _this5._storedError = error;
18174        _this5._headersCapability.reject(error);
18175        return;
18176      }
18177      _this5._contentLength = stat.size;
18178      _this5._setReadableStream(fs.createReadStream(path));
18179      _this5._headersCapability.resolve();
18180    });
18181    return _this5;
18182  }
18183
18184  return PDFNodeStreamFsFullReader;
18185}(BaseFullReader);
18186
18187var PDFNodeStreamFsRangeReader = function (_BaseRangeReader2) {
18188  _inherits(PDFNodeStreamFsRangeReader, _BaseRangeReader2);
18189
18190  function PDFNodeStreamFsRangeReader(stream, start, end) {
18191    _classCallCheck(this, PDFNodeStreamFsRangeReader);
18192
18193    var _this6 = _possibleConstructorReturn(this, (PDFNodeStreamFsRangeReader.__proto__ || Object.getPrototypeOf(PDFNodeStreamFsRangeReader)).call(this, stream));
18194
18195    var path = decodeURIComponent(_this6._url.path);
18196    if (fileUriRegex.test(_this6._url.href)) {
18197      path = path.replace(/^\//, '');
18198    }
18199    _this6._setReadableStream(fs.createReadStream(path, {
18200      start: start,
18201      end: end - 1
18202    }));
18203    return _this6;
18204  }
18205
18206  return PDFNodeStreamFsRangeReader;
18207}(BaseRangeReader);
18208
18209exports.PDFNodeStream = PDFNodeStream;
18210
18211/***/ }),
18212/* 149 */
18213/***/ (function(module, exports, __w_pdfjs_require__) {
18214
18215"use strict";
18216
18217
18218Object.defineProperty(exports, "__esModule", {
18219  value: true
18220});
18221exports.validateResponseStatus = exports.validateRangeRequestCapabilities = exports.extractFilenameFromHeader = exports.createResponseStatusError = undefined;
18222
18223var _util = __w_pdfjs_require__(1);
18224
18225var _content_disposition = __w_pdfjs_require__(150);
18226
18227function validateRangeRequestCapabilities(_ref) {
18228  var getResponseHeader = _ref.getResponseHeader,
18229      isHttp = _ref.isHttp,
18230      rangeChunkSize = _ref.rangeChunkSize,
18231      disableRange = _ref.disableRange;
18232
18233  (0, _util.assert)(rangeChunkSize > 0, 'Range chunk size must be larger than zero');
18234  var returnValues = {
18235    allowRangeRequests: false,
18236    suggestedLength: undefined
18237  };
18238  var length = parseInt(getResponseHeader('Content-Length'), 10);
18239  if (!Number.isInteger(length)) {
18240    return returnValues;
18241  }
18242  returnValues.suggestedLength = length;
18243  if (length <= 2 * rangeChunkSize) {
18244    return returnValues;
18245  }
18246  if (disableRange || !isHttp) {
18247    return returnValues;
18248  }
18249  if (getResponseHeader('Accept-Ranges') !== 'bytes') {
18250    return returnValues;
18251  }
18252  var contentEncoding = getResponseHeader('Content-Encoding') || 'identity';
18253  if (contentEncoding !== 'identity') {
18254    return returnValues;
18255  }
18256  returnValues.allowRangeRequests = true;
18257  return returnValues;
18258}
18259function extractFilenameFromHeader(getResponseHeader) {
18260  var contentDisposition = getResponseHeader('Content-Disposition');
18261  if (contentDisposition) {
18262    var filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);
18263    if (/\.pdf$/i.test(filename)) {
18264      return filename;
18265    }
18266  }
18267  return null;
18268}
18269function createResponseStatusError(status, url) {
18270  if (status === 404 || status === 0 && /^file:/.test(url)) {
18271    return new _util.MissingPDFException('Missing PDF "' + url + '".');
18272  }
18273  return new _util.UnexpectedResponseException('Unexpected server response (' + status + ') while retrieving PDF "' + url + '".', status);
18274}
18275function validateResponseStatus(status) {
18276  return status === 200 || status === 206;
18277}
18278exports.createResponseStatusError = createResponseStatusError;
18279exports.extractFilenameFromHeader = extractFilenameFromHeader;
18280exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;
18281exports.validateResponseStatus = validateResponseStatus;
18282
18283/***/ }),
18284/* 150 */
18285/***/ (function(module, exports, __w_pdfjs_require__) {
18286
18287"use strict";
18288
18289
18290Object.defineProperty(exports, "__esModule", {
18291  value: true
18292});
18293
18294var _slicedToArray = function () { function sliceIterator(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"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
18295
18296function getFilenameFromContentDispositionHeader(contentDisposition) {
18297  var needsEncodingFixup = true;
18298  var tmp = toParamRegExp('filename\\*', 'i').exec(contentDisposition);
18299  if (tmp) {
18300    tmp = tmp[1];
18301    var filename = rfc2616unquote(tmp);
18302    filename = unescape(filename);
18303    filename = rfc5987decode(filename);
18304    filename = rfc2047decode(filename);
18305    return fixupEncoding(filename);
18306  }
18307  tmp = rfc2231getparam(contentDisposition);
18308  if (tmp) {
18309    var _filename = rfc2047decode(tmp);
18310    return fixupEncoding(_filename);
18311  }
18312  tmp = toParamRegExp('filename', 'i').exec(contentDisposition);
18313  if (tmp) {
18314    tmp = tmp[1];
18315    var _filename2 = rfc2616unquote(tmp);
18316    _filename2 = rfc2047decode(_filename2);
18317    return fixupEncoding(_filename2);
18318  }
18319  function toParamRegExp(attributePattern, flags) {
18320    return new RegExp('(?:^|;)\\s*' + attributePattern + '\\s*=\\s*' + '(' + '[^";\\s][^;\\s]*' + '|' + '"(?:[^"\\\\]|\\\\"?)+"?' + ')', flags);
18321  }
18322  function textdecode(encoding, value) {
18323    if (encoding) {
18324      if (!/^[\x00-\xFF]+$/.test(value)) {
18325        return value;
18326      }
18327      try {
18328        var decoder = new TextDecoder(encoding, { fatal: true });
18329        var bytes = new Array(value.length);
18330        for (var i = 0; i < value.length; ++i) {
18331          bytes[i] = value.charCodeAt(i);
18332        }
18333        value = decoder.decode(new Uint8Array(bytes));
18334        needsEncodingFixup = false;
18335      } catch (e) {
18336        if (/^utf-?8$/i.test(encoding)) {
18337          try {
18338            value = decodeURIComponent(escape(value));
18339            needsEncodingFixup = false;
18340          } catch (err) {}
18341        }
18342      }
18343    }
18344    return value;
18345  }
18346  function fixupEncoding(value) {
18347    if (needsEncodingFixup && /[\x80-\xff]/.test(value)) {
18348      value = textdecode('utf-8', value);
18349      if (needsEncodingFixup) {
18350        value = textdecode('iso-8859-1', value);
18351      }
18352    }
18353    return value;
18354  }
18355  function rfc2231getparam(contentDisposition) {
18356    var matches = [],
18357        match = void 0;
18358    var iter = toParamRegExp('filename\\*((?!0\\d)\\d+)(\\*?)', 'ig');
18359    while ((match = iter.exec(contentDisposition)) !== null) {
18360      var _match = match,
18361          _match2 = _slicedToArray(_match, 4),
18362          n = _match2[1],
18363          quot = _match2[2],
18364          part = _match2[3];
18365
18366      n = parseInt(n, 10);
18367      if (n in matches) {
18368        if (n === 0) {
18369          break;
18370        }
18371        continue;
18372      }
18373      matches[n] = [quot, part];
18374    }
18375    var parts = [];
18376    for (var _n = 0; _n < matches.length; ++_n) {
18377      if (!(_n in matches)) {
18378        break;
18379      }
18380
18381      var _matches$_n = _slicedToArray(matches[_n], 2),
18382          _quot = _matches$_n[0],
18383          _part = _matches$_n[1];
18384
18385      _part = rfc2616unquote(_part);
18386      if (_quot) {
18387        _part = unescape(_part);
18388        if (_n === 0) {
18389          _part = rfc5987decode(_part);
18390        }
18391      }
18392      parts.push(_part);
18393    }
18394    return parts.join('');
18395  }
18396  function rfc2616unquote(value) {
18397    if (value.charAt(0) === '"') {
18398      var parts = value.slice(1).split('\\"');
18399      for (var i = 0; i < parts.length; ++i) {
18400        var quotindex = parts[i].indexOf('"');
18401        if (quotindex !== -1) {
18402          parts[i] = parts[i].slice(0, quotindex);
18403          parts.length = i + 1;
18404        }
18405        parts[i] = parts[i].replace(/\\(.)/g, '$1');
18406      }
18407      value = parts.join('"');
18408    }
18409    return value;
18410  }
18411  function rfc5987decode(extvalue) {
18412    var encodingend = extvalue.indexOf('\'');
18413    if (encodingend === -1) {
18414      return extvalue;
18415    }
18416    var encoding = extvalue.slice(0, encodingend);
18417    var langvalue = extvalue.slice(encodingend + 1);
18418    var value = langvalue.replace(/^[^']*'/, '');
18419    return textdecode(encoding, value);
18420  }
18421  function rfc2047decode(value) {
18422    if (value.slice(0, 2) !== '=?' || /[\x00-\x19\x80-\xff]/.test(value)) {
18423      return value;
18424    }
18425    return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (_, charset, encoding, text) {
18426      if (encoding === 'q' || encoding === 'Q') {
18427        text = text.replace(/_/g, ' ');
18428        text = text.replace(/=([0-9a-fA-F]{2})/g, function (_, hex) {
18429          return String.fromCharCode(parseInt(hex, 16));
18430        });
18431        return textdecode(charset, text);
18432      }
18433      try {
18434        text = atob(text);
18435      } catch (e) {}
18436      return textdecode(charset, text);
18437    });
18438  }
18439  return '';
18440}
18441exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
18442
18443/***/ }),
18444/* 151 */
18445/***/ (function(module, exports, __w_pdfjs_require__) {
18446
18447"use strict";
18448
18449
18450Object.defineProperty(exports, "__esModule", {
18451  value: true
18452});
18453exports.PDFFetchStream = undefined;
18454
18455var _regenerator = __w_pdfjs_require__(137);
18456
18457var _regenerator2 = _interopRequireDefault(_regenerator);
18458
18459var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
18460
18461var _util = __w_pdfjs_require__(1);
18462
18463var _network_utils = __w_pdfjs_require__(149);
18464
18465function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18466
18467function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { tr
18467y { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
18468
18469function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
18470
18471function createFetchOptions(headers, withCredentials, abortController) {
18472  return {
18473    method: 'GET',
18474    headers: headers,
18475    signal: abortController && abortController.signal,
18476    mode: 'cors',
18477    credentials: withCredentials ? 'include' : 'same-origin',
18478    redirect: 'follow'
18479  };
18480}
18481
18482var PDFFetchStream = function () {
18483  function PDFFetchStream(source) {
18484    _classCallCheck(this, PDFFetchStream);
18485
18486    this.source = source;
18487    this.isHttp = /^https?:/i.test(source.url);
18488    this.httpHeaders = this.isHttp && source.httpHeaders || {};
18489    this._fullRequestReader = null;
18490    this._rangeRequestReaders = [];
18491  }
18492
18493  _createClass(PDFFetchStream, [{
18494    key: 'getFullReader',
18495    value: function getFullReader() {
18496      (0, _util.assert)(!this._fullRequestReader);
18497      this._fullRequestReader = new PDFFetchStreamReader(this);
18498      return this._fullRequestReader;
18499    }
18500  }, {
18501    key: 'getRangeReader',
18502    value: function getRangeReader(begin, end) {
18503      var reader = new PDFFetchStreamRangeReader(this, begin, end);
18504      this._rangeRequestReaders.push(reader);
18505      return reader;
18506    }
18507  }, {
18508    key: 'cancelAllRequests',
18509    value: function cancelAllRequests(reason) {
18510      if (this._fullRequestReader) {
18511        this._fullRequestReader.cancel(reason);
18512      }
18513      var readers = this._rangeRequestReaders.slice(0);
18514      readers.forEach(function (reader) {
18515        reader.cancel(reason);
18516      });
18517    }
18518  }]);
18519
18520  return PDFFetchStream;
18521}();
18522
18523var PDFFetchStreamReader = function () {
18524  function PDFFetchStreamReader(stream) {
18525    var _this = this;
18526
18527    _classCallCheck(this, PDFFetchStreamReader);
18528
18529    this._stream = stream;
18530    this._reader = null;
18531    this._loaded = 0;
18532    this._filename = null;
18533    var source = stream.source;
18534    this._withCredentials = source.withCredentials;
18535    this._contentLength = source.length;
18536    this._headersCapability = (0, _util.createPromiseCapability)();
18537    this._disableRange = source.disableRange || false;
18538    this._rangeChunkSize = source.rangeChunkSize;
18539    if (!this._rangeChunkSize && !this._disableRange) {
18540      this._disableRange = true;
18541    }
18542    if (typeof AbortController !== 'undefined') {
18543      this._abortController = new AbortController();
18544    }
18545    this._isStreamingSupported = !source.disableStream;
18546    this._isRangeSupported = !source.disableRange;
18547    this._headers = new Headers();
18548    for (var property in this._stream.httpHeaders) {
18549      var value = this._stream.httpHeaders[property];
18550      if (typeof value === 'undefined') {
18551        continue;
18552      }
18553      this._headers.append(property, value);
18554    }
18555    var url = source.url;
18556    fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {
18557      if (!(0, _network_utils.validateResponseStatus)(response.status)) {
18558        throw (0, _network_utils.createResponseStatusError)(response.status, url);
18559      }
18560      _this._reader = response.body.getReader();
18561      _this._headersCapability.resolve();
18562      var getResponseHeader = function getResponseHeader(name) {
18563        return response.headers.get(name);
18564      };
18565
18566      var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
18567        getResponseHeader: getResponseHeader,
18568        isHttp: _this._stream.isHttp,
18569        rangeChunkSize: _this._rangeChunkSize,
18570        disableRange: _this._disableRange
18571      }),
18572          allowRangeRequests = _validateRangeRequest.allowRangeRequests,
18573          suggestedLength = _validateRangeRequest.suggestedLength;
18574
18575      _this._isRangeSupported = allowRangeRequests;
18576      _this._contentLength = suggestedLength || _this._contentLength;
18577      _this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
18578      if (!_this._isStreamingSupported && _this._isRangeSupported) {
18579        _this.cancel(new _util.AbortException('streaming is disabled'));
18580      }
18581    }).catch(this._headersCapability.reject);
18582    this.onProgress = null;
18583  }
18584
18585  _createClass(PDFFetchStreamReader, [{
18586    key: 'read',
18587    value: function () {
18588      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
18589        var _ref2, value, done, buffer;
18590
18591        return _regenerator2.default.wrap(function _callee$(_context) {
18592          while (1) {
18593            switch (_context.prev = _context.next) {
18594              case 0:
18595                _context.next = 2;
18596                return this._headersCapability.promise;
18597
18598              case 2:
18599                _context.next = 4;
18600                return this._reader.read();
18601
18602              case 4:
18603                _ref2 = _context.sent;
18604                value = _ref2.value;
18605                done = _ref2.done;
18606
18607                if (!done) {
18608                  _context.next = 9;
18609                  break;
18610                }
18611
18612                return _context.abrupt('return', {
18613                  value: value,
18614                  done: done
18615                });
18616
18617              case 9:
18618                this._loaded += value.byteLength;
18619                if (this.onProgress) {
18620                  this.onProgress({
18621                    loaded: this._loaded,
18622                    total: this._contentLength
18623                  });
18624                }
18625                buffer = new Uint8Array(value).buffer;
18626                return _context.abrupt('return', {
18627                  value: buffer,
18628                  done: false
18629                });
18630
18631              case 13:
18632              case 'end':
18633                return _context.stop();
18634            }
18635          }
18636        }, _callee, this);
18637      }));
18638
18639      function read() {
18640        return _ref.apply(this, arguments);
18641      }
18642
18643      return read;
18644    }()
18645  }, {
18646    key: 'cancel',
18647    value: function cancel(reason) {
18648      if (this._reader) {
18649        this._reader.cancel(reason);
18650      }
18651      if (this._abortController) {
18652        this._abortController.abort();
18653      }
18654    }
18655  }, {
18656    key: 'headersReady',
18657    get: function get() {
18658      return this._headersCapability.promise;
18659    }
18660  }, {
18661    key: 'filename',
18662    get: function get() {
18663      return this._filename;
18664    }
18665  }, {
18666    key: 'contentLength',
18667    get: function get() {
18668      return this._contentLength;
18669    }
18670  }, {
18671    key: 'isRangeSupported',
18672    get: function get() {
18673      return this._isRangeSupported;
18674    }
18675  }, {
18676    key: 'isStreamingSupported',
18677    get: function get() {
18678      return this._isStreamingSupported;
18679    }
18680  }]);
18681
18682  return PDFFetchStreamReader;
18683}();
18684
18685var PDFFetchStreamRangeReader = function () {
18686  function PDFFetchStreamRangeReader(stream, begin, end) {
18687    var _this2 = this;
18688
18689    _classCallCheck(this, PDFFetchStreamRangeReader);
18690
18691    this._stream = stream;
18692    this._reader = null;
18693    this._loaded = 0;
18694    var source = stream.source;
18695    this._withCredentials = source.withCredentials;
18696    this._readCapability = (0, _util.createPromiseCapability)();
18697    this._isStreamingSupported = !source.disableStream;
18698    if (typeof AbortController !== 'undefined') {
18699      this._abortController = new AbortController();
18700    }
18701    this._headers = new Headers();
18702    for (var property in this._stream.httpHeaders) {
18703      var value = this._stream.httpHeaders[property];
18704      if (typeof value === 'undefined') {
18705        continue;
18706      }
18707      this._headers.append(property, value);
18708    }
18709    var rangeStr = begin + '-' + (end - 1);
18710    this._headers.append('Range', 'bytes=' + rangeStr);
18711    var url = source.url;
18712    fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {
18713      if (!(0, _network_utils.validateResponseStatus)(response.status)) {
18714        throw (0, _network_utils.createResponseStatusError)(response.status, url);
18715      }
18716      _this2._readCapability.resolve();
18717      _this2._reader = response.body.getReader();
18718    });
18719    this.onProgress = null;
18720  }
18721
18722  _createClass(PDFFetchStreamRangeReader, [{
18723    key: 'read',
18724    value: function () {
18725      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
18726        var _ref4, value, done, buffer;
18727
18728        return _regenerator2.default.wrap(function _callee2$(_context2) {
18729          while (1) {
18730            switch (_context2.prev = _context2.next) {
18731              case 0:
18732                _context2.next = 2;
18733                return this._readCapability.promise;
18734
18735              case 2:
18736                _context2.next = 4;
18737                return this._reader.read();
18738
18739              case 4:
18740                _ref4 = _context2.sent;
18741                value = _ref4.value;
18742                done = _ref4.done;
18743
18744                if (!done) {
18745                  _context2.next = 9;
18746                  break;
18747                }
18748
18749                return _context2.abrupt('return', {
18750                  value: value,
18751                  done: done
18752                });
18753
18754              case 9:
18755                this._loaded += value.byteLength;
18756                if (this.onProgress) {
18757                  this.onProgress({ loaded: this._loaded });
18758                }
18759                buffer = new Uint8Array(value).buffer;
18760                return _context2.abrupt('return', {
18761                  value: buffer,
18762                  done: false
18763                });
18764
18765              case 13:
18766              case 'end':
18767                return _context2.stop();
18768            }
18769          }
18770        }, _callee2, this);
18771      }));
18772
18773      function read() {
18774        return _ref3.apply(this, arguments);
18775      }
18776
18777      return read;
18778    }()
18779  }, {
18780    key: 'cancel',
18781    value: function cancel(reason) {
18782      if (this._reader) {
18783        this._reader.cancel(reason);
18784      }
18785      if (this._abortController) {
18786        this._abortController.abort();
18787      }
18788    }
18789  }, {
18790    key: 'isStreamingSupported',
18791    get: function get() {
18792      return this._isStreamingSupported;
18793    }
18794  }]);
18795
18796  return PDFFetchStreamRangeReader;
18797}();
18798
18799exports.PDFFetchStream = PDFFetchStream;
18800
18801/***/ }),
18802/* 152 */
18803/***/ (function(module, exports, __w_pdfjs_require__) {
18804
18805"use strict";
18806
18807
18808Object.defineProperty(exports, "__esModule", {
18809  value: true
18810});
18811exports.NetworkManager = exports.PDFNetworkStream = undefined;
18812
18813var _regenerator = __w_pdfjs_require__(137);
18814
18815var _regenerator2 = _interopRequireDefault(_regenerator);
18816
18817var _util = __w_pdfjs_require__(1);
18818
18819var _network_utils = __w_pdfjs_require__(149);
18820
18821var _global_scope = __w_pdfjs_require__(3);
18822
18823var _global_scope2 = _interopRequireDefault(_global_scope);
18824
18825function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18826
18827function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { tr
18827y { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
18828
18829;
18830var OK_RESPONSE = 200;
18831var PARTIAL_CONTENT_RESPONSE = 206;
18832function NetworkManager(url, args) {
18833  this.url = url;
18834  args = args || {};
18835  this.isHttp = /^https?:/i.test(url);
18836  this.httpHeaders = this.isHttp && args.httpHeaders || {};
18837  this.withCredentials = args.withCredentials || false;
18838  this.getXhr = args.getXhr || function NetworkManager_getXhr() {
18839    return new XMLHttpRequest();
18840  };
18841  this.currXhrId = 0;
18842  this.pendingRequests = Object.create(null);
18843  this.loadedRequests = Object.create(null);
18844}
18845function getArrayBuffer(xhr) {
18846  var data = xhr.response;
18847  if (typeof data !== 'string') {
18848    return data;
18849  }
18850  var array = (0, _util.stringToBytes)(data);
18851  return array.buffer;
18852}
18853var supportsMozChunked = function supportsMozChunkedClosure() {
18854  try {
18855    var x = new XMLHttpRequest();
18856    x.open('GET', _global_scope2.default.location.href);
18857    x.responseType = 'moz-chunked-arraybuffer';
18858    return x.responseType === 'moz-chunked-arraybuffer';
18859  } catch (e) {
18860    return false;
18861  }
18862}();
18863NetworkManager.prototype = {
18864  requestRange: function NetworkManager_requestRange(begin, end, listeners) {
18865    var args = {
18866      begin: begin,
18867      end: end
18868    };
18869    for (var prop in listeners) {
18870      args[prop] = listeners[prop];
18871    }
18872    return this.request(args);
18873  },
18874  requestFull: function NetworkManager_requestFull(listeners) {
18875    return this.request(listeners);
18876  },
18877  request: function NetworkManager_request(args) {
18878    var xhr = this.getXhr();
18879    var xhrId = this.currXhrId++;
18880    var pendingRequest = this.pendingRequests[xhrId] = { xhr: xhr };
18881    xhr.open('GET', this.url);
18882    xhr.withCredentials = this.withCredentials;
18883    for (var property in this.httpHeaders) {
18884      var value = this.httpHeaders[property];
18885      if (typeof value === 'undefined') {
18886        continue;
18887      }
18888      xhr.setRequestHeader(property, value);
18889    }
18890    if (this.isHttp && 'begin' in args && 'end' in args) {
18891      var rangeStr = args.begin + '-' + (args.end - 1);
18892      xhr.setRequestHeader('Range', 'bytes=' + rangeStr);
18893      pendingRequest.expectedStatus = 206;
18894    } else {
18895      pendingRequest.expectedStatus = 200;
18896    }
18897    var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData;
18898    if (useMozChunkedLoading) {
18899      xhr.responseType = 'moz-chunked-arraybuffer';
18900      pendingRequest.onProgressiveData = args.onProgressiveData;
18901      pendingRequest.mozChunked = true;
18902    } else {
18903      xhr.responseType = 'arraybuffer';
18904    }
18905    if (args.onError) {
18906      xhr.onerror = function (evt) {
18907        args.onError(xhr.status);
18908      };
18909    }
18910    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);
18911    xhr.onprogress = this.onProgress.bind(this, xhrId);
18912    pendingRequest.onHeadersReceived = args.onHeadersReceived;
18913    pendingRequest.onDone = args.onDone;
18914    pendingRequest.onError = args.onError;
18915    pendingRequest.onProgress = args.onProgress;
18916    xhr.send(null);
18917    return xhrId;
18918  },
18919  onProgress: function NetworkManager_onProgress(xhrId, evt) {
18920    var pendingRequest = this.pendingRequests[xhrId];
18921    if (!pendingRequest) {
18922      return;
18923    }
18924    if (pendingRequest.mozChunked) {
18925      var chunk = getArrayBuffer(pendingRequest.xhr);
18926      pendingRequest.onProgressiveData(chunk);
18927    }
18928    var onProgress = pendingRequest.onProgress;
18929    if (onProgress) {
18930      onProgress(evt);
18931    }
18932  },
18933  onStateChange: function NetworkManager_onStateChange(xhrId, evt) {
18934    var pendingRequest = this.pendingRequests[xhrId];
18935    if (!pendingRequest) {
18936      return;
18937    }
18938    var xhr = pendingRequest.xhr;
18939    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {
18940      pendingRequest.onHeadersReceived();
18941      delete pendingRequest.onHeadersReceived;
18942    }
18943    if (xhr.readyState !== 4) {
18944      return;
18945    }
18946    if (!(xhrId in this.pendingRequests)) {
18947      return;
18948    }
18949    delete this.pendingRequests[xhrId];
18950    if (xhr.status === 0 && this.isHttp) {
18951      if (pendingRequest.onError) {
18952        pendingRequest.onError(xhr.status);
18953      }
18954      return;
18955    }
18956    var xhrStatus = xhr.status || OK_RESPONSE;
18957    var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;
18958    if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {
18959      if (pendingRequest.onError) {
18960        pendingRequest.onError(xhr.status);
18961      }
18962      return;
18963    }
18964    this.loadedRequests[xhrId] = true;
18965    var chunk = getArrayBuffer(xhr);
18966    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {
18967      var rangeHeader = xhr.getResponseHeader('Content-Range');
18968      var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader);
18969      var begin = parseInt(matches[1], 10);
18970      pendingRequest.onDone({
18971        begin: begin,
18972        chunk: chunk
18973      });
18974    } else if (pendingRequest.onProgressiveData) {
18975      pendingRequest.onDone(null);
18976    } else if (chunk) {
18977      pendingRequest.onDone({
18978        begin: 0,
18979        chunk: chunk
18980      });
18981    } else if (pendingRequest.onError) {
18982      pendingRequest.onError(xhr.status);
18983    }
18984  },
18985  hasPendingRequests: function NetworkManager_hasPendingRequests() {
18986    for (var xhrId in this.pendingRequests) {
18987      return true;
18988    }
18989    return false;
18990  },
18991  getRequestXhr: function NetworkManager_getXhr(xhrId) {
18992    return this.pendingRequests[xhrId].xhr;
18993  },
18994  isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) {
18995    return !!this.pendingRequests[xhrId].onProgressiveData;
18996  },
18997  isPendingRequest: function NetworkManager_isPendingRequest(xhrId) {
18998    return xhrId in this.pendingRequests;
18999  },
19000  isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) {
19001    return xhrId in this.loadedRequests;
19002  },
19003  abortAllRequests: function NetworkManager_abortAllRequests() {
19004    for (var xhrId in this.pendingRequests) {
19005      this.abortRequest(xhrId | 0);
19006    }
19007  },
19008  abortRequest: function NetworkManager_abortRequest(xhrId) {
19009    var xhr = this.pendingRequests[xhrId].xhr;
19010    delete this.pendingRequests[xhrId];
19011    xhr.abort();
19012  }
19013};
19014function PDFNetworkStream(source) {
19015  this._source = source;
19016  this._manager = new NetworkManager(source.url, {
19017    httpHeaders: source.httpHeaders,
19018    withCredentials: source.withCredentials
19019  });
19020  this._rangeChunkSize = source.rangeChunkSize;
19021  this._fullRequestReader = null;
19022  this._rangeRequestReaders = [];
19023}
19024PDFNetworkStream.prototype = {
19025  _onRangeRequestReaderClosed: function PDFNetworkStream_onRangeRequestReaderClosed(reader) {
19026    var i = this._rangeRequestReaders.indexOf(reader);
19027    if (i >= 0) {
19028      this._rangeRequestReaders.splice(i, 1);
19029    }
19030  },
19031  getFullReader: function PDFNetworkStream_getFullReader() {
19032    (0, _util.assert)(!this._fullRequestReader);
19033    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);
19034    return this._fullRequestReader;
19035  },
19036  getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) {
19037    var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);
19038    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);
19039    this._rangeRequestReaders.push(reader);
19040    return reader;
19041  },
19042  cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) {
19043    if (this._fullRequestReader) {
19044      this._fullRequestReader.cancel(reason);
19045    }
19046    var readers = this._rangeRequestReaders.slice(0);
19047    readers.forEach(function (reader) {
19048      reader.cancel(reason);
19049    });
19050  }
19051};
19052function PDFNetworkStreamFullRequestReader(manager, source) {
19053  this._manager = manager;
19054  var args = {
19055    onHeadersReceived: this._onHeadersReceived.bind(this),
19056    onProgressiveData: source.disableStream ? null : this._onProgressiveData.bind(this),
19057    onDone: this._onDone.bind(this),
19058    onError: this._onError.bind(this),
19059    onProgress: this._onProgress.bind(this)
19060  };
19061  this._url = source.url;
19062  this._fullRequestId = manager.requestFull(args);
19063  this._headersReceivedCapability = (0, _util.createPromiseCapability)();
19064  this._disableRange = source.disableRange || false;
19065  this._contentLength = source.length;
19066  this._rangeChunkSize = source.rangeChunkSize;
19067  if (!this._rangeChunkSize && !this._disableRange) {
19068    this._disableRange = true;
19069  }
19070  this._isStreamingSupported = false;
19071  this._isRangeSupported = false;
19072  this._cachedChunks = [];
19073  this._requests = [];
19074  this._done = false;
19075  this._storedError = undefined;
19076  this._filename = null;
19077  this.onProgress = null;
19078}
19079PDFNetworkStreamFullRequestReader.prototype = {
19080  _onHeadersReceived: function PDFNetworkStreamFullRequestReader_onHeadersReceived() {
19081    var fullRequestXhrId = this._fullRequestId;
19082    var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);
19083    var getResponseHeader = function getResponseHeader(name) {
19084      return fullRequestXhr.getResponseHeader(name);
19085    };
19086
19087    var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
19088      getResponseHeader: getResponseHeader,
19089      isHttp: this._manager.isHttp,
19090      rangeChunkSize: this._rangeChunkSize,
19091      disableRange: this._disableRange
19092    }),
19093        allowRangeRequests = _validateRangeRequest.allowRangeRequests,
19094        suggestedLength = _validateRangeRequest.suggestedLength;
19095
19096    if (allowRangeRequests) {
19097      this._isRangeSupported = true;
19098    }
19099    this._contentLength = suggestedLength || this._contentLength;
19100    this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
19101    var networkManager = this._manager;
19102    if (networkManager.isStreamingRequest(fullRequestXhrId)) {
19103      this._isStreamingSupported = true;
19104    } else if (this._isRangeSupported) {
19105      networkManager.abortRequest(fullRequestXhrId);
19106    }
19107    this._headersReceivedCapability.resolve();
19108  },
19109  _onProgressiveData: function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) {
19110    if (this._requests.length > 0) {
19111      var requestCapability = this._requests.shift();
19112      requestCapability.resolve({
19113        value: chunk,
19114        done: false
19115      });
19116    } else {
19117      this._cachedChunks.push(chunk);
19118    }
19119  },
19120  _onDone: function PDFNetworkStreamFullRequestReader_onDone(args) {
19121    if (args) {
19122      this._onProgressiveData(args.chunk);
19123    }
19124    this._done = true;
19125    if (this._cachedChunks.length > 0) {
19126      return;
19127    }
19128    this._requests.forEach(function (requestCapability) {
19129      requestCapability.resolve({
19130        value: undefined,
19131        done: true
19132      });
19133    });
19134    this._requests = [];
19135  },
19136  _onError: function PDFNetworkStreamFullRequestReader_onError(status) {
19137    var url = this._url;
19138    var exception = (0, _network_utils.createResponseStatusError)(status, url);
19139    this._storedError = exception;
19140    this._headersReceivedCapability.reject(exception);
19141    this._requests.forEach(function (requestCapability) {
19142      requestCapability.reject(exception);
19143    });
19144    this._requests = [];
19145    this._cachedChunks = [];
19146  },
19147  _onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) {
19148    if (this.onProgress) {
19149      this.onProgress({
19150        loaded: data.loaded,
19151        total: data.lengthComputable ? data.total : this._contentLength
19152      });
19153    }
19154  },
19155  get filename() {
19156    return this._filename;
19157  },
19158  get isRangeSupported() {
19159    return this._isRangeSupported;
19160  },
19161  get isStreamingSupported() {
19162    return this._isStreamingSupported;
19163  },
19164  get contentLength() {
19165    return this._contentLength;
19166  },
19167  get headersReady() {
19168    return this._headersReceivedCapability.promise;
19169  },
19170  read: function () {
19171    var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
19172      var chunk, requestCapability;
19173      return _regenerator2.default.wrap(function _callee$(_context) {
19174        while (1) {
19175          switch (_context.prev = _context.next) {
19176            case 0:
19177              if (!this._storedError) {
19178                _context.next = 2;
19179                break;
19180              }
19181
19182              throw this._storedError;
19183
19184            case 2:
19185              if (!(this._cachedChunks.length > 0)) {
19186                _context.next = 5;
19187                break;
19188              }
19189
19190              chunk = this._cachedChunks.shift();
19191              return _context.abrupt('return', {
19192                value: chunk,
19193                done: false
19194              });
19195
19196            case 5:
19197              if (!this._done) {
19198                _context.next = 7;
19199                break;
19200              }
19201
19202              return _context.abrupt('return', {
19203                value: undefined,
19204                done: true
19205              });
19206
19207            case 7:
19208              requestCapability = (0, _util.createPromiseCapability)();
19209
19210              this._requests.push(requestCapability);
19211              return _context.abrupt('return', requestCapability.promise);
19212
19213            case 10:
19214            case 'end':
19215              return _context.stop();
19216          }
19217        }
19218      }, _callee, this);
19219    }));
19220
19221    function read() {
19222      return _ref.apply(this, arguments);
19223    }
19224
19225    return read;
19226  }(),
19227
19228  cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) {
19229    this._done = true;
19230    this._headersReceivedCapability.reject(reason);
19231    this._requests.forEach(function (requestCapability) {
19232      requestCapability.resolve({
19233        value: undefined,
19234        done: true
19235      });
19236    });
19237    this._requests = [];
19238    if (this._manager.isPendingRequest(this._fullRequestId)) {
19239      this._manager.abortRequest(this._fullRequestId);
19240    }
19241    this._fullRequestReader = null;
19242  }
19243};
19244function PDFNetworkStreamRangeRequestReader(manager, begin, end) {
19245  this._manager = manager;
19246  var args = {
19247    onDone: this._onDone.bind(this),
19248    onProgress: this._onProgress.bind(this)
19249  };
19250  this._requestId = manager.requestRange(begin, end, args);
19251  this._requests = [];
19252  this._queuedChunk = null;
19253  this._done = false;
19254  this.onProgress = null;
19255  this.onClosed = null;
19256}
19257PDFNetworkStreamRangeRequestReader.prototype = {
19258  _close: function PDFNetworkStreamRangeRequestReader_close() {
19259    if (this.onClosed) {
19260      this.onClosed(this);
19261    }
19262  },
19263  _onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) {
19264    var chunk = data.chunk;
19265    if (this._requests.length > 0) {
19266      var requestCapability = this._requests.shift();
19267      requestCapability.resolve({
19268        value: chunk,
19269        done: false
19270      });
19271    } else {
19272      this._queuedChunk = chunk;
19273    }
19274    this._done = true;
19275    this._requests.forEach(function (requestCapability) {
19276      requestCapability.resolve({
19277        value: undefined,
19278        done: true
19279      });
19280    });
19281    this._requests = [];
19282    this._close();
19283  },
19284  _onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) {
19285    if (!this.isStreamingSupported && this.onProgress) {
19286      this.onProgress({ loaded: evt.loaded });
19287    }
19288  },
19289  get isStreamingSupported() {
19290    return false;
19291  },
19292  read: function () {
19293    var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
19294      var chunk, requestCapability;
19295      return _regenerator2.default.wrap(function _callee2$(_context2) {
19296        while (1) {
19297          switch (_context2.prev = _context2.next) {
19298            case 0:
19299              if (!(this._queuedChunk !== null)) {
19300                _context2.next = 4;
19301                break;
19302              }
19303
19304              chunk = this._queuedChunk;
19305
19306              this._queuedChunk = null;
19307              return _context2.abrupt('return', {
19308                value: chunk,
19309                done: false
19310              });
19311
19312            case 4:
19313              if (!this._done) {
19314                _context2.next = 6;
19315                break;
19316              }
19317
19318              return _context2.abrupt('return', {
19319                value: undefined,
19320                done: true
19321              });
19322
19323            case 6:
19324              requestCapability = (0, _util.createPromiseCapability)();
19325
19326              this._requests.push(requestCapability);
19327              return _context2.abrupt('return', requestCapability.promise);
19328
19329            case 9:
19330            case 'end':
19331              return _context2.stop();
19332          }
19333        }
19334      }, _callee2, this);
19335    }));
19336
19337    function read() {
19338      return _ref2.apply(this, arguments);
19339    }
19340
19341    return read;
19342  }(),
19343
19344  cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) {
19345    this._done = true;
19346    this._requests.forEach(function (requestCapability) {
19347      requestCapability.resolve({
19348        value: undefined,
19349        done: true
19350      });
19351    });
19352    this._requests = [];
19353    if (this._manager.isPendingRequest(this._requestId)) {
19354      this._manager.abortRequest(this._requestId);
19355    }
19356    this._close();
19357  }
19358};
19359exports.PDFNetworkStream = PDFNetworkStream;
19360exports.NetworkManager = NetworkManager;
19361
19362/***/ })
19363/******/ ]);
19364});
19365//# sourceMappingURL=pdf.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.