pdfjs-dist 2.0.943 → 2.4.456

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pdfjs-dist might be problematic. Click here for more details.

Files changed (192) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/README.md +4 -0
  3. package/bower.json +1 -1
  4. package/build/pdf.js +8286 -14230
  5. package/build/pdf.js.map +1 -1
  6. package/build/pdf.min.js +22 -1
  7. package/build/pdf.worker.entry.js +5 -3
  8. package/build/pdf.worker.js +25500 -26628
  9. package/build/pdf.worker.js.map +1 -1
  10. package/build/pdf.worker.min.js +22 -1
  11. package/es5/build/pdf.js +25473 -0
  12. package/es5/build/pdf.js.map +1 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +57878 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/web/images/annotation-check.svg +11 -0
  17. package/es5/web/images/annotation-comment.svg +16 -0
  18. package/es5/web/images/annotation-help.svg +26 -0
  19. package/es5/web/images/annotation-insert.svg +10 -0
  20. package/es5/web/images/annotation-key.svg +11 -0
  21. package/es5/web/images/annotation-newparagraph.svg +11 -0
  22. package/es5/web/images/annotation-noicon.svg +7 -0
  23. package/es5/web/images/annotation-note.svg +42 -0
  24. package/es5/web/images/annotation-paragraph.svg +16 -0
  25. package/es5/web/images/loading-icon.gif +0 -0
  26. package/es5/web/images/shadow.png +0 -0
  27. package/es5/web/images/texture.png +0 -0
  28. package/es5/web/pdf_viewer.css +407 -0
  29. package/es5/web/pdf_viewer.js +7757 -0
  30. package/es5/web/pdf_viewer.js.map +1 -0
  31. package/image_decoders/pdf.image_decoders.js +2887 -4094
  32. package/image_decoders/pdf.image_decoders.js.map +1 -1
  33. package/image_decoders/pdf.image_decoders.min.js +22 -1
  34. package/lib/README.md +7 -0
  35. package/lib/core/annotation.js +855 -778
  36. package/lib/core/arithmetic_decoder.js +325 -311
  37. package/lib/core/bidi.js +117 -50
  38. package/lib/core/ccitt.js +251 -89
  39. package/lib/core/ccitt_stream.js +26 -16
  40. package/lib/core/cff_parser.js +525 -197
  41. package/lib/core/charsets.js +6 -5
  42. package/lib/core/chunked_stream.js +541 -406
  43. package/lib/core/cmap.js +368 -253
  44. package/lib/core/colorspace.js +781 -800
  45. package/lib/core/core_utils.js +152 -0
  46. package/lib/core/crypto.js +609 -422
  47. package/lib/core/document.js +649 -481
  48. package/lib/core/encodings.js +33 -24
  49. package/lib/core/evaluator.js +1471 -736
  50. package/lib/core/font_renderer.js +289 -149
  51. package/lib/core/fonts.js +1067 -413
  52. package/lib/core/function.js +517 -287
  53. package/lib/core/glyphlist.js +4529 -4527
  54. package/lib/core/image.js +232 -114
  55. package/lib/core/image_utils.js +94 -0
  56. package/lib/core/jbig2.js +711 -342
  57. package/lib/core/jbig2_stream.js +31 -19
  58. package/lib/core/jpeg_stream.js +151 -26
  59. package/lib/core/jpg.js +433 -181
  60. package/lib/core/jpx.js +551 -143
  61. package/lib/core/jpx_stream.js +40 -28
  62. package/lib/core/metrics.js +2931 -2931
  63. package/lib/core/murmurhash3.js +104 -97
  64. package/lib/core/obj.js +1561 -1053
  65. package/lib/core/operator_list.js +192 -64
  66. package/lib/core/parser.js +1162 -864
  67. package/lib/core/pattern.js +224 -75
  68. package/lib/core/pdf_manager.js +154 -285
  69. package/lib/core/primitives.js +145 -69
  70. package/lib/core/ps_parser.js +212 -162
  71. package/lib/core/standard_fonts.js +245 -244
  72. package/lib/core/stream.js +353 -81
  73. package/lib/core/type1_parser.js +218 -68
  74. package/lib/core/unicode.js +1682 -1655
  75. package/lib/core/worker.js +233 -302
  76. package/lib/core/worker_stream.js +168 -0
  77. package/lib/display/annotation_layer.js +808 -862
  78. package/lib/display/api.js +1778 -1462
  79. package/lib/display/api_compatibility.js +14 -9
  80. package/lib/display/canvas.js +463 -140
  81. package/lib/display/content_disposition.js +86 -58
  82. package/lib/display/display_utils.js +524 -0
  83. package/lib/display/fetch_stream.js +202 -274
  84. package/lib/display/font_loader.js +311 -333
  85. package/lib/display/metadata.js +98 -88
  86. package/lib/display/network.js +343 -347
  87. package/lib/display/network_utils.js +46 -26
  88. package/lib/display/node_stream.js +326 -404
  89. package/lib/display/pattern_helper.js +168 -69
  90. package/lib/display/svg.js +1296 -885
  91. package/lib/display/text_layer.js +229 -103
  92. package/lib/display/transport_stream.js +290 -250
  93. package/lib/display/webgl.js +116 -83
  94. package/lib/display/worker_options.js +6 -5
  95. package/lib/display/xml_parser.js +358 -337
  96. package/lib/examples/node/domstubs.js +95 -39
  97. package/lib/pdf.js +49 -31
  98. package/lib/pdf.worker.js +7 -5
  99. package/lib/shared/compatibility.js +3 -145
  100. package/lib/shared/is_node.js +8 -7
  101. package/lib/shared/message_handler.js +367 -314
  102. package/lib/shared/util.js +421 -415
  103. package/lib/test/unit/annotation_spec.js +1570 -690
  104. package/lib/test/unit/api_spec.js +855 -493
  105. package/lib/test/unit/bidi_spec.js +12 -12
  106. package/lib/test/unit/cff_parser_spec.js +88 -61
  107. package/lib/test/unit/clitests_helper.js +9 -12
  108. package/lib/test/unit/cmap_spec.js +140 -88
  109. package/lib/test/unit/colorspace_spec.js +204 -152
  110. package/lib/test/unit/core_utils_spec.js +211 -0
  111. package/lib/test/unit/crypto_spec.js +194 -182
  112. package/lib/test/unit/custom_spec.js +50 -64
  113. package/lib/test/unit/display_svg_spec.js +53 -38
  114. package/lib/test/unit/display_utils_spec.js +263 -0
  115. package/lib/test/unit/document_spec.js +17 -22
  116. package/lib/test/unit/encodings_spec.js +15 -57
  117. package/lib/test/unit/evaluator_spec.js +90 -83
  118. package/lib/test/unit/fetch_stream_spec.js +111 -0
  119. package/lib/test/unit/function_spec.js +219 -205
  120. package/lib/test/unit/jasmine-boot.js +68 -39
  121. package/lib/test/unit/message_handler_spec.js +187 -160
  122. package/lib/test/unit/metadata_spec.js +87 -34
  123. package/lib/test/unit/murmurhash3_spec.js +13 -13
  124. package/lib/test/unit/network_spec.js +26 -59
  125. package/lib/test/unit/network_utils_spec.js +187 -121
  126. package/lib/test/unit/node_stream_spec.js +98 -90
  127. package/lib/test/unit/parser_spec.js +173 -131
  128. package/lib/test/unit/pdf_find_controller_spec.js +148 -67
  129. package/lib/test/unit/pdf_find_utils_spec.js +35 -34
  130. package/lib/test/unit/pdf_history_spec.js +45 -33
  131. package/lib/test/unit/primitives_spec.js +161 -126
  132. package/lib/test/unit/stream_spec.js +22 -15
  133. package/lib/test/unit/test_utils.js +149 -98
  134. package/lib/test/unit/testreporter.js +36 -18
  135. package/lib/test/unit/type1_parser_spec.js +46 -44
  136. package/lib/test/unit/ui_utils_spec.js +388 -372
  137. package/lib/test/unit/unicode_spec.js +49 -46
  138. package/lib/test/unit/util_spec.js +144 -248
  139. package/lib/web/annotation_layer_builder.js +75 -95
  140. package/lib/web/app.js +1538 -1147
  141. package/lib/web/app_options.js +116 -104
  142. package/lib/web/base_viewer.js +950 -775
  143. package/lib/web/chromecom.js +217 -225
  144. package/lib/web/debugger.js +236 -148
  145. package/lib/web/download_manager.js +50 -50
  146. package/lib/web/firefox_print_service.js +51 -33
  147. package/lib/web/firefoxcom.js +225 -352
  148. package/lib/web/genericcom.js +30 -93
  149. package/lib/web/genericl10n.js +26 -143
  150. package/lib/web/grab_to_pan.js +57 -33
  151. package/lib/web/interfaces.js +105 -232
  152. package/lib/web/overlay_manager.js +73 -227
  153. package/lib/web/password_prompt.js +44 -62
  154. package/lib/web/pdf_attachment_viewer.js +118 -123
  155. package/lib/web/pdf_cursor_tools.js +89 -93
  156. package/lib/web/pdf_document_properties.js +242 -281
  157. package/lib/web/pdf_find_bar.js +157 -163
  158. package/lib/web/pdf_find_controller.js +598 -454
  159. package/lib/web/pdf_find_utils.js +32 -16
  160. package/lib/web/pdf_history.js +481 -355
  161. package/lib/web/pdf_link_service.js +355 -323
  162. package/lib/web/pdf_outline_viewer.js +167 -152
  163. package/lib/web/pdf_page_view.js +511 -457
  164. package/lib/web/pdf_presentation_mode.js +347 -335
  165. package/lib/web/pdf_print_service.js +133 -103
  166. package/lib/web/pdf_rendering_queue.js +98 -100
  167. package/lib/web/pdf_sidebar.js +323 -299
  168. package/lib/web/pdf_sidebar_resizer.js +107 -108
  169. package/lib/web/pdf_single_page_viewer.js +94 -146
  170. package/lib/web/pdf_thumbnail_view.js +319 -269
  171. package/lib/web/pdf_thumbnail_viewer.js +219 -199
  172. package/lib/web/pdf_viewer.component.js +111 -32
  173. package/lib/web/pdf_viewer.js +61 -101
  174. package/lib/web/preferences.js +87 -272
  175. package/lib/web/secondary_toolbar.js +207 -220
  176. package/lib/web/text_layer_builder.js +322 -322
  177. package/lib/web/toolbar.js +227 -180
  178. package/lib/web/ui_utils.js +476 -421
  179. package/lib/web/view_history.js +59 -208
  180. package/lib/web/viewer_compatibility.js +9 -6
  181. package/package.json +2 -9
  182. package/web/pdf_viewer.css +36 -22
  183. package/web/pdf_viewer.js +4407 -4516
  184. package/web/pdf_viewer.js.map +1 -1
  185. package/webpack.js +14 -5
  186. package/external/streams/streams-lib.js +0 -3962
  187. package/external/url/url-lib.js +0 -627
  188. package/lib/display/dom_utils.js +0 -441
  189. package/lib/shared/streams_polyfill.js +0 -39
  190. package/lib/shared/url_polyfill.js +0 -50
  191. package/lib/test/unit/dom_utils_spec.js +0 -89
  192. package/lib/web/dom_events.js +0 -140
package/build/pdf.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/global_scope.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/string/includes.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.string.includes.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_export.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_global.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_core.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_hide.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-dp.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_an-object.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_is-object.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_ie8-dom-define.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_descriptors.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_fails.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_dom-create.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-primitive.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_property-desc.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_redefine.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_has.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_uid.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_ctx.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_a-function.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_string-context.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_is-regexp.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_cof.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_wks.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_shared.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_library.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_defined.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_fails-is-regexp.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/array/includes.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.array.includes.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_array-includes.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-iobject.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iobject.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-length.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-integer.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-absolute-index.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_add-to-unscopables.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/object/assign.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.object.assign.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-assign.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-keys.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-keys-internal.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_shared-key.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_enum-bug-keys.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-gops.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-pie.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-object.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/math/log2.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.math.log2.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/number/is-nan.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.number.is-nan.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/number/is-integer.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.number.is-integer.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_is-integer.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/promise.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.object.to-string.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_classof.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.string.iterator.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_string-at.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iter-define.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iterators.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iter-create.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-create.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-dps.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_html.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_set-to-string-tag.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-gpo.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/web.dom.iterable.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.array.iterator.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iter-step.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.promise.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_an-instance.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_for-of.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iter-call.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_is-array-iter.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/core.get-iterator-method.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_species-constructor.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_task.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_invoke.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_microtask.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_new-promise-capability.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_perform.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_user-agent.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_promise-resolve.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_redefine-all.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_set-species.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iter-detect.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.promise.finally.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.promise.try.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/weak-map.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.weak-map.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_array-methods.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_array-species-create.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_array-species-constructor.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_is-array.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_meta.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_collection-weak.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_validate-collection.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_collection.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_inherit-if-required.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_set-proto.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-gopd.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.weak-map.of.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_set-collection-of.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.weak-map.from.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_set-collection-from.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/string/code-point-at.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.string.code-point-at.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/string/from-code-point.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.string.from-code-point.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/es6/symbol.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.symbol.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_wks-ext.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_wks-define.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_enum-keys.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-gopn-ext.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-gopn.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/object/values.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.object.values.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-to-array.js","webpack://pdfjs-dist/build/pdf/src/shared/streams_polyfill.js","webpack://pdfjs-dist/build/pdf/external/streams/streams-lib.js","webpack://pdfjs-dist/build/pdf/src/shared/url_polyfill.js","webpack://pdfjs-dist/build/pdf/external/url/url-lib.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/dom_utils.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/api_compatibility.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/node_modules/babel-runtime/regenerator/index.js","webpack://pdfjs-dist/build/pdf/node_modules/regenerator-runtime/runtime-module.js","webpack://pdfjs-dist/build/pdf/node_modules/regenerator-runtime/runtime.js","webpack://pdfjs-dist/build/pdf/node_modules/webpack/buildin/module.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/xml_parser.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/webgl.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network.js"],"names":["pdfjsVersion","pdfjsBuild","pdfjsSharedUtil","require","pdfjsDisplayAPI","pdfjsDisplayTextLayer","pdfjsDisplayAnnotationLayer","pdfjsDisplayDOMUtils","pdfjsDisplaySVG","pdfjsDisplayWorkerOptions","pdfjsDisplayAPICompatibility","isNodeJS","PDFNodeStream","Response","PDFFetchStream","PDFNetworkStream","exports","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","NativeImageDecoding","NONE","DECODE","DISPLAY","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RL","FontType","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","UNSUPPORTED_FEATURES","unknown","forms","javaScript","smask","shadingPattern","font","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","Number","console","unreachable","base","other","url","absoluteUrl","baseUrl","_isValidProtocol","Object","enumerable","configurable","writable","lookup","initializer","PasswordException","UnknownErrorException","InvalidPDFException","MissingPDFException","UnexpectedResponseException","MissingDataException","XRefParseException","FormatError","AbortException","NullCharactersRegExp","warn","str","assert","bytes","length","MAX_ARGUMENT_COUNT","String","strBuf","i","chunkEnd","Math","chunk","arr","resultLength","ii","item","itemLength","arrayByteLength","pos","data","stringToBytes","value","x","offset","buffer8","view32","getArray","stopWhenFound","LOOP_LIMIT","loopCount","dict","values","Util","rgbBuf","m1","m2","xt","p","m","yt","d","p1","p2","r","p3","p4","v","transpose","a","b","c","first","second","sx","sy","rect","orderedX","rect1","rect2","orderedY","result","ROMAN_NUMBER_MAP","lowerCase","number","romanBuf","romanStr","PDFStringTranslateTable","n","code","decodeURIComponent","escape","unescape","encodeURIComponent","ch","capability","createObjectURL","digits","forceDataSchema","URL","blob","type","buffer","b1","b2","b3","d1","d2","d3","d4","globalScope","hasDOM","Buffer","get","scripts","document","Element","div","originalDOMTokenListToggle","DOMTokenList","arguments","force","Array","module","window","global","self","process","$export","context","INCLUDES","includes","core","hide","redefine","ctx","PROTOTYPE","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","target","expProto","source","own","out","exp","Function","__g","version","__e","dP","createDesc","object","anObject","IE8_DOM_DEFINE","toPrimitive","P","TypeError","O","Attributes","isObject","it","is","S","val","fn","has","SRC","TO_STRING","$toString","TPL","isFunction","hasOwnProperty","id","px","key","aFunction","that","isRegExp","defined","cof","MATCH","toString","store","uid","Symbol","USE_SYMBOL","$exports","SHARED","mode","copyright","re","$includes","toIObject","toLength","toAbsoluteIndex","index","IS_INCLUDES","el","IObject","toInteger","min","ceil","floor","isNaN","max","UNSCOPABLES","ArrayProto","assign","getKeys","gOPS","pIE","toObject","$assign","A","B","K","T","aLen","getSymbols","isEnum","keys","j","$keys","enumBugKeys","arrayIndexOf","IE_PROTO","names","shared","log2","isInteger","isFinite","classof","test","TAG","ARG","tryGet","$at","done","point","s","l","LIBRARY","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","getMethod","kind","proto","NAME","DEF_VALUES","DEFAULT","VALUES_BUG","Base","$native","$default","$entries","$anyNative","IteratorPrototype","methods","IS_SET","entries","create","descriptor","Constructor","next","dPs","Empty","createDict","iframe","lt","gt","iframeDocument","Properties","def","stat","ObjectProto","$iterators","wks","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","addToUnscopables","step","anInstance","forOf","speciesConstructor","task","microtask","newPromiseCapabilityModule","perform","userAgent","promiseResolve","PROMISE","versions","v8","$Promise","isNode","empty","newPromiseCapability","newGenericPromiseCapability","USE_NATIVE","promise","FakePromise","exec","isThenable","notify","chain","ok","run","handler","reaction","resolve","reject","domain","onHandleUnhandled","exited","then","isReject","onUnhandled","unhandled","isUnhandled","reason","$reject","$resolve","wrapper","_w","_d","Internal","executor","OwnPromiseCapability","C","Promise","Wrapper","$$reject","all","remaining","$index","alreadyCalled","race","forbiddenField","name","call","isArrayIter","getIterFn","BREAK","RETURN","iterFn","f","iterable","iterator","ret","SPECIES","invoke","html","cel","setTask","clearTask","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","listener","event","args","defer","channel","port","setTimeout","set","clear","un","macrotask","Observer","flush","parent","head","last","toggle","node","characterData","e","navigator","promiseCapability","src","DESCRIPTORS","SAFE_CLOSING","riter","safe","iter","each","meta","weak","fails","validate","WEAK_MAP","getWeak","isExtensible","uncaughtFrozenStore","tmp","$WeakMap","InternalMap","method","asc","IS_MAP","TYPE","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$create","res","isArray","original","META","setDesc","FREEZE","setMeta","w","fastKey","onFreeze","KEY","NEED","redefineAll","createArrayMethod","$has","arrayFind","arrayFindIndex","UncaughtFrozenStore","findUncaughtFrozen","entry","getConstructor","ufstore","$iterDetect","inheritIfRequired","ADDER","fixMethod","IS_WEAK","common","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setPrototypeOf","check","buggy","gOPD","of","from","mapFn","mapping","cb","codePointAt","fromCharCode","$fromCodePoint","fromCodePoint","RangeError","$fails","wksExt","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$DP","gOPN","$Symbol","$JSON","_stringify","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","setSymbolDesc","protoDesc","wrap","sym","isSymbol","$defineProperty","D","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","tag","$set","es6Symbols","wellKnownSymbols","k","keyFor","useSetter","useSimple","defineProperty","defineProperties","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","stringify","$replacer","replacer","symbols","windowNames","getWindowNames","hiddenKeys","$values","isReadableStreamSupported","start","controller","installedModules","modules","__w_pdfjs_require__","getter","_typeof","obj","_require","elements","IsPropertyKey","Call","F","highWaterMark","size","message","AssertionError","Error","rethrowAssertionErrorRejection","_createClass","props","InvokeOrNoop","PromiseInvokeOrNoop","ValidateAndNormalizeQueuingStrategy","typeIsObject","_require2","_require3","DequeueValue","EnqueueValueWithSize","PeekQueueValue","ResetQueue","WritableStream","underlyingSink","_ref","_ref$highWaterMark","_classCallCheck","IsWritableStream","streamBrandCheckException","IsWritableStreamLocked","WritableStreamAbort","AcquireWritableStreamDefaultWriter","WritableStreamDefaultControllerError","WritableStreamDefaultWriterCloseWithErrorPropagation","WritableStreamDefaultWriterRelease","WritableStreamDefaultWriterWrite","WritableStreamCloseQueuedOrInFlight","stream","state","error","wasAlreadyErroring","_resolve","_reject","_reason","_wasAlreadyErroring","WritableStreamStartErroring","writeRequest","WritableStreamFinishErroring","writer","WritableStreamDefaultWriterEnsureReadyPromiseRejected","WritableStreamHasOperationMarkedInFlight","storedError","WritableStreamRejectCloseAndClosedPromiseIfNeeded","abortRequest","WritableStreamDealWithRejection","defaultWriterClosedPromiseResolve","defaultWriterClosedPromiseReject","backpressure","defaultWriterReadyPromiseReset","defaultWriterReadyPromiseResolve","WritableStreamDefaultWriter","defaultWriterReadyPromiseInitialize","defaultWriterReadyPromiseInitializeAsResolved","defaultWriterClosedPromiseInitialize","defaultWriterReadyPromiseInitializeAsRejected","defaultWriterClosedPromiseInitializeAsResolved","defaultWriterClosedPromiseInitializeAsRejected","IsWritableStreamDefaultWriter","defaultWriterBrandCheckException","defaultWriterLockException","WritableStreamDefaultWriterAbort","WritableStreamDefaultWriterClose","WritableStreamDefaultWriterGetDesiredSize","closeRequest","WritableStreamDefaultControllerClose","defaultWriterClosedPromiseResetToRejected","defaultWriterReadyPromiseReject","defaultWriterReadyPromiseResetToRejected","WritableStreamDefaultControllerGetDesiredSize","releasedError","WritableStreamDefaultWriterEnsureClosedPromiseRejected","chunkSize","WritableStreamDefaultControllerGetChunkSize","WritableStreamAddWriteRequest","WritableStreamDefaultControllerWrite","WritableStreamDefaultController","normalizedStrategy","WritableStreamDefaultControllerGetBackpressure","WritableStreamUpdateBackpressure","IsWritableStreamDefaultController","_this","startResult","WritableStreamDefaultControllerAdvanceQueueIfNeeded","strategySize","WritableStreamDefaultControllerErrorIfNeeded","writeRecord","WritableStreamDefaultControllerProcessClose","WritableStreamDefaultControllerProcessWrite","WritableStreamMarkCloseRequestInFlight","sinkClosePromise","WritableStreamFinishInFlightClose","WritableStreamFinishInFlightCloseWithError","WritableStreamMarkFirstWriteRequestInFlight","sinkWritePromise","WritableStreamFinishInFlightWrite","WritableStreamFinishInFlightWriteWithError","desiredSize","IsFiniteNonNegativeNumber","container","pair","ArrayBufferCopy","CreateIterResultObject","TransferArrayBuffer","ValidateAndNormalizeHighWaterMark","createArrayFromList","createDataProperty","_require4","_require5","ReadableStream","underlyingSource","typeString","IsReadableStream","IsReadableStreamLocked","ReadableStreamCancel","_ref2","AcquireReadableStreamDefaultReader","AcquireReadableStreamBYOBReader","_ref3","readable","ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue","_ref4","preventClose","preventAbort","preventCancel","Boolean","reader","shuttingDown","currentWrite","_ref5","isOrBecomesErrored","shutdownWithAction","shutdown","isOrBecomesClosed","dest","destClosed","pipeLoop","oldCurrentWrite","action","waitForWritesToFinish","finalize","ReadableStreamReaderGenericRelease","branches","ReadableStreamTee","IsReadableStreamDisturbed","ReadableStreamDefaultControllerClose","ReadableStreamDefaultControllerEnqueue","ReadableStreamDefaultControllerError","ReadableStreamDefaultControllerGetDesiredSize","teeState","closedOrErrored","canceled1","canceled2","reason1","reason2","pull","cancel1","cancel2","underlyingSource1","branch1Stream","underlyingSource2","branch2Stream","branch1","branch2","value1","value2","compositeReason","cancelResult","IsReadableStreamBYOBReader","readIntoRequest","IsReadableStreamDefaultReader","readRequest","ReadableStreamClose","sourceCancelPromise","defaultReaderClosedPromiseResolve","_i","defaultReaderClosedPromiseReject","ReadableStreamDefaultReader","ReadableStreamReaderGenericInitialize","defaultReaderBrandCheckException","readerLockException","ReadableStreamReaderGenericCancel","ReadableStreamDefaultReaderRead","ReadableStreamBYOBReader","IsReadableByteStreamController","byobReaderBrandCheckException","ArrayBuffer","view","ReadableStreamBYOBReaderRead","defaultReaderClosedPromiseInitialize","defaultReaderClosedPromiseInitializeAsResolved","defaultReaderClosedPromiseInitializeAsRejected","defaultReaderClosedPromiseResetToRejected","ReadableByteStreamControllerPullInto","ReadableStreamDefaultController","ReadableStreamDefaultControllerCallPullIfNeeded","ReadableStreamDefaultControllerErrorIfNeeded","IsReadableStreamDefaultController","defaultControllerBrandCheckException","pendingPromise","ReadableStreamAddReadRequest","shouldPull","ReadableStreamDefaultControllerShouldCallPull","pullPromise","ReadableStreamGetNumReadRequests","ReadableStreamFulfillReadRequest","ReadableStreamError","ReadableStreamBYOBRequest","IsReadableStreamBYOBRequest","byobRequestBrandCheckException","ReadableByteStreamControllerRespond","ReadableByteStreamControllerRespondWithNewView","ReadableByteStreamController","ReadableByteStreamControllerClearPendingPullIntos","autoAllocateChunkSize","underlyingByteSource","ReadableByteStreamControllerCallPullIfNeeded","ReadableByteStreamControllerError","byteStreamControllerBrandCheckException","ReadableByteStreamControllerClose","ReadableByteStreamControllerEnqueue","firstDescriptor","ReadableStreamHasDefaultReader","ReadableByteStreamControllerHandleQueueDrain","pullIntoDescriptor","byteOffset","byteLength","bytesFilled","elementSize","ctor","readerType","ReadableByteStreamControllerGetDesiredSize","ReadableByteStreamControllerShouldCallPull","ReadableByteStreamControllerInvalidateBYOBRequest","filledView","ReadableByteStreamControllerConvertPullIntoDescriptor","ReadableStreamFulfillReadIntoRequest","currentAlignedBytes","maxBytesToCopy","maxBytesFilled","maxAlignedBytes","totalBytesToCopyRemaining","ready","headOfQueue","bytesToCopy","destStart","ReadableByteStreamControllerFillHeadPullIntoDescriptor","ReadableByteStreamControllerFillPullIntoDescriptorFromQueue","ReadableByteStreamControllerShiftPendingPullInto","ReadableByteStreamControllerCommitPullIntoDescriptor","ReadableStreamAddReadIntoRequest","emptyView","ReadableStreamHasBYOBReader","ReadableStreamGetNumReadIntoRequests","remainderSize","end","remainder","ReadableByteStreamControllerEnqueueChunkToQueue","ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue","bytesWritten","ReadableByteStreamControllerRespondInClosedState","ReadableByteStreamControllerRespondInReadableState","firstPendingPullInto","transferredBuffer","transferredView","ReadableByteStreamControllerRespondInternal","transformStream","readableStream","writableStream","PromiseInvokeOrPerformFallback","TransformStreamCloseReadableInternal","TransformStreamErrorIfNeeded","maybeBackpressure","TransformStreamSetBackpressure","TransformStreamErrorInternal","resolution","transformStreamController","TransformStreamEnqueueToReadable","transformer","transformPromise","TransformStreamReadableReadyPromise","TransformStreamSink","TransformStreamTransform","flushPromise","TransformStreamSource","TransformStreamDefaultController","IsTransformStream","IsTransformStreamDefaultController","TransformStreamCloseReadable","TransformStreamError","readableController","TransformStream","readableStrategy","writableStrategy","startPromise_resolve","startPromise","sink","isURLSupported","u","PolyfillURL","OriginalURL","relative","relativePathDotMapping","h","invalid","unicode","ALPHA","ALPHANUMERIC","errors","stateOverride","cursor","seenAt","seenBracket","input","err","isRelativeScheme","percentEscape","nextC","nextNextC","cp","tempC","IDNAToASCII","temp","parseInt","percentEscapeQuery","parse","JURL","authority","host","DEFAULT_RANGE_CHUNK_SIZE","isWorkerDisabled","fakeWorkerFilesLoader","useRequireEnsure","__non_webpack_require__","requirejs","fallbackWorkerSrc","dynamicLoaderSupported","worker","pdfjsFilePath","createPDFNetworkStream","isArrayBuffer","range","params","rangeTransport","pdfBytes","NativeImageDecoderValues","apiCompatibilityParams","setVerbosityLevel","workerParams","postMessageTransfers","workerPort","GlobalWorkerOptions","PDFWorker","docId","networkStream","initialData","disableRange","disableStream","httpHeaders","withCredentials","rangeChunkSize","messageHandler","transport","pdfDataRangeTransport","apiVersion","password","disableAutoFetch","maxImageSize","disableFontFace","disableCreateObjectURL","docBaseUrl","nativeImageDecoderSupport","ignoreErrors","isEvalSupported","PDFDocumentLoadingTask","nextDocumentId","destroy","transportDestroyed","constructor","addRangeListener","addProgressListener","addProgressiveReadListener","onDataRange","onDataProgress","onDataProgressiveRead","requestDataRange","getPage","getPageIndex","getDestination","PDFPageProxy","pdfBug","getViewport","rotate","dontFlip","viewBox","rotation","getAnnotations","intent","render","stats","renderingIntent","canvasFactory","webGLContext","enable","intentState","fnArray","argsArray","lastChunk","pageIndex","renderInteractiveForms","complete","internalRenderTask","renderTask","getOperatorList","opListTask","streamTextContent","TEXT_CONTENT_CHUNK_SIZE","normalizeWhitespace","combineTextItems","textContent","getTextContent","items","styles","_destroy","waitOn","renderCompleted","cleanup","resetStats","_tryCleanup","_startRenderPage","_renderPageChunk","operatorListChunk","postMessage","cloned","transferable","transfers","desc","cloneValue","addEventListener","removeEventListener","nextFakeWorkerId","fakeWorkerFilesLoadedCapability","mainWorkerMessageHandler","loader","pdfWorkerPorts","_initializeFromPort","_initialize","workerSrc","isSameOrigin","createCDNWrapper","terminateEarly","onWorkerError","sendTest","testObj","info","_setupFakeWorker","setupFakeWorkerGlobal","workerHandler","WorkerMessageHandler","loadingTask","isCompressed","page","terminated","loaded","evt","total","headersCapability","fullReader","isStreamingSupported","isRangeSupported","contentLength","rangeReader","pdfInfo","updatePassword","exception","exportedError","exportedData","fontRegistry","registerFont","onUnsupportedFeature","fontReady","pageProxy","img","MAX_IMAGE_SIZE_TO_STORE","imageData","components","width","height","rgbaLength","buf","tmpCanvas","tmpCtx","_onUnsupportedFeature","pageNumber","results","metadata","contentDispositionFilename","PDFObjects","ensureObj","resolved","isResolved","objs","hasData","getData","RenderTask","cancel","InternalRenderTask","canvasInRendering","initializeGraphics","viewport","background","operatorListChanged","_continue","_scheduleNext","_next","build","DEFAULT_LINK_REL","SVG_NS","canvas","reset","canvasAndContext","fetch","request","XMLHttpRequest","cMapData","compressionType","svg","createElement","offsetX","offsetY","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","clone","scale","convertToViewportPoint","convertToViewportRectangle","tl","br","convertToPdfPoint","RenderingCancelledException","LinkTarget","SELF","BLANK","PARENT","TOP","LinkTargetStringMap","link","removeNullCharacters","LinkTargetValues","targetIndex","anchor","query","time","Date","timeEnd","times","longest","span","duration","script","requests","nextRequestId","addNativeFontFace","insertRule","styleElement","styleSheet","bind","rules","fontsToLoad","fontLoadPromises","getNativeFontPromise","nativeFontFace","rule","_queueLoadingCallback","otherRequest","_prepareFontLoadEvent","FontLoader","chunk1","chunk2","called","isFontReady","loadTestFontId","COMMENT_OFFSET","spliceString","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","int32","string32","btoa","fonts","supported","shadow","getLoadTestFont","atob","IsEvalSupportedCached","translatedData","bytesToString","getPathGenerator","cmds","featureId","js","current","compatibilityParams","isIE","isIOSChrome","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","MIN_WIDTH_FACTOR","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","IsLittleEndianCached","ad_bc","bc_ad","old","prev","cosValue","sinValue","CachedCanvases","getCanvas","canvasEntry","addContextCurrentTransform","POINT_TO_PROCESS_LIMIT","imgData","width1","points","POINT_TYPES","lineSize","data0","mask","elem","count","j0","sum","steps","outlines","coords","p0","pp","drawOutline","o","jj","CanvasExtraState","setCurrentPoint","CanvasGraphics","EXECUTION_TIME","EXECUTION_STEPS","partialChunkHeight","fullChunks","totalChunks","chunkImgData","srcPos","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","thisChunkHeight","destPos","srcDiff","kEnd","kEndUnrolled","srcByte","elemsInThisChunk","properties","property","sourceCtx","destCtx","alpha","alpha_","r0","g0","b0","maskData","transferMap","layerData","y","hasBackdrop","backdrop","subtype","composeFn","PIXELS_TO_PROCESS","row","chunkHeight","maskCtx","layerCtx","composeSMaskBackdrop","composed","layer","genericComposeSMask","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","beginDrawing","transparentCanvas","resetCtxToDefault","executeOperatorList","operatorList","executionStartIdx","argsArrayLen","chunkOperations","endTime","commonObjs","stepper","fnId","deps","nn","depObjId","objsPool","endDrawing","states","beginSMaskGroup","activeSMask","drawnWidth","drawnHeight","cacheId","scratchCanvas","currentCtx","currentTransform","groupCtx","copyCtxState","suspendSMaskGroup","composeSMask","deltaTransform","resumeSMaskGroup","endSMaskGroup","ops","xw","yh","consumePath","strokeColor","fillColor","isPatternFill","needRestore","paths","path","fontObj","bold","italic","typeface","browserFontSize","paintChar","textRenderingMode","fontSize","fillStrokeMode","isAddToPathSet","patternFill","addToPath","enabled","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","glyphs","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","patternTransform","lineWidth","glyph","isNum","restoreNeeded","spacing","character","accent","vmetric","vx","vy","scaledX","scaledY","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","showType3Text","fontMatrix","isTextInvisible","spacingLength","transformed","urx","ury","getColorN_Pattern","IR","color","baseTransform","canvasGraphicsFactory","createCanvasGraphics","getShadingPatternFromIR","inv","bl","ul","ur","x0","y0","x1","y1","matrix","bbox","group","bounds","canvasBounds","scaleX","scaleY","startTransformInverse","domImage","position","left","top","maskCanvas","putBinaryImageMask","positions","images","image","map","widthScale","heightScale","imgToPaint","putBinaryImageData","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","getSinglePixelWidth","inverse","getCanvasPosition","ShadingIRs","fromIR","raw","colorStops","r1","getPattern","grad","createMeshCanvas","colors","rowSize","c1","c2","c3","x2","y2","x3","y3","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","ps","figure","cs","verticesPerRow","rows","cols","q","drawTriangle","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","combinesScale","paddedWidth","paddedHeight","cachedCanvases","backgroundColor","figures","drawFigure","owner","matrixScale","temporaryPatternCanvas","shadingIR","TilingPattern","PaintType","COLORED","UNCOLORED","createPatternCanvas","xstep","ystep","paintType","tilingType","topLeft","botRight","curMatrixScale","combinedScale","graphics","tmpTranslate","setScale","transformToScale","tmpScale","scaleToContext","clipBbox","bboxWidth","bboxHeight","setFillAndStrokeStyleToContext","cssColor","thisArg","callbacksCapabilities","ah","callbackId","callback","wrapReason","sourceName","targetName","comObj","isReply","makeReasonSerializable","MessageHandler","on","send","sendWithPromise","sendWithStream","streamId","startCapability","startCall","isClosed","pullCapability","cancelCapability","_createStreamSink","sendStreamRequest","streamSink","enqueue","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","resolveCall","success","_processStreamMessage","sendStreamResponse","deleteStreamController","resolveOrReject","g","hadRuntime","oldRuntime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","inModule","runtime","protoGenerator","outerFn","generator","tryLocsList","makeInvokeMethod","arg","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","prototype","genFun","__await","record","tryCatch","previousPromise","defineIteratorMethods","AsyncIterator","delegate","delegateResult","maybeInvokeDelegate","tryLoc","locs","iteratorMethod","Context","stop","rootEntry","rootRecord","dispatchException","handle","hasCatch","hasFinally","abrupt","finallyEntry","finish","resetTryEntry","thrown","delegateYield","resultName","nextLoc","parser","xmlDocument","_repair","chars","_parse","rdf","nodeName","children","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespace","_resolveEntities","entity","_parseContent","attributes","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","pi","q2","complexDoctype","doctypeContent","content","text","onResolveEntity","onPi","onComment","onCdata","onDoctype","onText","onBeginElement","onEndElement","onError","child","parseFromString","isWhitespaceString","lastElement","PDFDataTransportStream","_onReceiveData","found","_onProgress","firstReader","_removeRangeReader","getFullReader","queuedChunks","getRangeReader","cancelAllRequests","readers","PDFDataTransportStreamReader","_enqueue","requestCapability","PDFDataTransportStreamRangeReader","requestsCapability","WebGLUtils","drawFigures","shader","gl","compiled","errorMsg","loadShader","program","shaders","linked","texture","currentCanvas","currentGL","premultipliedalpha","smaskVertexShaderCode","smaskFragmentShaderCode","smaskCache","vertexShader","createVertexShader","fragmentShader","createFragmentShader","cache","texCoordLocation","texLayerLocation","texMaskLocation","texCoordBuffer","createTexture","maskTexture","figuresVertexShaderCode","figuresFragmentShaderCode","figuresCache","coordsMap","colorsMap","pIndex","cIndex","col","coordsBuffer","colorsBuffer","tryInitGL","renderTextLayer","MAX_TEXT_DIVS_TO_RENDER","NonWhitespaceRegexp","styleBuf","textDiv","textDivProperties","style","angle","canvasWidth","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","isAllWhitespace","geom","tx","fontHeight","fontAscent","angleCos","angleSin","divWidth","divHeight","right","bottom","textDivs","textDivsLength","expanded","expandBounds","divProperties","ts","t","findPositiveMin","boxScale","box","x1New","x2New","expandBoundsLTR","boxes","fakeBoundary","horizon","boundary","maxXNew","horizonPart","affectedBoundary","xNew","changedHorizon","lastBoundary","useBoundary","used","textContentItemsStr","TextLayerRenderTask","clearTimeout","_processItems","len","appendText","_layoutText","textLayerFrag","fontFamily","_render","styleCache","textItems","textStyles","pump","expandTextDivs","expand","padding","renderParameters","textContentStream","enhanceTextSelection","parameters","fieldType","isRenderable","ignoreBorder","_createContainer","horizontalRadius","verticalRadius","radius","_createPopup","trigger","popupElement","title","contents","hideWrapper","popup","addLinkAttributes","linkService","rel","_bindLink","_bindNamedAction","JSON","TEXT_ALIGNMENT","element","fieldWidth","combWidth","_setTextStyle","fallbackName","selectElement","option","optionElement","IGNORE_TYPES","selector","parentElement","parentLeft","parseFloat","parentWidth","BACKGROUND_ENLIGHT","_formatContents","lines","line","pin","_show","unpin","_hide","borderWidth","square","circle","vertices","polyline","inkLists","inkList","getFilenameFromUrl","stringToPDFString","downloadManager","imageResourcesPath","svgFactory","SVGGraphics","SVG_DEFAULTS","fontStyle","fontWeight","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc","body","crc32","deflateSyncUncompressed","output","level","literals","maxBlockLength","deflateBlocks","idat","adler","adler32","colorType","bitDepth","offsetLiterals","offsetBytes","ihdr","deflateSync","pngLength","writePngChunk","encode","SVGExtraState","opTree","opListLen","opList","pf","XML_NS","XLINK_NS","clipCount","maskCount","loadDependencies","fnArrayLen","transformMatrix","getSVG","svgElement","convertOpList","REVOPS","opListToTree","executeOpTree","opTreeLen","textMatrix","pm","addFontStyle","details","setStrokeAlpha","setFillAlpha","opLength","clipId","clipPath","clipElement","_setStrokeAttributes","imgObj","imgEl","imgSrc","cliprect","definitions","rootGroup","_ensureClipGroup","clipGroup","_ensureTransformGroup","fs","http","https","fileUriRegex","parsedUrl","parseUrl","_error","_setReadableStream","protocol","auth","handleResponse","response","getResponseHeader","isHttp","suggestedLength","extractFilenameFromHeader","createRequestOptions","returnValues","allowRangeRequests","contentEncoding","contentDisposition","filename","getFilenameFromContentDispositionHeader","status","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","decoder","fatal","textdecode","matches","parts","part","quotindex","encodingend","extvalue","encoding","langvalue","signal","abortController","credentials","redirect","createFetchOptions","validateResponseStatus","createResponseStatusError","rangeStr","begin","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","array","supportsMozChunked","NetworkManager","requestRange","listeners","requestFull","xhrId","pendingRequest","useMozChunkedLoading","onProgress","getArrayBuffer","onStateChange","xhrStatus","ok_response_on_range_request","rangeHeader","hasPendingRequests","getRequestXhr","isStreamingRequest","isPendingRequest","isLoadedRequest","abortAllRequests","_onRangeRequestReaderClosed","onHeadersReceived","onProgressiveData","onDone","manager","PDFNetworkStreamFullRequestReader","_onHeadersReceived","fullRequestXhrId","fullRequestXhr","networkManager","_onProgressiveData","_onDone","_onError","PDFNetworkStreamRangeRequestReader","_close"],"mappings":"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","file":"pdf.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __w_pdfjs_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__w_pdfjs_require__.m = modules;\n\n \t// expose the module cache\n \t__w_pdfjs_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__w_pdfjs_require__.d = function(exports, name, getter) {\n \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__w_pdfjs_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__w_pdfjs_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__w_pdfjs_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__w_pdfjs_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__w_pdfjs_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-unused-vars, no-restricted-globals */\n\n'use strict';\n\nvar pdfjsVersion =\n typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_VERSION') : void 0;\nvar pdfjsBuild =\n typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_BUILD') : void 0;\n\nvar pdfjsSharedUtil = require('./shared/util.js');\nvar pdfjsDisplayAPI = require('./display/api.js');\nvar pdfjsDisplayTextLayer = require('./display/text_layer.js');\nvar pdfjsDisplayAnnotationLayer = require('./display/annotation_layer.js');\nvar pdfjsDisplayDOMUtils = require('./display/dom_utils.js');\nvar pdfjsDisplaySVG = require('./display/svg.js');\nlet pdfjsDisplayWorkerOptions = require('./display/worker_options.js');\nlet pdfjsDisplayAPICompatibility = require('./display/api_compatibility.js');\n\nif (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n const isNodeJS = require('./shared/is_node.js');\n if (isNodeJS()) {\n let PDFNodeStream = require('./display/node_stream.js').PDFNodeStream;\n pdfjsDisplayAPI.setPDFNetworkStreamFactory((params) => {\n return new PDFNodeStream(params);\n });\n } else if (typeof Response !== 'undefined' && 'body' in Response.prototype &&\n typeof ReadableStream !== 'undefined') {\n let PDFFetchStream = require('./display/fetch_stream.js').PDFFetchStream;\n pdfjsDisplayAPI.setPDFNetworkStreamFactory((params) => {\n return new PDFFetchStream(params);\n });\n } else {\n let PDFNetworkStream = require('./display/network.js').PDFNetworkStream;\n pdfjsDisplayAPI.setPDFNetworkStreamFactory((params) => {\n return new PDFNetworkStream(params);\n });\n }\n} else if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {\n let PDFNetworkStream = require('./display/network.js').PDFNetworkStream;\n let PDFFetchStream;\n let isChromeWithFetchCredentials = function() {\n // fetch does not include credentials until Chrome 61.0.3138.0 and later.\n // https://chromium.googlesource.com/chromium/src/+/2e231cf052ca5e68e22baf0008ac9e5e29121707\n try {\n // Indexed properties on window are read-only in Chrome 61.0.3151.0+\n // https://chromium.googlesource.com/chromium/src.git/+/58ab4a971b06dec13e4edf9de8382ca6847f6190\n window[999] = 123; // should throw. Note: JS strict mode MUST be enabled.\n delete window[999];\n return false;\n } catch (e) {\n return true;\n }\n };\n if (typeof Response !== 'undefined' && 'body' in Response.prototype &&\n typeof ReadableStream !== 'undefined' && isChromeWithFetchCredentials()) {\n PDFFetchStream = require('./display/fetch_stream.js').PDFFetchStream;\n }\n pdfjsDisplayAPI.setPDFNetworkStreamFactory((params) => {\n if (PDFFetchStream && /^https?:/i.test(params.url)) {\n // \"fetch\" is only supported for http(s), not file/ftp.\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n}\n\nexports.build = pdfjsDisplayAPI.build;\nexports.version = pdfjsDisplayAPI.version;\nexports.getDocument = pdfjsDisplayAPI.getDocument;\nexports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;\nexports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;\nexports.PDFWorker = pdfjsDisplayAPI.PDFWorker;\nexports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;\nexports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;\nexports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;\nexports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;\nexports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;\nexports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;\nexports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;\nexports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;\nexports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType;\nexports.PermissionFlag = pdfjsSharedUtil.PermissionFlag;\nexports.UnexpectedResponseException =\n pdfjsSharedUtil.UnexpectedResponseException;\nexports.OPS = pdfjsSharedUtil.OPS;\nexports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel;\nexports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;\nexports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;\nexports.createObjectURL = pdfjsSharedUtil.createObjectURL;\nexports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;\nexports.shadow = pdfjsSharedUtil.shadow;\nexports.Util = pdfjsSharedUtil.Util;\nexports.ReadableStream = pdfjsSharedUtil.ReadableStream;\nexports.URL = pdfjsSharedUtil.URL;\nexports.RenderingCancelledException =\n pdfjsDisplayDOMUtils.RenderingCancelledException;\nexports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl;\nexports.LinkTarget = pdfjsDisplayDOMUtils.LinkTarget;\nexports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes;\nexports.loadScript = pdfjsDisplayDOMUtils.loadScript;\nexports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions;\nexports.apiCompatibilityParams =\n pdfjsDisplayAPICompatibility.apiCompatibilityParams;\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport './compatibility';\nimport { ReadableStream } from './streams_polyfill';\nimport { URL } from './url_polyfill';\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst NativeImageDecoding = {\n NONE: 'none',\n DECODE: 'decode',\n DISPLAY: 'display',\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst StreamType = {\n UNKNOWN: 0,\n FLATE: 1,\n LZW: 2,\n DCT: 3,\n JPX: 4,\n JBIG: 5,\n A85: 6,\n AHX: 7,\n CCF: 8,\n RL: 9,\n};\n\nconst FontType = {\n UNKNOWN: 0,\n TYPE1: 1,\n TYPE1C: 2,\n CIDFONTTYPE0: 3,\n CIDFONTTYPE0C: 4,\n TRUETYPE: 5,\n CIDFONTTYPE2: 6,\n TYPE3: 7,\n OPENTYPE: 8,\n TYPE0: 9,\n MMTYPE1: 10,\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n unknown: 'unknown',\n forms: 'forms',\n javaScript: 'javaScript',\n smask: 'smask',\n shadingPattern: 'shadingPattern',\n font: 'font',\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log('Info: ' + msg);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log('Warning: ' + msg);\n }\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log('Deprecated API usage: ' + details);\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n try {\n var base = new URL(baseUrl);\n if (!base.origin || base.origin === 'null') {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n var other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the whitelisted protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case 'http:':\n case 'https:':\n case 'ftp:':\n case 'mailto:':\n case 'tel:':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n try {\n var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) { /* `new URL()` will throw on incorrect data. */ }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, { value,\n enumerable: true,\n configurable: true,\n writable: false, });\n return value;\n}\n\nfunction getLookupTableFactory(initializer) {\n var lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nvar PasswordException = (function PasswordExceptionClosure() {\n function PasswordException(msg, code) {\n this.name = 'PasswordException';\n this.message = msg;\n this.code = code;\n }\n\n PasswordException.prototype = new Error();\n PasswordException.constructor = PasswordException;\n\n return PasswordException;\n})();\n\nvar UnknownErrorException = (function UnknownErrorExceptionClosure() {\n function UnknownErrorException(msg, details) {\n this.name = 'UnknownErrorException';\n this.message = msg;\n this.details = details;\n }\n\n UnknownErrorException.prototype = new Error();\n UnknownErrorException.constructor = UnknownErrorException;\n\n return UnknownErrorException;\n})();\n\nvar InvalidPDFException = (function InvalidPDFExceptionClosure() {\n function InvalidPDFException(msg) {\n this.name = 'InvalidPDFException';\n this.message = msg;\n }\n\n InvalidPDFException.prototype = new Error();\n InvalidPDFException.constructor = InvalidPDFException;\n\n return InvalidPDFException;\n})();\n\nvar MissingPDFException = (function MissingPDFExceptionClosure() {\n function MissingPDFException(msg) {\n this.name = 'MissingPDFException';\n this.message = msg;\n }\n\n MissingPDFException.prototype = new Error();\n MissingPDFException.constructor = MissingPDFException;\n\n return MissingPDFException;\n})();\n\nvar UnexpectedResponseException =\n (function UnexpectedResponseExceptionClosure() {\n function UnexpectedResponseException(msg, status) {\n this.name = 'UnexpectedResponseException';\n this.message = msg;\n this.status = status;\n }\n\n UnexpectedResponseException.prototype = new Error();\n UnexpectedResponseException.constructor = UnexpectedResponseException;\n\n return UnexpectedResponseException;\n})();\n\nvar MissingDataException = (function MissingDataExceptionClosure() {\n function MissingDataException(begin, end) {\n this.begin = begin;\n this.end = end;\n this.message = 'Missing data [' + begin + ', ' + end + ')';\n }\n\n MissingDataException.prototype = new Error();\n MissingDataException.prototype.name = 'MissingDataException';\n MissingDataException.constructor = MissingDataException;\n\n return MissingDataException;\n})();\n\nvar XRefParseException = (function XRefParseExceptionClosure() {\n function XRefParseException(msg) {\n this.message = msg;\n }\n\n XRefParseException.prototype = new Error();\n XRefParseException.prototype.name = 'XRefParseException';\n XRefParseException.constructor = XRefParseException;\n\n return XRefParseException;\n})();\n\n/**\n * Error caused during parsing PDF data.\n */\nlet FormatError = (function FormatErrorClosure() {\n function FormatError(msg) {\n this.message = msg;\n }\n\n FormatError.prototype = new Error();\n FormatError.prototype.name = 'FormatError';\n FormatError.constructor = FormatError;\n\n return FormatError;\n})();\n\n/**\n * Error used to indicate task cancellation.\n */\nlet AbortException = (function AbortExceptionClosure() {\n function AbortException(msg) {\n this.name = 'AbortException';\n this.message = msg;\n }\n\n AbortException.prototype = new Error();\n AbortException.constructor = AbortException;\n\n return AbortException;\n})();\n\nvar NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== 'string') {\n warn('The argument for removeNullCharacters must be a string.');\n return str;\n }\n return str.replace(NullCharactersRegExp, '');\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && typeof bytes === 'object' &&\n bytes.length !== undefined, 'Invalid argument for bytesToString');\n var length = bytes.length;\n var MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n var strBuf = [];\n for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n var chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join('');\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === 'string', 'Invalid argument for stringToBytes');\n var length = str.length;\n var bytes = new Uint8Array(length);\n for (var i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xFF;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n assert(arr.byteLength !== undefined);\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array} arr - the array of the arrays (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n // Shortcut: if first and only item is Uint8Array, return it.\n if (arr.length === 1 && (arr[0] instanceof Uint8Array)) {\n return arr[0];\n }\n var resultLength = 0;\n var i, ii = arr.length;\n var item, itemLength;\n for (i = 0; i < ii; i++) {\n item = arr[i];\n itemLength = arrayByteLength(item);\n resultLength += itemLength;\n }\n var pos = 0;\n var data = new Uint8Array(resultLength);\n for (i = 0; i < ii; i++) {\n item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === 'string') {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,\n (value >> 8) & 0xff, value & 0xff);\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n if (x <= 0) {\n return 0;\n }\n return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, start) {\n return (data[start] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16) |\n (data[offset + 2] << 8) | data[offset + 3]) >>> 0;\n}\n\n// Lazy test the endianness of the platform\n// NOTE: This will be 'true' for simulated TypedArrays\nfunction isLittleEndian() {\n var buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return (view32[0] === 1);\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(''); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned. To avoid infinite loops, the traversal is stopped when\n * the loop limit is reached.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n * array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n * the key is found. If set to `false`, we always walk up the entire parent\n * chain, for example to be able to find `\\Resources` placed on multiple\n * levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({ dict, key, getArray = false,\n stopWhenFound = true, }) {\n const LOOP_LIMIT = 100;\n let loopCount = 0;\n let values;\n\n while (dict) {\n const value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n if (!values) {\n values = [];\n }\n values.push(value);\n }\n if (++loopCount > LOOP_LIMIT) {\n warn(`getInheritableProperty: maximum loop count exceeded for \"${key}\"`);\n break;\n }\n dict = dict.get('Parent');\n }\n return values;\n}\n\nvar Util = (function UtilClosure() {\n function Util() {}\n\n var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n\n // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids\n // creating many intermediate strings.\n Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join('');\n };\n\n // Concatenates two transformation matrices together and returns the result.\n Util.transform = function Util_transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n ];\n };\n\n // For 2d affine transforms\n Util.applyTransform = function Util_applyTransform(p, m) {\n var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n };\n\n Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n var d = m[0] * m[3] - m[1] * m[2];\n var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n };\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n Util.getAxialAlignedBoundingBox =\n function Util_getAxialAlignedBoundingBox(r, m) {\n\n var p1 = Util.applyTransform(r, m);\n var p2 = Util.applyTransform(r.slice(2, 4), m);\n var p3 = Util.applyTransform([r[0], r[3]], m);\n var p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1])\n ];\n };\n\n Util.inverseTransform = function Util_inverseTransform(m) {\n var d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n };\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n Util.apply3dTransform = function Util_apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2]\n ];\n };\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n Util.singularValueDecompose2dScale =\n function Util_singularValueDecompose2dScale(m) {\n\n var transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n var a = m[0] * transpose[0] + m[1] * transpose[2];\n var b = m[0] * transpose[1] + m[1] * transpose[3];\n var c = m[2] * transpose[0] + m[3] * transpose[2];\n var d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n var first = (a + d) / 2;\n var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n var sx = first + second || 1;\n var sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n };\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n Util.normalizeRect = function Util_normalizeRect(rect) {\n var r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n };\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n Util.intersect = function Util_intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return false;\n }\n\n // Y: first and second points belong to different rectangles?\n if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return false;\n }\n\n return result;\n };\n\n return Util;\n})();\n\nconst ROMAN_NUMBER_MAP = [\n '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM',\n '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC',\n '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {integer} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default value is `false`.\n * @return {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(Number.isInteger(number) && number > 0,\n 'The number should be a positive integer.');\n let pos, romanBuf = [];\n // Thousands\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push('M');\n }\n // Hundreds\n pos = (number / 100) | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n // Tens\n pos = (number / 10) | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n // Ones\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n\n const romanStr = romanBuf.join('');\n return (lowerCase ? romanStr.toLowerCase() : romanStr);\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n var i, n = str.length, strBuf = [];\n if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n // UTF16BE BOM\n for (i = 2; i < n; i += 2) {\n strBuf.push(String.fromCharCode(\n (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));\n }\n } else {\n for (i = 0; i < n; ++i) {\n var code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join('');\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n for (var key in obj) {\n return false;\n }\n return true;\n}\n\nfunction isBool(v) {\n return typeof v === 'boolean';\n}\n\nfunction isNum(v) {\n return typeof v === 'number';\n}\n\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === 'object' && v !== null && v.byteLength !== undefined;\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isSpace(ch) {\n return (ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A);\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A promise object.\n * @property {function} resolve - Fulfills the promise.\n * @property {function} reject - Rejects the promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @return {PromiseCapability} A capability object contains:\n * - a Promise, resolve and reject methods.\n */\nfunction createPromiseCapability() {\n var capability = {};\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = resolve;\n capability.reject = reject;\n });\n return capability;\n}\n\nvar createObjectURL = (function createObjectURLClosure() {\n // Blob/createObjectURL is not available, falling back to data schema.\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n return function createObjectURL(data, contentType, forceDataSchema = false) {\n if (!forceDataSchema && URL.createObjectURL) {\n const blob = new Blob([data], { type: contentType, });\n return URL.createObjectURL(blob);\n }\n\n var buffer = 'data:' + contentType + ';base64,';\n for (var i = 0, ii = data.length; i < ii; i += 3) {\n var b1 = data[i] & 0xFF;\n var b2 = data[i + 1] & 0xFF;\n var b3 = data[i + 2] & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n})();\n\nexport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n OPS,\n VerbosityLevel,\n UNSUPPORTED_FEATURES,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationType,\n FontType,\n ImageKind,\n CMapCompressionType,\n AbortException,\n InvalidPDFException,\n MissingDataException,\n MissingPDFException,\n NativeImageDecoding,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n StreamType,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n Util,\n toRomanNumerals,\n XRefParseException,\n FormatError,\n arrayByteLength,\n arraysToBytes,\n assert,\n bytesToString,\n createPromiseCapability,\n createObjectURL,\n deprecated,\n getInheritableProperty,\n getLookupTableFactory,\n getVerbosityLevel,\n info,\n isArrayBuffer,\n isBool,\n isEmptyObj,\n isNum,\n isString,\n isSpace,\n isSameOrigin,\n createValidAbsoluteUrl,\n isLittleEndian,\n isEvalSupported,\n log2,\n readInt8,\n readUint16,\n readUint32,\n removeNullCharacters,\n ReadableStream,\n URL,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n utf8StringToString,\n warn,\n unreachable,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst globalScope = require('./global_scope');\n\n// Skip compatibility checks for the extensions and if we already ran\n// this module.\nif ((typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) &&\n !globalScope._pdfjsCompatibilityChecked) {\n\nglobalScope._pdfjsCompatibilityChecked = true;\n\n// In the Chrome extension, most of the polyfills are unnecessary.\n// We support down to Chrome 49, because it's still commonly used by Windows XP\n// users - https://github.com/mozilla/pdf.js/issues/9397\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('CHROME')) {\n\nconst isNodeJS = require('./is_node');\n\nconst hasDOM = typeof window === 'object' && typeof document === 'object';\n\n// Support: Node.js\n(function checkNodeBtoa() {\n if (globalScope.btoa || !isNodeJS()) {\n return;\n }\n globalScope.btoa = function(chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, 'binary').toString('base64');\n };\n})();\n\n// Support: Node.js\n(function checkNodeAtob() {\n if (globalScope.atob || !isNodeJS()) {\n return;\n }\n globalScope.atob = function(input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, 'base64').toString('binary');\n };\n})();\n\n// Provides document.currentScript support\n// Support: IE, Chrome<29.\n(function checkCurrentScript() {\n if (!hasDOM) {\n return;\n }\n if ('currentScript' in document) {\n return;\n }\n Object.defineProperty(document, 'currentScript', {\n get() {\n var scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n },\n enumerable: true,\n configurable: true,\n });\n})();\n\n// Provides support for ChildNode.remove in legacy browsers.\n// Support: IE.\n(function checkChildNodeRemove() {\n if (!hasDOM) {\n return;\n }\n if (typeof Element.prototype.remove !== 'undefined') {\n return;\n }\n Element.prototype.remove = function () {\n if (this.parentNode) {\n // eslint-disable-next-line mozilla/avoid-removeChild\n this.parentNode.removeChild(this);\n }\n };\n})();\n\n// Provides support for DOMTokenList.prototype.toggle, with the optional\n// \"force\" parameter, in legacy browsers.\n// Support: IE\n(function checkDOMTokenListToggle() {\n if (!hasDOM || isNodeJS()) {\n return;\n }\n const div = document.createElement('div');\n if (div.classList.toggle('test', 0) === false) {\n return;\n }\n const originalDOMTokenListToggle = DOMTokenList.prototype.toggle;\n\n DOMTokenList.prototype.toggle = function(token) {\n if (arguments.length > 1) {\n const force = !!arguments[1];\n return (this[force ? 'add' : 'remove'](token), force);\n }\n return originalDOMTokenListToggle(token);\n };\n})();\n\n// Provides support for String.prototype.includes in legacy browsers.\n// Support: IE, Chrome<41\n(function checkStringIncludes() {\n if (String.prototype.includes) {\n return;\n }\n require('core-js/fn/string/includes');\n})();\n\n// Provides support for Array.prototype.includes in legacy browsers.\n// Support: IE, Chrome<47\n(function checkArrayIncludes() {\n if (Array.prototype.includes) {\n return;\n }\n require('core-js/fn/array/includes');\n})();\n\n// Provides support for Object.assign in legacy browsers.\n// Support: IE\n(function checkObjectAssign() {\n if (Object.assign) {\n return;\n }\n require('core-js/fn/object/assign');\n})();\n\n// Provides support for Math.log2 in legacy browsers.\n// Support: IE, Chrome<38\n(function checkMathLog2() {\n if (Math.log2) {\n return;\n }\n Math.log2 = require('core-js/fn/math/log2');\n})();\n\n// Provides support for Number.isNaN in legacy browsers.\n// Support: IE.\n(function checkNumberIsNaN() {\n if (Number.isNaN) {\n return;\n }\n Number.isNaN = require('core-js/fn/number/is-nan');\n})();\n\n// Provides support for Number.isInteger in legacy browsers.\n// Support: IE, Chrome<34\n(function checkNumberIsInteger() {\n if (Number.isInteger) {\n return;\n }\n Number.isInteger = require('core-js/fn/number/is-integer');\n})();\n\n// Support: IE, Safari<8, Chrome<32\n(function checkPromise() {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalScope.Promise) {\n return;\n }\n globalScope.Promise = require('core-js/fn/promise');\n})();\n\n// Support: IE<11, Safari<8, Chrome<36\n(function checkWeakMap() {\n if (globalScope.WeakMap) {\n return;\n }\n globalScope.WeakMap = require('core-js/fn/weak-map');\n})();\n\n// Provides support for String.codePointAt in legacy browsers.\n// Support: IE11.\n(function checkStringCodePointAt() {\n if (String.codePointAt) {\n return;\n }\n String.codePointAt = require('core-js/fn/string/code-point-at');\n})();\n\n// Provides support for String.fromCodePoint in legacy browsers.\n// Support: IE11.\n(function checkStringFromCodePoint() {\n if (String.fromCodePoint) {\n return;\n }\n String.fromCodePoint = require('core-js/fn/string/from-code-point');\n})();\n\n// Support: IE\n(function checkSymbol() {\n if (globalScope.Symbol) {\n return;\n }\n require('core-js/es6/symbol');\n})();\n\n} // End of !PDFJSDev.test('CHROME')\n\n// Provides support for Object.values in legacy browsers.\n// Support: IE, Chrome<54\n(function checkObjectValues() {\n if (Object.values) {\n return;\n }\n Object.values = require('core-js/fn/object/values');\n})();\n\n}\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module */\n\nmodule.exports =\n (typeof window !== 'undefined' && window.Math === Math) ? window :\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global.Math === Math) ? global :\n (typeof self !== 'undefined' && self.Math === Math) ? self : {};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module, process */\n\nmodule.exports = function isNodeJS() {\n return typeof process === 'object' && process + '' === '[object process]';\n};\n","require('../../modules/es6.string.includes');\nmodule.exports = require('../../modules/_core').String.includes;\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","module.exports = false;\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","exports.f = {}.propertyIsEnumerable;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","require('../../modules/es6.math.log2');\nmodule.exports = require('../../modules/_core').Math.log2;\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","require('../../modules/es6.number.is-nan');\nmodule.exports = require('../../modules/_core').Number.isNaN;\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","module.exports = {};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","require('../modules/es6.object.to-string');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es7.weak-map.of');\nrequire('../modules/es7.weak-map.from');\nmodule.exports = require('../modules/_core').WeakMap;\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","require('../../modules/es6.string.code-point-at');\nmodule.exports = require('../../modules/_core').String.codePointAt;\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","require('../../modules/es6.string.from-code-point');\nmodule.exports = require('../../modules/_core').String.fromCodePoint;\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","require('../modules/es6.symbol');\nrequire('../modules/es6.object.to-string');\nmodule.exports = require('../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-globals */\n\nlet isReadableStreamSupported = false;\nif (typeof ReadableStream !== 'undefined') {\n // MS Edge may say it has ReadableStream but they are not up to spec yet.\n try {\n // eslint-disable-next-line no-new\n new ReadableStream({\n start(controller) {\n controller.close();\n },\n });\n isReadableStreamSupported = true;\n } catch (e) {\n // The ReadableStream constructor cannot be used.\n }\n}\nif (isReadableStreamSupported) {\n exports.ReadableStream = ReadableStream;\n} else {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {\n class DummyReadableStream {\n constructor() {\n throw new Error('The current image decoders are synchronous, ' +\n 'hence `ReadableStream` shouldn\\'t need to be ' +\n 'polyfilled for the IMAGE_DECODERS build target.');\n }\n }\n exports.ReadableStream = DummyReadableStream;\n } else {\n exports.ReadableStream =\n require('../../external/streams/streams-lib').ReadableStream;\n }\n}\n","/*\n * To the extent possible under law, the authors have dedicated all copyright\n * and related and neighboring rights to this software to the public\n * domain worldwide. This software is distributed without any warranty.\n *\n * You should have received a copy of the CC0 Public Domain Dedication along\n * with this software. If not, see https://creativecommons.org/publicdomain/zero/1.0/.\n */\n\n(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap\n/******/ // The module cache\n/******/ var installedModules = {};\n/******/\n/******/ // The require function\n/******/ function __w_pdfjs_require__(moduleId) {\n/******/\n/******/ // Check if module is in cache\n/******/ if(installedModules[moduleId])\n/******/ return installedModules[moduleId].exports;\n/******/\n/******/ // Create a new module (and put it into the cache)\n/******/ var module = installedModules[moduleId] = {\n/******/ i: moduleId,\n/******/ l: false,\n/******/ exports: {}\n/******/ };\n/******/\n/******/ // Execute the module function\n/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ // Flag the module as loaded\n/******/ module.l = true;\n/******/\n/******/ // Return the exports of the module\n/******/ return module.exports;\n/******/ }\n/******/\n/******/\n/******/ // expose the modules object (__webpack_modules__)\n/******/ __w_pdfjs_require__.m = modules;\n/******/\n/******/ // expose the module cache\n/******/ __w_pdfjs_require__.c = installedModules;\n/******/\n/******/ // identity function for calling harmony imports with the correct context\n/******/ __w_pdfjs_require__.i = function(value) { return value; };\n/******/\n/******/ // define getter function for harmony exports\n/******/ __w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ if(!__w_pdfjs_require__.o(exports, name)) {\n/******/ Object.defineProperty(exports, name, {\n/******/ configurable: false,\n/******/ enumerable: true,\n/******/ get: getter\n/******/ });\n/******/ }\n/******/ };\n/******/\n/******/ // getDefaultExport function for compatibility with non-harmony modules\n/******/ __w_pdfjs_require__.n = function(module) {\n/******/ var getter = module && module.__esModule ?\n/******/ function getDefault() { return module['default']; } :\n/******/ function getModuleExports() { return module; };\n/******/ __w_pdfjs_require__.d(getter, 'a', getter);\n/******/ return getter;\n/******/ };\n/******/\n/******/ // Object.prototype.hasOwnProperty.call\n/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ // __webpack_public_path__\n/******/ __w_pdfjs_require__.p = \"\";\n/******/\n/******/ // Load entry module and return exports\n/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _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; };\n\nvar _require = __w_pdfjs_require__(1),\n assert = _require.assert;\n\nfunction IsPropertyKey(argument) {\n return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';\n}\n\nexports.typeIsObject = function (x) {\n return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';\n};\n\nexports.createDataProperty = function (o, p, v) {\n assert(exports.typeIsObject(o));\n Object.defineProperty(o, p, { value: v, writable: true, enumerable: true, configurable: true });\n};\n\nexports.createArrayFromList = function (elements) {\n // We use arrays to represent lists, so this is basically a no-op.\n // Do a slice though just in case we happen to depend on the unique-ness.\n return elements.slice();\n};\n\nexports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n};\n\nexports.CreateIterResultObject = function (value, done) {\n assert(typeof done === 'boolean');\n var obj = {};\n Object.defineProperty(obj, 'value', { value: value, enumerable: true, writable: true, configurable: true });\n Object.defineProperty(obj, 'done', { value: done, enumerable: true, writable: true, configurable: true });\n return obj;\n};\n\nexports.IsFiniteNonNegativeNumber = function (v) {\n if (Number.isNaN(v)) {\n return false;\n }\n if (v === Infinity) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n\n return true;\n};\n\nfunction Call(F, V, args) {\n if (typeof F !== 'function') {\n throw new TypeError('Argument is not a function');\n }\n\n return Function.prototype.apply.call(F, V, args);\n}\n\nexports.InvokeOrNoop = function (O, P, args) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n\n var method = O[P];\n if (method === undefined) {\n return undefined;\n }\n\n return Call(method, O, args);\n};\n\nexports.PromiseInvokeOrNoop = function (O, P, args) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n try {\n return Promise.resolve(exports.InvokeOrNoop(O, P, args));\n } catch (returnValueE) {\n return Promise.reject(returnValueE);\n }\n};\n\nexports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n assert(Array.isArray(argsF));\n\n var method = void 0;\n try {\n method = O[P];\n } catch (methodE) {\n return Promise.reject(methodE);\n }\n\n if (method === undefined) {\n return F.apply(null, argsF);\n }\n\n try {\n return Promise.resolve(Call(method, O, args));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n// Not implemented correctly\nexports.TransferArrayBuffer = function (O) {\n return O.slice();\n};\n\nexports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {\n highWaterMark = Number(highWaterMark);\n if (Number.isNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n }\n\n return highWaterMark;\n};\n\nexports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {\n if (size !== undefined && typeof size !== 'function') {\n throw new TypeError('size property of a queuing strategy must be a function');\n }\n\n highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n return { size: size, highWaterMark: highWaterMark };\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nfunction rethrowAssertionErrorRejection(e) {\n // Used throughout the reference implementation, as `.catch(rethrowAssertionErrorRejection)`, to ensure any errors\n // get shown. There are places in the spec where we do promise transformations and purposefully ignore or don't\n // expect any errors, but assertion errors are always problematic.\n if (e && e.constructor === AssertionError) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n};\n\nfunction AssertionError(message) {\n this.name = 'AssertionError';\n this.message = message || '';\n this.stack = new Error().stack;\n}\nAssertionError.prototype = Object.create(Error.prototype);\nAssertionError.prototype.constructor = AssertionError;\n\nfunction assert(value, message) {\n if (!value) {\n throw new AssertionError(message);\n }\n}\n\nmodule.exports = {\n rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,\n AssertionError: AssertionError,\n assert: assert\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n InvokeOrNoop = _require.InvokeOrNoop,\n PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n typeIsObject = _require.typeIsObject;\n\nvar _require2 = __w_pdfjs_require__(1),\n assert = _require2.assert,\n rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;\n\nvar _require3 = __w_pdfjs_require__(3),\n DequeueValue = _require3.DequeueValue,\n EnqueueValueWithSize = _require3.EnqueueValueWithSize,\n PeekQueueValue = _require3.PeekQueueValue,\n ResetQueue = _require3.ResetQueue;\n\nvar WritableStream = function () {\n function WritableStream() {\n var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n size = _ref.size,\n _ref$highWaterMark = _ref.highWaterMark,\n highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;\n\n _classCallCheck(this, WritableStream);\n\n this._state = 'writable';\n\n // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n // 'erroring' or 'errored'. May be set to an undefined value.\n this._storedError = undefined;\n\n this._writer = undefined;\n\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n this._writableStreamController = undefined;\n\n // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n // producer without waiting for the queued writes to finish.\n this._writeRequests = [];\n\n // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n this._inFlightWriteRequest = undefined;\n\n // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n // has been detached.\n this._closeRequest = undefined;\n\n // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n this._inFlightCloseRequest = undefined;\n\n // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n this._pendingAbortRequest = undefined;\n\n // The backpressure signal set by the controller.\n this._backpressure = false;\n\n var type = underlyingSink.type;\n\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n\n this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);\n this._writableStreamController.__startSteps();\n }\n\n _createClass(WritableStream, [{\n key: 'abort',\n value: function abort(reason) {\n if (IsWritableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('abort'));\n }\n\n if (IsWritableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));\n }\n\n return WritableStreamAbort(this, reason);\n }\n }, {\n key: 'getWriter',\n value: function getWriter() {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('getWriter');\n }\n\n return AcquireWritableStreamDefaultWriter(this);\n }\n }, {\n key: 'locked',\n get: function get() {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n\n return IsWritableStreamLocked(this);\n }\n }]);\n\n return WritableStream;\n}();\n\nmodule.exports = {\n AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,\n IsWritableStream: IsWritableStream,\n IsWritableStreamLocked: IsWritableStreamLocked,\n WritableStream: WritableStream,\n WritableStreamAbort: WritableStreamAbort,\n WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,\n WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,\n WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,\n WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,\n WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight\n};\n\n// Abstract operations for the WritableStream.\n\nfunction AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n}\n\nfunction IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsWritableStreamLocked(stream) {\n assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');\n\n if (stream._writer === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamAbort(stream, reason) {\n var state = stream._state;\n if (state === 'closed') {\n return Promise.resolve(undefined);\n }\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n var error = new TypeError('Requested to abort');\n if (stream._pendingAbortRequest !== undefined) {\n return Promise.reject(error);\n }\n\n assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');\n\n var wasAlreadyErroring = false;\n if (state === 'erroring') {\n wasAlreadyErroring = true;\n // reason will not be used, so don't keep a reference to it.\n reason = undefined;\n }\n\n var promise = new Promise(function (resolve, reject) {\n stream._pendingAbortRequest = {\n _resolve: resolve,\n _reject: reject,\n _reason: reason,\n _wasAlreadyErroring: wasAlreadyErroring\n };\n });\n\n if (wasAlreadyErroring === false) {\n WritableStreamStartErroring(stream, error);\n }\n\n return promise;\n}\n\n// WritableStream API exposed for controllers.\n\nfunction WritableStreamAddWriteRequest(stream) {\n assert(IsWritableStreamLocked(stream) === true);\n assert(stream._state === 'writable');\n\n var promise = new Promise(function (resolve, reject) {\n var writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._writeRequests.push(writeRequest);\n });\n\n return promise;\n}\n\nfunction WritableStreamDealWithRejection(stream, error) {\n var state = stream._state;\n\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n\n assert(state === 'erroring');\n WritableStreamFinishErroring(stream);\n}\n\nfunction WritableStreamStartErroring(stream, reason) {\n assert(stream._storedError === undefined, 'stream._storedError === undefined');\n assert(stream._state === 'writable', 'state must be writable');\n\n var controller = stream._writableStreamController;\n assert(controller !== undefined, 'controller must not be undefined');\n\n stream._state = 'erroring';\n stream._storedError = reason;\n var writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n\n if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n WritableStreamFinishErroring(stream);\n }\n}\n\nfunction WritableStreamFinishErroring(stream) {\n assert(stream._state === 'erroring', 'stream._state === erroring');\n assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');\n stream._state = 'errored';\n stream._writableStreamController.__errorSteps();\n\n var storedError = stream._storedError;\n for (var i = 0; i < stream._writeRequests.length; i++) {\n var writeRequest = stream._writeRequests[i];\n writeRequest._reject(storedError);\n }\n stream._writeRequests = [];\n\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n\n var abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n\n if (abortRequest._wasAlreadyErroring === true) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n\n var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);\n promise.then(function () {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n }, function (reason) {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n });\n}\n\nfunction WritableStreamFinishInFlightWrite(stream) {\n assert(stream._inFlightWriteRequest !== undefined);\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n}\n\nfunction WritableStreamFinishInFlightWriteWithError(stream, error) {\n assert(stream._inFlightWriteRequest !== undefined);\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n\n assert(stream._state === 'writable' || stream._state === 'erroring');\n\n WritableStreamDealWithRejection(stream, error);\n}\n\nfunction WritableStreamFinishInFlightClose(stream) {\n assert(stream._inFlightCloseRequest !== undefined);\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n\n var state = stream._state;\n\n assert(state === 'writable' || state === 'erroring');\n\n if (state === 'erroring') {\n // The error was too late to do anything, so it is ignored.\n stream._storedError = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._resolve();\n stream._pendingAbortRequest = undefined;\n }\n }\n\n stream._state = 'closed';\n\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n\n assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');\n assert(stream._storedError === undefined, 'stream._storedError === undefined');\n}\n\nfunction WritableStreamFinishInFlightCloseWithError(stream, error) {\n assert(stream._inFlightCloseRequest !== undefined);\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\n\n assert(stream._state === 'writable' || stream._state === 'erroring');\n\n // Never execute sink abort() after sink close().\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._reject(error);\n stream._pendingAbortRequest = undefined;\n }\n WritableStreamDealWithRejection(stream, error);\n}\n\n// TODO(ricea): Fix alphabetical order.\nfunction WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamMarkCloseRequestInFlight(stream) {\n assert(stream._inFlightCloseRequest === undefined);\n assert(stream._closeRequest !== undefined);\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n}\n\nfunction WritableStreamMarkFirstWriteRequestInFlight(stream) {\n assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');\n assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n}\n\nfunction WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n assert(stream._state === 'errored', '_stream_.[[state]] is `\"errored\"`');\n if (stream._closeRequest !== undefined) {\n assert(stream._inFlightCloseRequest === undefined);\n\n stream._closeRequest._reject(stream._storedError);\n stream._closeRequest = undefined;\n }\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseReject(writer, stream._storedError);\n writer._closedPromise.catch(function () {});\n }\n}\n\nfunction WritableStreamUpdateBackpressure(stream, backpressure) {\n assert(stream._state === 'writable');\n assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n var writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure === true) {\n defaultWriterReadyPromiseReset(writer);\n } else {\n assert(backpressure === false);\n\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n\n stream._backpressure = backpressure;\n}\n\nvar WritableStreamDefaultWriter = function () {\n function WritableStreamDefaultWriter(stream) {\n _classCallCheck(this, WritableStreamDefaultWriter);\n\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n }\n if (IsWritableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n\n this._ownerWritableStream = stream;\n stream._writer = this;\n\n var state = stream._state;\n\n if (state === 'writable') {\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n defaultWriterReadyPromiseInitialize(this);\n } else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n this._readyPromise.catch(function () {});\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n } else {\n assert(state === 'errored', 'state must be errored');\n\n var storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n this._readyPromise.catch(function () {});\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n this._closedPromise.catch(function () {});\n }\n }\n\n _createClass(WritableStreamDefaultWriter, [{\n key: 'abort',\n value: function abort(reason) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('abort'));\n }\n\n if (this._ownerWritableStream === undefined) {\n return Promise.reject(defaultWriterLockException('abort'));\n }\n\n return WritableStreamDefaultWriterAbort(this, reason);\n }\n }, {\n key: 'close',\n value: function close() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('close'));\n }\n\n var stream = this._ownerWritableStream;\n\n if (stream === undefined) {\n return Promise.reject(defaultWriterLockException('close'));\n }\n\n if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n return Promise.reject(new TypeError('cannot close an already-closing stream'));\n }\n\n return WritableStreamDefaultWriterClose(this);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n\n var stream = this._ownerWritableStream;\n\n if (stream === undefined) {\n return;\n }\n\n assert(stream._writer !== undefined);\n\n WritableStreamDefaultWriterRelease(this);\n }\n }, {\n key: 'write',\n value: function write(chunk) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('write'));\n }\n\n if (this._ownerWritableStream === undefined) {\n return Promise.reject(defaultWriterLockException('write to'));\n }\n\n return WritableStreamDefaultWriterWrite(this, chunk);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n\n return WritableStreamDefaultWriterGetDesiredSize(this);\n }\n }, {\n key: 'ready',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('ready'));\n }\n\n return this._readyPromise;\n }\n }]);\n\n return WritableStreamDefaultWriter;\n}();\n\n// Abstract operations for the WritableStreamDefaultWriter.\n\nfunction IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n\n return true;\n}\n\n// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultWriterAbort(writer, reason) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n return WritableStreamAbort(stream, reason);\n}\n\nfunction WritableStreamDefaultWriterClose(writer) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));\n }\n\n assert(state === 'writable' || state === 'erroring');\n assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n var promise = new Promise(function (resolve, reject) {\n var closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._closeRequest = closeRequest;\n });\n\n if (stream._backpressure === true && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n\n return promise;\n}\n\nfunction WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return Promise.resolve();\n }\n\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n assert(state === 'writable' || state === 'erroring');\n\n return WritableStreamDefaultWriterClose(writer);\n}\n\nfunction WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n } else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n writer._closedPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n } else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n writer._readyPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterGetDesiredSize(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n\n if (state === 'closed') {\n return 0;\n }\n\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n}\n\nfunction WritableStreamDefaultWriterRelease(writer) {\n var stream = writer._ownerWritableStream;\n assert(stream !== undefined);\n assert(stream._writer === writer);\n\n var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n\n // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n // rejected until afterwards. This means that simply testing state will not work.\n WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n\n stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n}\n\nfunction WritableStreamDefaultWriterWrite(writer, chunk) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var controller = stream._writableStreamController;\n\n var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n\n if (stream !== writer._ownerWritableStream) {\n return Promise.reject(defaultWriterLockException('write to'));\n }\n\n var state = stream._state;\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));\n }\n if (state === 'erroring') {\n return Promise.reject(stream._storedError);\n }\n\n assert(state === 'writable');\n\n var promise = WritableStreamAddWriteRequest(stream);\n\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n\n return promise;\n}\n\nvar WritableStreamDefaultController = function () {\n function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {\n _classCallCheck(this, WritableStreamDefaultController);\n\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');\n }\n\n if (stream._writableStreamController !== undefined) {\n throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');\n }\n\n this._controlledWritableStream = stream;\n\n this._underlyingSink = underlyingSink;\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = undefined;\n this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._started = false;\n\n var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n this._strategySize = normalizedStrategy.size;\n this._strategyHWM = normalizedStrategy.highWaterMark;\n\n var backpressure = WritableStreamDefaultControllerGetBackpressure(this);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n _createClass(WritableStreamDefaultController, [{\n key: 'error',\n value: function error(e) {\n if (IsWritableStreamDefaultController(this) === false) {\n throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n }\n var state = this._controlledWritableStream._state;\n if (state !== 'writable') {\n // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n // just treat it as a no-op.\n return;\n }\n\n WritableStreamDefaultControllerError(this, e);\n }\n }, {\n key: '__abortSteps',\n value: function __abortSteps(reason) {\n return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);\n }\n }, {\n key: '__errorSteps',\n value: function __errorSteps() {\n ResetQueue(this);\n }\n }, {\n key: '__startSteps',\n value: function __startSteps() {\n var _this = this;\n\n var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);\n var stream = this._controlledWritableStream;\n\n Promise.resolve(startResult).then(function () {\n assert(stream._state === 'writable' || stream._state === 'erroring');\n _this._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);\n }, function (r) {\n assert(stream._state === 'writable' || stream._state === 'erroring');\n _this._started = true;\n WritableStreamDealWithRejection(stream, r);\n }).catch(rethrowAssertionErrorRejection);\n }\n }]);\n\n return WritableStreamDefaultController;\n}();\n\n// Abstract operations implementing interface required by the WritableStream.\n\nfunction WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, 'close', 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\nfunction WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n var strategySize = controller._strategySize;\n\n if (strategySize === undefined) {\n return 1;\n }\n\n try {\n return strategySize(chunk);\n } catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n}\n\nfunction WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n var writeRecord = { chunk: chunk };\n\n try {\n EnqueueValueWithSize(controller, writeRecord, chunkSize);\n } catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n\n var stream = controller._controlledWritableStream;\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\n// Abstract operations for the WritableStreamDefaultController.\n\nfunction IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n var stream = controller._controlledWritableStream;\n\n if (controller._started === false) {\n return;\n }\n\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return;\n }\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n\n if (controller._queue.length === 0) {\n return;\n }\n\n var writeRecord = PeekQueueValue(controller);\n if (writeRecord === 'close') {\n WritableStreamDefaultControllerProcessClose(controller);\n } else {\n WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n }\n}\n\nfunction WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n}\n\nfunction WritableStreamDefaultControllerProcessClose(controller) {\n var stream = controller._controlledWritableStream;\n\n WritableStreamMarkCloseRequestInFlight(stream);\n\n DequeueValue(controller);\n assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');\n\n var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);\n sinkClosePromise.then(function () {\n WritableStreamFinishInFlightClose(stream);\n }, function (reason) {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n var stream = controller._controlledWritableStream;\n\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n\n var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);\n sinkWritePromise.then(function () {\n WritableStreamFinishInFlightWrite(stream);\n\n var state = stream._state;\n assert(state === 'writable' || state === 'erroring');\n\n DequeueValue(controller);\n\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (reason) {\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerGetBackpressure(controller) {\n var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n}\n\n// A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultControllerError(controller, error) {\n var stream = controller._controlledWritableStream;\n\n assert(stream._state === 'writable');\n\n WritableStreamStartErroring(stream, error);\n}\n\n// Helper functions for the WritableStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');\n}\n\n// Helper functions for the WritableStreamDefaultWriter.\n\nfunction defaultWriterBrandCheckException(name) {\n return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');\n}\n\nfunction defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n}\n\nfunction defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = new Promise(function (resolve, reject) {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n}\n\nfunction defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n writer._closedPromise = Promise.reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseInitializeAsResolved(writer) {\n writer._closedPromise = Promise.resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterClosedPromiseReject(writer, reason) {\n assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n writer._closedPromise_reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResetToRejected(writer, reason) {\n assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');\n assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');\n assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');\n\n writer._closedPromise = Promise.reject(reason);\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResolve(writer) {\n assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = new Promise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n writer._readyPromise = Promise.reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsResolved(writer) {\n writer._readyPromise = Promise.resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\nfunction defaultWriterReadyPromiseReject(writer, reason) {\n assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n writer._readyPromise_reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseReset(writer) {\n assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n writer._readyPromise = new Promise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseResetToRejected(writer, reason) {\n assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n writer._readyPromise = Promise.reject(reason);\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseResolve(writer) {\n assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _require = __w_pdfjs_require__(0),\n IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;\n\nvar _require2 = __w_pdfjs_require__(1),\n assert = _require2.assert;\n\nexports.DequeueValue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');\n\n var pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n\n return pair.value;\n};\n\nexports.EnqueueValueWithSize = function (container, value, size) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');\n\n size = Number(size);\n if (!IsFiniteNonNegativeNumber(size)) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n\n container._queue.push({ value: value, size: size });\n container._queueTotalSize += size;\n};\n\nexports.PeekQueueValue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');\n\n var pair = container._queue[0];\n return pair.value;\n};\n\nexports.ResetQueue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n\n container._queue = [];\n container._queueTotalSize = 0;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n ArrayBufferCopy = _require.ArrayBufferCopy,\n CreateIterResultObject = _require.CreateIterResultObject,\n IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,\n InvokeOrNoop = _require.InvokeOrNoop,\n PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n TransferArrayBuffer = _require.TransferArrayBuffer,\n ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;\n\nvar _require2 = __w_pdfjs_require__(0),\n createArrayFromList = _require2.createArrayFromList,\n createDataProperty = _require2.createDataProperty,\n typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(1),\n assert = _require3.assert,\n rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;\n\nvar _require4 = __w_pdfjs_require__(3),\n DequeueValue = _require4.DequeueValue,\n EnqueueValueWithSize = _require4.EnqueueValueWithSize,\n ResetQueue = _require4.ResetQueue;\n\nvar _require5 = __w_pdfjs_require__(2),\n AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,\n IsWritableStream = _require5.IsWritableStream,\n IsWritableStreamLocked = _require5.IsWritableStreamLocked,\n WritableStreamAbort = _require5.WritableStreamAbort,\n WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,\n WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,\n WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,\n WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;\n\nvar ReadableStream = function () {\n function ReadableStream() {\n var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n size = _ref.size,\n highWaterMark = _ref.highWaterMark;\n\n _classCallCheck(this, ReadableStream);\n\n // Exposed to controllers.\n this._state = 'readable';\n\n this._reader = undefined;\n this._storedError = undefined;\n\n this._disturbed = false;\n\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n this._readableStreamController = undefined;\n var type = underlyingSource.type;\n var typeString = String(type);\n if (typeString === 'bytes') {\n if (highWaterMark === undefined) {\n highWaterMark = 0;\n }\n this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);\n } else if (type === undefined) {\n if (highWaterMark === undefined) {\n highWaterMark = 1;\n }\n this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);\n } else {\n throw new RangeError('Invalid type is specified');\n }\n }\n\n _createClass(ReadableStream, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (IsReadableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('cancel'));\n }\n\n if (IsReadableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n\n return ReadableStreamCancel(this, reason);\n }\n }, {\n key: 'getReader',\n value: function getReader() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n mode = _ref2.mode;\n\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('getReader');\n }\n\n if (mode === undefined) {\n return AcquireReadableStreamDefaultReader(this);\n }\n\n mode = String(mode);\n\n if (mode === 'byob') {\n return AcquireReadableStreamBYOBReader(this);\n }\n\n throw new RangeError('Invalid mode is specified');\n }\n }, {\n key: 'pipeThrough',\n value: function pipeThrough(_ref3, options) {\n var writable = _ref3.writable,\n readable = _ref3.readable;\n\n var promise = this.pipeTo(writable, options);\n\n ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);\n\n return readable;\n }\n }, {\n key: 'pipeTo',\n value: function pipeTo(dest) {\n var _this = this;\n\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n preventClose = _ref4.preventClose,\n preventAbort = _ref4.preventAbort,\n preventCancel = _ref4.preventCancel;\n\n if (IsReadableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('pipeTo'));\n }\n if (IsWritableStream(dest) === false) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n }\n\n preventClose = Boolean(preventClose);\n preventAbort = Boolean(preventAbort);\n preventCancel = Boolean(preventCancel);\n\n if (IsReadableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(dest) === true) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n\n var reader = AcquireReadableStreamDefaultReader(this);\n var writer = AcquireWritableStreamDefaultWriter(dest);\n\n var shuttingDown = false;\n\n // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n var currentWrite = Promise.resolve();\n\n return new Promise(function (resolve, reject) {\n // Using reader and writer, read all chunks from this and write them to dest\n // - Backpressure must be enforced\n // - Shutdown must stop all activity\n function pipeLoop() {\n currentWrite = Promise.resolve();\n\n if (shuttingDown === true) {\n return Promise.resolve();\n }\n\n return writer._readyPromise.then(function () {\n return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {\n var value = _ref5.value,\n done = _ref5.done;\n\n if (done === true) {\n return;\n }\n\n currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});\n });\n }).then(pipeLoop);\n }\n\n // Errors must be propagated forward\n isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {\n if (preventAbort === false) {\n shutdownWithAction(function () {\n return WritableStreamAbort(dest, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n\n // Errors must be propagated backward\n isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(_this, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n\n // Closing must be propagated forward\n isOrBecomesClosed(_this, reader._closedPromise, function () {\n if (preventClose === false) {\n shutdownWithAction(function () {\n return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n });\n } else {\n shutdown();\n }\n });\n\n // Closing must be propagated backward\n if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(_this, destClosed);\n }, true, destClosed);\n } else {\n shutdown(true, destClosed);\n }\n }\n\n pipeLoop().catch(function (err) {\n currentWrite = Promise.resolve();\n rethrowAssertionErrorRejection(err);\n });\n\n function waitForWritesToFinish() {\n // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n // for that too.\n var oldCurrentWrite = currentWrite;\n return currentWrite.then(function () {\n return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n });\n }\n\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n } else {\n promise.catch(action).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n } else {\n promise.then(action).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n waitForWritesToFinish().then(doTheRest);\n } else {\n doTheRest();\n }\n\n function doTheRest() {\n action().then(function () {\n return finalize(originalIsError, originalError);\n }, function (newError) {\n return finalize(true, newError);\n }).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function shutdown(isError, error) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n waitForWritesToFinish().then(function () {\n return finalize(isError, error);\n }).catch(rethrowAssertionErrorRejection);\n } else {\n finalize(isError, error);\n }\n }\n\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n\n if (isError) {\n reject(error);\n } else {\n resolve(undefined);\n }\n }\n });\n }\n }, {\n key: 'tee',\n value: function tee() {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('tee');\n }\n\n var branches = ReadableStreamTee(this, false);\n return createArrayFromList(branches);\n }\n }, {\n key: 'locked',\n get: function get() {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n\n return IsReadableStreamLocked(this);\n }\n }]);\n\n return ReadableStream;\n}();\n\nmodule.exports = {\n ReadableStream: ReadableStream,\n IsReadableStreamDisturbed: IsReadableStreamDisturbed,\n ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,\n ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,\n ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,\n ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize\n};\n\n// Abstract operations for the ReadableStream.\n\nfunction AcquireReadableStreamBYOBReader(stream) {\n return new ReadableStreamBYOBReader(stream);\n}\n\nfunction AcquireReadableStreamDefaultReader(stream) {\n return new ReadableStreamDefaultReader(stream);\n}\n\nfunction IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamDisturbed(stream) {\n assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');\n\n return stream._disturbed;\n}\n\nfunction IsReadableStreamLocked(stream) {\n assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');\n\n if (stream._reader === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamTee(stream, cloneForBranch2) {\n assert(IsReadableStream(stream) === true);\n assert(typeof cloneForBranch2 === 'boolean');\n\n var reader = AcquireReadableStreamDefaultReader(stream);\n\n var teeState = {\n closedOrErrored: false,\n canceled1: false,\n canceled2: false,\n reason1: undefined,\n reason2: undefined\n };\n teeState.promise = new Promise(function (resolve) {\n teeState._resolve = resolve;\n });\n\n var pull = create_ReadableStreamTeePullFunction();\n pull._reader = reader;\n pull._teeState = teeState;\n pull._cloneForBranch2 = cloneForBranch2;\n\n var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();\n cancel1._stream = stream;\n cancel1._teeState = teeState;\n\n var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();\n cancel2._stream = stream;\n cancel2._teeState = teeState;\n\n var underlyingSource1 = Object.create(Object.prototype);\n createDataProperty(underlyingSource1, 'pull', pull);\n createDataProperty(underlyingSource1, 'cancel', cancel1);\n var branch1Stream = new ReadableStream(underlyingSource1);\n\n var underlyingSource2 = Object.create(Object.prototype);\n createDataProperty(underlyingSource2, 'pull', pull);\n createDataProperty(underlyingSource2, 'cancel', cancel2);\n var branch2Stream = new ReadableStream(underlyingSource2);\n\n pull._branch1 = branch1Stream._readableStreamController;\n pull._branch2 = branch2Stream._readableStreamController;\n\n reader._closedPromise.catch(function (r) {\n if (teeState.closedOrErrored === true) {\n return;\n }\n\n ReadableStreamDefaultControllerError(pull._branch1, r);\n ReadableStreamDefaultControllerError(pull._branch2, r);\n teeState.closedOrErrored = true;\n });\n\n return [branch1Stream, branch2Stream];\n}\n\nfunction create_ReadableStreamTeePullFunction() {\n function f() {\n var reader = f._reader,\n branch1 = f._branch1,\n branch2 = f._branch2,\n teeState = f._teeState;\n\n\n return ReadableStreamDefaultReaderRead(reader).then(function (result) {\n assert(typeIsObject(result));\n var value = result.value;\n var done = result.done;\n assert(typeof done === 'boolean');\n\n if (done === true && teeState.closedOrErrored === false) {\n if (teeState.canceled1 === false) {\n ReadableStreamDefaultControllerClose(branch1);\n }\n if (teeState.canceled2 === false) {\n ReadableStreamDefaultControllerClose(branch2);\n }\n teeState.closedOrErrored = true;\n }\n\n if (teeState.closedOrErrored === true) {\n return;\n }\n\n var value1 = value;\n var value2 = value;\n\n // There is no way to access the cloning code right now in the reference implementation.\n // If we add one then we'll need an implementation for serializable objects.\n // if (teeState.canceled2 === false && cloneForBranch2 === true) {\n // value2 = StructuredDeserialize(StructuredSerialize(value2));\n // }\n\n if (teeState.canceled1 === false) {\n ReadableStreamDefaultControllerEnqueue(branch1, value1);\n }\n\n if (teeState.canceled2 === false) {\n ReadableStreamDefaultControllerEnqueue(branch2, value2);\n }\n });\n }\n return f;\n}\n\nfunction create_ReadableStreamTeeBranch1CancelFunction() {\n function f(reason) {\n var stream = f._stream,\n teeState = f._teeState;\n\n\n teeState.canceled1 = true;\n teeState.reason1 = reason;\n if (teeState.canceled2 === true) {\n var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n teeState._resolve(cancelResult);\n }\n return teeState.promise;\n }\n return f;\n}\n\nfunction create_ReadableStreamTeeBranch2CancelFunction() {\n function f(reason) {\n var stream = f._stream,\n teeState = f._teeState;\n\n\n teeState.canceled2 = true;\n teeState.reason2 = reason;\n if (teeState.canceled1 === true) {\n var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n teeState._resolve(cancelResult);\n }\n return teeState.promise;\n }\n return f;\n}\n\n// ReadableStream API exposed for controllers.\n\nfunction ReadableStreamAddReadIntoRequest(stream) {\n assert(IsReadableStreamBYOBReader(stream._reader) === true);\n assert(stream._state === 'readable' || stream._state === 'closed');\n\n var promise = new Promise(function (resolve, reject) {\n var readIntoRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._reader._readIntoRequests.push(readIntoRequest);\n });\n\n return promise;\n}\n\nfunction ReadableStreamAddReadRequest(stream) {\n assert(IsReadableStreamDefaultReader(stream._reader) === true);\n assert(stream._state === 'readable');\n\n var promise = new Promise(function (resolve, reject) {\n var readRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._reader._readRequests.push(readRequest);\n });\n\n return promise;\n}\n\nfunction ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n\n if (stream._state === 'closed') {\n return Promise.resolve(undefined);\n }\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n ReadableStreamClose(stream);\n\n var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);\n return sourceCancelPromise.then(function () {\n return undefined;\n });\n}\n\nfunction ReadableStreamClose(stream) {\n assert(stream._state === 'readable');\n\n stream._state = 'closed';\n\n var reader = stream._reader;\n\n if (reader === undefined) {\n return undefined;\n }\n\n if (IsReadableStreamDefaultReader(reader) === true) {\n for (var i = 0; i < reader._readRequests.length; i++) {\n var _resolve = reader._readRequests[i]._resolve;\n\n _resolve(CreateIterResultObject(undefined, true));\n }\n reader._readRequests = [];\n }\n\n defaultReaderClosedPromiseResolve(reader);\n\n return undefined;\n}\n\nfunction ReadableStreamError(stream, e) {\n assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');\n assert(stream._state === 'readable', 'state must be readable');\n\n stream._state = 'errored';\n stream._storedError = e;\n\n var reader = stream._reader;\n\n if (reader === undefined) {\n return undefined;\n }\n\n if (IsReadableStreamDefaultReader(reader) === true) {\n for (var i = 0; i < reader._readRequests.length; i++) {\n var readRequest = reader._readRequests[i];\n readRequest._reject(e);\n }\n\n reader._readRequests = [];\n } else {\n assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');\n\n for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {\n var readIntoRequest = reader._readIntoRequests[_i];\n readIntoRequest._reject(e);\n }\n\n reader._readIntoRequests = [];\n }\n\n defaultReaderClosedPromiseReject(reader, e);\n reader._closedPromise.catch(function () {});\n}\n\nfunction ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n var reader = stream._reader;\n\n assert(reader._readIntoRequests.length > 0);\n\n var readIntoRequest = reader._readIntoRequests.shift();\n readIntoRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamFulfillReadRequest(stream, chunk, done) {\n var reader = stream._reader;\n\n assert(reader._readRequests.length > 0);\n\n var readRequest = reader._readRequests.shift();\n readRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n}\n\nfunction ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n}\n\nfunction ReadableStreamHasBYOBReader(stream) {\n var reader = stream._reader;\n\n if (reader === undefined) {\n return false;\n }\n\n if (IsReadableStreamBYOBReader(reader) === false) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamHasDefaultReader(stream) {\n var reader = stream._reader;\n\n if (reader === undefined) {\n return false;\n }\n\n if (IsReadableStreamDefaultReader(reader) === false) {\n return false;\n }\n\n return true;\n}\n\n// Readers\n\nvar ReadableStreamDefaultReader = function () {\n function ReadableStreamDefaultReader(stream) {\n _classCallCheck(this, ReadableStreamDefaultReader);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n }\n if (IsReadableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n\n ReadableStreamReaderGenericInitialize(this, stream);\n\n this._readRequests = [];\n }\n\n _createClass(ReadableStreamDefaultReader, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('cancel'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('cancel'));\n }\n\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n }, {\n key: 'read',\n value: function read() {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('read'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('read from'));\n }\n\n return ReadableStreamDefaultReaderRead(this);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (IsReadableStreamDefaultReader(this) === false) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n\n if (this._ownerReadableStream === undefined) {\n return;\n }\n\n if (this._readRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n\n ReadableStreamReaderGenericRelease(this);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }]);\n\n return ReadableStreamDefaultReader;\n}();\n\nvar ReadableStreamBYOBReader = function () {\n function ReadableStreamBYOBReader(stream) {\n _classCallCheck(this, ReadableStreamBYOBReader);\n\n if (!IsReadableStream(stream)) {\n throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n }\n if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n }\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n\n ReadableStreamReaderGenericInitialize(this, stream);\n\n this._readIntoRequests = [];\n }\n\n _createClass(ReadableStreamBYOBReader, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('cancel'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('cancel'));\n }\n\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n }, {\n key: 'read',\n value: function read(view) {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('read'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('read from'));\n }\n\n if (!ArrayBuffer.isView(view)) {\n return Promise.reject(new TypeError('view must be an array buffer view'));\n }\n\n if (view.byteLength === 0) {\n return Promise.reject(new TypeError('view must have non-zero byteLength'));\n }\n\n return ReadableStreamBYOBReaderRead(this, view);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n\n if (this._ownerReadableStream === undefined) {\n return;\n }\n\n if (this._readIntoRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n\n ReadableStreamReaderGenericRelease(this);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }]);\n\n return ReadableStreamBYOBReader;\n}();\n\n// Abstract operations for the readers.\n\nfunction IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n } else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n } else {\n assert(stream._state === 'errored', 'state must be errored');\n\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n reader._closedPromise.catch(function () {});\n }\n}\n\n// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n// check.\n\nfunction ReadableStreamReaderGenericCancel(reader, reason) {\n var stream = reader._ownerReadableStream;\n assert(stream !== undefined);\n return ReadableStreamCancel(stream, reason);\n}\n\nfunction ReadableStreamReaderGenericRelease(reader) {\n assert(reader._ownerReadableStream !== undefined);\n assert(reader._ownerReadableStream._reader === reader);\n\n if (reader._ownerReadableStream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n } else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n }\n reader._closedPromise.catch(function () {});\n\n reader._ownerReadableStream._reader = undefined;\n reader._ownerReadableStream = undefined;\n}\n\nfunction ReadableStreamBYOBReaderRead(reader, view) {\n var stream = reader._ownerReadableStream;\n\n assert(stream !== undefined);\n\n stream._disturbed = true;\n\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n // Controllers must implement this.\n return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n}\n\nfunction ReadableStreamDefaultReaderRead(reader) {\n var stream = reader._ownerReadableStream;\n\n assert(stream !== undefined);\n\n stream._disturbed = true;\n\n if (stream._state === 'closed') {\n return Promise.resolve(CreateIterResultObject(undefined, true));\n }\n\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n assert(stream._state === 'readable');\n\n return stream._readableStreamController.__pullSteps();\n}\n\n// Controllers\n\nvar ReadableStreamDefaultController = function () {\n function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {\n _classCallCheck(this, ReadableStreamDefaultController);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');\n }\n\n if (stream._readableStreamController !== undefined) {\n throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');\n }\n\n this._controlledReadableStream = stream;\n\n this._underlyingSource = underlyingSource;\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = undefined;\n this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._started = false;\n this._closeRequested = false;\n this._pullAgain = false;\n this._pulling = false;\n\n var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n this._strategySize = normalizedStrategy.size;\n this._strategyHWM = normalizedStrategy.highWaterMark;\n\n var controller = this;\n\n var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);\n Promise.resolve(startResult).then(function () {\n controller._started = true;\n\n assert(controller._pulling === false);\n assert(controller._pullAgain === false);\n\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, r);\n }).catch(rethrowAssertionErrorRejection);\n }\n\n _createClass(ReadableStreamDefaultController, [{\n key: 'close',\n value: function close() {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n }\n\n ReadableStreamDefaultControllerClose(this);\n }\n }, {\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n }\n\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n }\n }, {\n key: 'error',\n value: function error(e) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n\n var stream = this._controlledReadableStream;\n if (stream._state !== 'readable') {\n throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n }\n\n ReadableStreamDefaultControllerError(this, e);\n }\n }, {\n key: '__cancelSteps',\n value: function __cancelSteps(reason) {\n ResetQueue(this);\n return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);\n }\n }, {\n key: '__pullSteps',\n value: function __pullSteps() {\n var stream = this._controlledReadableStream;\n\n if (this._queue.length > 0) {\n var chunk = DequeueValue(this);\n\n if (this._closeRequested === true && this._queue.length === 0) {\n ReadableStreamClose(stream);\n } else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n\n return Promise.resolve(CreateIterResultObject(chunk, false));\n }\n\n var pendingPromise = ReadableStreamAddReadRequest(stream);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n return pendingPromise;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n\n return ReadableStreamDefaultControllerGetDesiredSize(this);\n }\n }]);\n\n return ReadableStreamDefaultController;\n}();\n\n// Abstract operations for the ReadableStreamDefaultController.\n\nfunction IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return undefined;\n }\n\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return undefined;\n }\n\n assert(controller._pullAgain === false);\n\n controller._pulling = true;\n\n var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);\n pullPromise.then(function () {\n controller._pulling = false;\n\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n return ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n return undefined;\n }, function (e) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, e);\n }).catch(rethrowAssertionErrorRejection);\n\n return undefined;\n}\n\nfunction ReadableStreamDefaultControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n\n if (stream._state === 'closed' || stream._state === 'errored') {\n return false;\n }\n\n if (controller._closeRequested === true) {\n return false;\n }\n\n if (controller._started === false) {\n return false;\n }\n\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n\n return false;\n}\n\n// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction ReadableStreamDefaultControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n controller._closeRequested = true;\n\n if (controller._queue.length === 0) {\n ReadableStreamClose(stream);\n }\n}\n\nfunction ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n } else {\n var chunkSize = 1;\n\n if (controller._strategySize !== undefined) {\n var strategySize = controller._strategySize;\n try {\n chunkSize = strategySize(chunk);\n } catch (chunkSizeE) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n throw chunkSizeE;\n }\n }\n\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n } catch (enqueueE) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n throw enqueueE;\n }\n }\n\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n\n return undefined;\n}\n\nfunction ReadableStreamDefaultControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n\n assert(stream._state === 'readable');\n\n ResetQueue(controller);\n\n ReadableStreamError(stream, e);\n}\n\nfunction ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {\n if (controller._controlledReadableStream._state === 'readable') {\n ReadableStreamDefaultControllerError(controller, e);\n }\n}\n\nfunction ReadableStreamDefaultControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nvar ReadableStreamBYOBRequest = function () {\n function ReadableStreamBYOBRequest(controller, view) {\n _classCallCheck(this, ReadableStreamBYOBRequest);\n\n this._associatedReadableByteStreamController = controller;\n this._view = view;\n }\n\n _createClass(ReadableStreamBYOBRequest, [{\n key: 'respond',\n value: function respond(bytesWritten) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n }\n }, {\n key: 'respondWithNewView',\n value: function respondWithNewView(view) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n }\n }, {\n key: 'view',\n get: function get() {\n return this._view;\n }\n }]);\n\n return ReadableStreamBYOBRequest;\n}();\n\nvar ReadableByteStreamController = function () {\n function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {\n _classCallCheck(this, ReadableByteStreamController);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');\n }\n\n if (stream._readableStreamController !== undefined) {\n throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');\n }\n\n this._controlledReadableStream = stream;\n\n this._underlyingByteSource = underlyingByteSource;\n\n this._pullAgain = false;\n this._pulling = false;\n\n ReadableByteStreamControllerClearPendingPullIntos(this);\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._closeRequested = false;\n this._started = false;\n\n this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n throw new RangeError('autoAllocateChunkSize must be a positive integer');\n }\n }\n this._autoAllocateChunkSize = autoAllocateChunkSize;\n\n this._pendingPullIntos = [];\n\n var controller = this;\n\n var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);\n Promise.resolve(startResult).then(function () {\n controller._started = true;\n\n assert(controller._pulling === false);\n assert(controller._pullAgain === false);\n\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }, function (r) {\n if (stream._state === 'readable') {\n ReadableByteStreamControllerError(controller, r);\n }\n }).catch(rethrowAssertionErrorRejection);\n }\n\n _createClass(ReadableByteStreamController, [{\n key: 'close',\n value: function close() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('close');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n }\n\n ReadableByteStreamControllerClose(this);\n }\n }, {\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('enqueue');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n }\n\n if (!ArrayBuffer.isView(chunk)) {\n throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n }\n\n ReadableByteStreamControllerEnqueue(this, chunk);\n }\n }, {\n key: 'error',\n value: function error(e) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('error');\n }\n\n var stream = this._controlledReadableStream;\n if (stream._state !== 'readable') {\n throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n }\n\n ReadableByteStreamControllerError(this, e);\n }\n }, {\n key: '__cancelSteps',\n value: function __cancelSteps(reason) {\n if (this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos[0];\n firstDescriptor.bytesFilled = 0;\n }\n\n ResetQueue(this);\n\n return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);\n }\n }, {\n key: '__pullSteps',\n value: function __pullSteps() {\n var stream = this._controlledReadableStream;\n assert(ReadableStreamHasDefaultReader(stream) === true);\n\n if (this._queueTotalSize > 0) {\n assert(ReadableStreamGetNumReadRequests(stream) === 0);\n\n var entry = this._queue.shift();\n this._queueTotalSize -= entry.byteLength;\n\n ReadableByteStreamControllerHandleQueueDrain(this);\n\n var view = void 0;\n try {\n view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n } catch (viewE) {\n return Promise.reject(viewE);\n }\n\n return Promise.resolve(CreateIterResultObject(view, false));\n }\n\n var autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n var buffer = void 0;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n } catch (bufferE) {\n return Promise.reject(bufferE);\n }\n\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n elementSize: 1,\n ctor: Uint8Array,\n readerType: 'default'\n };\n\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n\n var promise = ReadableStreamAddReadRequest(stream);\n\n ReadableByteStreamControllerCallPullIfNeeded(this);\n\n return promise;\n }\n }, {\n key: 'byobRequest',\n get: function get() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n\n if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos[0];\n var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n\n this._byobRequest = new ReadableStreamBYOBRequest(this, view);\n }\n\n return this._byobRequest;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n\n return ReadableByteStreamControllerGetDesiredSize(this);\n }\n }]);\n\n return ReadableByteStreamController;\n}();\n\n// Abstract operations for the ReadableByteStreamController.\n\nfunction IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableByteStreamControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return undefined;\n }\n\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return undefined;\n }\n\n assert(controller._pullAgain === false);\n\n controller._pulling = true;\n\n // TODO: Test controller argument\n var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);\n pullPromise.then(function () {\n controller._pulling = false;\n\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n if (controller._controlledReadableStream._state === 'readable') {\n ReadableByteStreamControllerError(controller, e);\n }\n }).catch(rethrowAssertionErrorRejection);\n\n return undefined;\n}\n\nfunction ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = [];\n}\n\nfunction ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n assert(stream._state !== 'errored', 'state must not be errored');\n\n var done = false;\n if (stream._state === 'closed') {\n assert(pullIntoDescriptor.bytesFilled === 0);\n done = true;\n }\n\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n } else {\n assert(pullIntoDescriptor.readerType === 'byob');\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n}\n\nfunction ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n var bytesFilled = pullIntoDescriptor.bytesFilled;\n var elementSize = pullIntoDescriptor.elementSize;\n\n assert(bytesFilled <= pullIntoDescriptor.byteLength);\n assert(bytesFilled % elementSize === 0);\n\n return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n}\n\nfunction ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({ buffer: buffer, byteOffset: byteOffset, byteLength: byteLength });\n controller._queueTotalSize += byteLength;\n}\n\nfunction ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n var elementSize = pullIntoDescriptor.elementSize;\n\n var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n\n var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n\n var totalBytesToCopyRemaining = maxBytesToCopy;\n var ready = false;\n if (maxAlignedBytes > currentAlignedBytes) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n\n var queue = controller._queue;\n\n while (totalBytesToCopyRemaining > 0) {\n var headOfQueue = queue[0];\n\n var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n\n var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n } else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n\n if (ready === false) {\n assert(controller._queueTotalSize === 0, 'queue must be empty');\n assert(pullIntoDescriptor.bytesFilled > 0);\n assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);\n }\n\n return ready;\n}\n\nfunction ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);\n\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n pullIntoDescriptor.bytesFilled += size;\n}\n\nfunction ReadableByteStreamControllerHandleQueueDrain(controller) {\n assert(controller._controlledReadableStream._state === 'readable');\n\n if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n ReadableStreamClose(controller._controlledReadableStream);\n } else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n}\n\nfunction ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === undefined) {\n return;\n }\n\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = undefined;\n controller._byobRequest = undefined;\n}\n\nfunction ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n assert(controller._closeRequested === false);\n\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n\n var pullIntoDescriptor = controller._pendingPullIntos[0];\n\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n }\n }\n}\n\nfunction ReadableByteStreamControllerPullInto(controller, view) {\n var stream = controller._controlledReadableStream;\n\n var elementSize = 1;\n if (view.constructor !== DataView) {\n elementSize = view.constructor.BYTES_PER_ELEMENT;\n }\n\n var ctor = view.constructor;\n\n var pullIntoDescriptor = {\n buffer: view.buffer,\n byteOffset: view.byteOffset,\n byteLength: view.byteLength,\n bytesFilled: 0,\n elementSize: elementSize,\n ctor: ctor,\n readerType: 'byob'\n };\n\n if (controller._pendingPullIntos.length > 0) {\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n controller._pendingPullIntos.push(pullIntoDescriptor);\n\n // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n // - No change happens on desiredSize\n // - The source has already been notified of that there's at least 1 pending read(view)\n\n return ReadableStreamAddReadIntoRequest(stream);\n }\n\n if (stream._state === 'closed') {\n var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n return Promise.resolve(CreateIterResultObject(emptyView, true));\n }\n\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n\n ReadableByteStreamControllerHandleQueueDrain(controller);\n\n return Promise.resolve(CreateIterResultObject(filledView, false));\n }\n\n if (controller._closeRequested === true) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n\n return Promise.reject(e);\n }\n }\n\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n controller._pendingPullIntos.push(pullIntoDescriptor);\n\n var promise = ReadableStreamAddReadIntoRequest(stream);\n\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n\n return promise;\n}\n\nfunction ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n\n assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');\n\n var stream = controller._controlledReadableStream;\n if (ReadableStreamHasBYOBReader(stream) === true) {\n while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n }\n }\n}\n\nfunction ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n throw new RangeError('bytesWritten out of range');\n }\n\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n // TODO: Figure out whether we should detach the buffer or not here.\n return;\n }\n\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n }\n\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n var firstDescriptor = controller._pendingPullIntos[0];\n\n var stream = controller._controlledReadableStream;\n\n if (stream._state === 'closed') {\n if (bytesWritten !== 0) {\n throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n }\n\n ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n } else {\n assert(stream._state === 'readable');\n\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n}\n\nfunction ReadableByteStreamControllerShiftPendingPullInto(controller) {\n var descriptor = controller._pendingPullIntos.shift();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n return descriptor;\n}\n\nfunction ReadableByteStreamControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n\n if (stream._state !== 'readable') {\n return false;\n }\n\n if (controller._closeRequested === true) {\n return false;\n }\n\n if (controller._started === false) {\n return false;\n }\n\n if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n\n if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n\n if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {\n return true;\n }\n\n return false;\n}\n\n// A client of ReadableByteStreamController may use these functions directly to bypass state check.\n\nfunction ReadableByteStreamControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n\n return;\n }\n\n if (controller._pendingPullIntos.length > 0) {\n var firstPendingPullInto = controller._pendingPullIntos[0];\n if (firstPendingPullInto.bytesFilled > 0) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n\n throw e;\n }\n }\n\n ReadableStreamClose(stream);\n}\n\nfunction ReadableByteStreamControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n var buffer = chunk.buffer;\n var byteOffset = chunk.byteOffset;\n var byteLength = chunk.byteLength;\n var transferredBuffer = TransferArrayBuffer(buffer);\n\n if (ReadableStreamHasDefaultReader(stream) === true) {\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n } else {\n assert(controller._queue.length === 0);\n\n var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\n } else if (ReadableStreamHasBYOBReader(stream) === true) {\n // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n } else {\n assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n}\n\nfunction ReadableByteStreamControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n\n assert(stream._state === 'readable');\n\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n\n ResetQueue(controller);\n ReadableStreamError(stream, e);\n}\n\nfunction ReadableByteStreamControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction ReadableByteStreamControllerRespond(controller, bytesWritten) {\n bytesWritten = Number(bytesWritten);\n if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n throw new RangeError('bytesWritten must be a finite');\n }\n\n assert(controller._pendingPullIntos.length > 0);\n\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n}\n\nfunction ReadableByteStreamControllerRespondWithNewView(controller, view) {\n assert(controller._pendingPullIntos.length > 0);\n\n var firstDescriptor = controller._pendingPullIntos[0];\n\n if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n throw new RangeError('The region specified by view does not match byobRequest');\n }\n if (firstDescriptor.byteLength !== view.byteLength) {\n throw new RangeError('The buffer of view has different capacity than byobRequest');\n }\n\n firstDescriptor.buffer = view.buffer;\n\n ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n}\n\n// Helper functions for the ReadableStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');\n}\n\n// Helper functions for the readers.\n\nfunction readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction defaultReaderBrandCheckException(name) {\n return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');\n}\n\nfunction defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = new Promise(function (resolve, reject) {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n}\n\nfunction defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n reader._closedPromise = Promise.reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseInitializeAsResolved(reader) {\n reader._closedPromise = Promise.resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseReject(reader, reason) {\n assert(reader._closedPromise_resolve !== undefined);\n assert(reader._closedPromise_reject !== undefined);\n\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseResetToRejected(reader, reason) {\n assert(reader._closedPromise_resolve === undefined);\n assert(reader._closedPromise_reject === undefined);\n\n reader._closedPromise = Promise.reject(reason);\n}\n\nfunction defaultReaderClosedPromiseResolve(reader) {\n assert(reader._closedPromise_resolve !== undefined);\n assert(reader._closedPromise_reject !== undefined);\n\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction byobReaderBrandCheckException(name) {\n return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');\n}\n\n// Helper functions for the ReadableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');\n}\n\n// Helper functions for the ReadableStreamBYOBRequest.\n\nfunction byobRequestBrandCheckException(name) {\n return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');\n}\n\n// Helper functions for the ReadableByteStreamController.\n\nfunction byteStreamControllerBrandCheckException(name) {\n return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');\n}\n\n// Helper function for ReadableStream pipeThrough\n\nfunction ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {\n try {\n // This relies on the brand-check that is enforced by Promise.prototype.then(). As with the rest of the reference\n // implementation, it doesn't attempt to do the right thing if someone has modified the global environment.\n Promise.prototype.then.call(promise, undefined, function () {});\n } catch (e) {\n // The brand check failed, therefore the internal slot is not present and there's nothing further to do.\n }\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar transformStream = __w_pdfjs_require__(6);\nvar readableStream = __w_pdfjs_require__(4);\nvar writableStream = __w_pdfjs_require__(2);\n\nexports.TransformStream = transformStream.TransformStream;\nexports.ReadableStream = readableStream.ReadableStream;\nexports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;\nexports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;\nexports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;\nexports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;\nexports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;\nexports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;\nexports.IsWritableStream = writableStream.IsWritableStream;\nexports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;\nexports.WritableStream = writableStream.WritableStream;\nexports.WritableStreamAbort = writableStream.WritableStreamAbort;\nexports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;\nexports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;\nexports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;\nexports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(1),\n assert = _require.assert;\n\nvar _require2 = __w_pdfjs_require__(0),\n InvokeOrNoop = _require2.InvokeOrNoop,\n PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,\n PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,\n typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(4),\n ReadableStream = _require3.ReadableStream,\n ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,\n ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,\n ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,\n ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;\n\nvar _require4 = __w_pdfjs_require__(2),\n WritableStream = _require4.WritableStream,\n WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;\n\n// Methods on the transform stream controller object\n\nfunction TransformStreamCloseReadable(transformStream) {\n // console.log('TransformStreamCloseReadable()');\n\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n if (transformStream._readableClosed === true) {\n throw new TypeError('Readable side is already closed');\n }\n\n TransformStreamCloseReadableInternal(transformStream);\n}\n\nfunction TransformStreamEnqueueToReadable(transformStream, chunk) {\n // console.log('TransformStreamEnqueueToReadable()');\n\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n if (transformStream._readableClosed === true) {\n throw new TypeError('Readable side is already closed');\n }\n\n // We throttle transformer.transform invocation based on the backpressure of the ReadableStream, but we still\n // accept TransformStreamEnqueueToReadable() calls.\n\n var controller = transformStream._readableController;\n\n try {\n ReadableStreamDefaultControllerEnqueue(controller, chunk);\n } catch (e) {\n // This happens when readableStrategy.size() throws.\n // The ReadableStream has already errored itself.\n transformStream._readableClosed = true;\n TransformStreamErrorIfNeeded(transformStream, e);\n\n throw transformStream._storedError;\n }\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n var maybeBackpressure = desiredSize <= 0;\n\n if (maybeBackpressure === true && transformStream._backpressure === false) {\n // This allows pull() again. When desiredSize is 0, it's possible that a pull() will happen immediately (but\n // asynchronously) after this because of pending read()s and set _backpressure back to false.\n //\n // If pull() could be called from inside enqueue(), then this logic would be wrong. This cannot happen\n // because there is always a promise pending from start() or pull() when _backpressure is false.\n TransformStreamSetBackpressure(transformStream, true);\n }\n}\n\nfunction TransformStreamError(transformStream, e) {\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n TransformStreamErrorInternal(transformStream, e);\n}\n\n// Abstract operations.\n\nfunction TransformStreamCloseReadableInternal(transformStream) {\n assert(transformStream._errored === false);\n assert(transformStream._readableClosed === false);\n\n try {\n ReadableStreamDefaultControllerClose(transformStream._readableController);\n } catch (e) {\n assert(false);\n }\n\n transformStream._readableClosed = true;\n}\n\nfunction TransformStreamErrorIfNeeded(transformStream, e) {\n if (transformStream._errored === false) {\n TransformStreamErrorInternal(transformStream, e);\n }\n}\n\nfunction TransformStreamErrorInternal(transformStream, e) {\n // console.log('TransformStreamErrorInternal()');\n\n assert(transformStream._errored === false);\n\n transformStream._errored = true;\n transformStream._storedError = e;\n\n if (transformStream._writableDone === false) {\n WritableStreamDefaultControllerError(transformStream._writableController, e);\n }\n if (transformStream._readableClosed === false) {\n ReadableStreamDefaultControllerError(transformStream._readableController, e);\n }\n}\n\n// Used for preventing the next write() call on TransformStreamSink until there\n// is no longer backpressure.\nfunction TransformStreamReadableReadyPromise(transformStream) {\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n if (transformStream._backpressure === false) {\n return Promise.resolve();\n }\n\n assert(transformStream._backpressure === true, '_backpressure should have been initialized');\n\n return transformStream._backpressureChangePromise;\n}\n\nfunction TransformStreamSetBackpressure(transformStream, backpressure) {\n // console.log(`TransformStreamSetBackpressure(${backpressure})`);\n\n // Passes also when called during construction.\n assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');\n\n if (transformStream._backpressureChangePromise !== undefined) {\n // The fulfillment value is just for a sanity check.\n transformStream._backpressureChangePromise_resolve(backpressure);\n }\n\n transformStream._backpressureChangePromise = new Promise(function (resolve) {\n transformStream._backpressureChangePromise_resolve = resolve;\n });\n\n transformStream._backpressureChangePromise.then(function (resolution) {\n assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');\n });\n\n transformStream._backpressure = backpressure;\n}\n\nfunction TransformStreamDefaultTransform(chunk, transformStreamController) {\n var transformStream = transformStreamController._controlledTransformStream;\n TransformStreamEnqueueToReadable(transformStream, chunk);\n return Promise.resolve();\n}\n\nfunction TransformStreamTransform(transformStream, chunk) {\n // console.log('TransformStreamTransform()');\n\n assert(transformStream._errored === false);\n assert(transformStream._transforming === false);\n assert(transformStream._backpressure === false);\n\n transformStream._transforming = true;\n\n var transformer = transformStream._transformer;\n var controller = transformStream._transformStreamController;\n\n var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);\n\n return transformPromise.then(function () {\n transformStream._transforming = false;\n\n return TransformStreamReadableReadyPromise(transformStream);\n }, function (e) {\n TransformStreamErrorIfNeeded(transformStream, e);\n return Promise.reject(e);\n });\n}\n\nfunction IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n\n return true;\n}\n\nvar TransformStreamSink = function () {\n function TransformStreamSink(transformStream, startPromise) {\n _classCallCheck(this, TransformStreamSink);\n\n this._transformStream = transformStream;\n this._startPromise = startPromise;\n }\n\n _createClass(TransformStreamSink, [{\n key: 'start',\n value: function start(c) {\n var transformStream = this._transformStream;\n\n transformStream._writableController = c;\n\n return this._startPromise.then(function () {\n return TransformStreamReadableReadyPromise(transformStream);\n });\n }\n }, {\n key: 'write',\n value: function write(chunk) {\n // console.log('TransformStreamSink.write()');\n\n var transformStream = this._transformStream;\n\n return TransformStreamTransform(transformStream, chunk);\n }\n }, {\n key: 'abort',\n value: function abort() {\n var transformStream = this._transformStream;\n transformStream._writableDone = true;\n TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));\n }\n }, {\n key: 'close',\n value: function close() {\n // console.log('TransformStreamSink.close()');\n\n var transformStream = this._transformStream;\n\n assert(transformStream._transforming === false);\n\n transformStream._writableDone = true;\n\n var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);\n // Return a promise that is fulfilled with undefined on success.\n return flushPromise.then(function () {\n if (transformStream._errored === true) {\n return Promise.reject(transformStream._storedError);\n }\n if (transformStream._readableClosed === false) {\n TransformStreamCloseReadableInternal(transformStream);\n }\n return Promise.resolve();\n }).catch(function (r) {\n TransformStreamErrorIfNeeded(transformStream, r);\n return Promise.reject(transformStream._storedError);\n });\n }\n }]);\n\n return TransformStreamSink;\n}();\n\nvar TransformStreamSource = function () {\n function TransformStreamSource(transformStream, startPromise) {\n _classCallCheck(this, TransformStreamSource);\n\n this._transformStream = transformStream;\n this._startPromise = startPromise;\n }\n\n _createClass(TransformStreamSource, [{\n key: 'start',\n value: function start(c) {\n var transformStream = this._transformStream;\n\n transformStream._readableController = c;\n\n return this._startPromise.then(function () {\n // Prevent the first pull() call until there is backpressure.\n\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n if (transformStream._backpressure === true) {\n return Promise.resolve();\n }\n\n assert(transformStream._backpressure === false, '_backpressure should have been initialized');\n\n return transformStream._backpressureChangePromise;\n });\n }\n }, {\n key: 'pull',\n value: function pull() {\n // console.log('TransformStreamSource.pull()');\n\n var transformStream = this._transformStream;\n\n // Invariant. Enforced by the promises returned by start() and pull().\n assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');\n\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n TransformStreamSetBackpressure(transformStream, false);\n\n // Prevent the next pull() call until there is backpressure.\n return transformStream._backpressureChangePromise;\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n var transformStream = this._transformStream;\n transformStream._readableClosed = true;\n TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));\n }\n }]);\n\n return TransformStreamSource;\n}();\n\nvar TransformStreamDefaultController = function () {\n function TransformStreamDefaultController(transformStream) {\n _classCallCheck(this, TransformStreamDefaultController);\n\n if (IsTransformStream(transformStream) === false) {\n throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');\n }\n\n if (transformStream._transformStreamController !== undefined) {\n throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');\n }\n\n this._controlledTransformStream = transformStream;\n }\n\n _createClass(TransformStreamDefaultController, [{\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n\n TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);\n }\n }, {\n key: 'close',\n value: function close() {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n\n TransformStreamCloseReadable(this._controlledTransformStream);\n }\n }, {\n key: 'error',\n value: function error(reason) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n\n TransformStreamError(this._controlledTransformStream, reason);\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n\n var transformStream = this._controlledTransformStream;\n var readableController = transformStream._readableController;\n\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n }\n }]);\n\n return TransformStreamDefaultController;\n}();\n\nvar TransformStream = function () {\n function TransformStream() {\n var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, TransformStream);\n\n this._transformer = transformer;\n var readableStrategy = transformer.readableStrategy,\n writableStrategy = transformer.writableStrategy;\n\n\n this._transforming = false;\n this._errored = false;\n this._storedError = undefined;\n\n this._writableController = undefined;\n this._readableController = undefined;\n this._transformStreamController = undefined;\n\n this._writableDone = false;\n this._readableClosed = false;\n\n this._backpressure = undefined;\n this._backpressureChangePromise = undefined;\n this._backpressureChangePromise_resolve = undefined;\n\n this._transformStreamController = new TransformStreamDefaultController(this);\n\n var startPromise_resolve = void 0;\n var startPromise = new Promise(function (resolve) {\n startPromise_resolve = resolve;\n });\n\n var source = new TransformStreamSource(this, startPromise);\n\n this._readable = new ReadableStream(source, readableStrategy);\n\n var sink = new TransformStreamSink(this, startPromise);\n\n this._writable = new WritableStream(sink, writableStrategy);\n\n assert(this._writableController !== undefined);\n assert(this._readableController !== undefined);\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);\n // Set _backpressure based on desiredSize. As there is no read() at this point, we can just interpret\n // desiredSize being non-positive as backpressure.\n TransformStreamSetBackpressure(this, desiredSize <= 0);\n\n var transformStream = this;\n var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);\n startPromise_resolve(startResult);\n startPromise.catch(function (e) {\n // The underlyingSink and underlyingSource will error the readable and writable ends on their own.\n if (transformStream._errored === false) {\n transformStream._errored = true;\n transformStream._storedError = e;\n }\n });\n }\n\n _createClass(TransformStream, [{\n key: 'readable',\n get: function get() {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException('readable');\n }\n\n return this._readable;\n }\n }, {\n key: 'writable',\n get: function get() {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException('writable');\n }\n\n return this._writable;\n }\n }]);\n\n return TransformStream;\n}();\n\nmodule.exports = { TransformStream: TransformStream };\n\n// Helper functions for the TransformStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');\n}\n\n// Helper functions for the TransformStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nmodule.exports = __w_pdfjs_require__(5);\n\n\n/***/ })\n/******/ ])));","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-globals */\n\nif (typeof PDFJSDev !== 'undefined' && !PDFJSDev.test('GENERIC')) {\n // The `URL` constructor is assumed to be available in the extension builds.\n exports.URL = URL;\n} else {\n let isURLSupported = false;\n try {\n if (typeof URL === 'function' && typeof URL.prototype === 'object' &&\n ('origin' in URL.prototype)) {\n const u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n isURLSupported = (u.href === 'http://a/c%20d');\n }\n } catch (ex) {\n // The `URL` constructor cannot be used.\n }\n\n if (isURLSupported) {\n exports.URL = URL;\n } else {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {\n class DummyURL {\n constructor() {\n throw new Error('The current image decoders doesn\\'t utilize the ' +\n '`URL` constructor, hence it shouldn\\'t need to be ' +\n 'polyfilled for the IMAGE_DECODERS build target.');\n }\n }\n exports.URL = DummyURL;\n } else {\n const PolyfillURL = require('../../external/url/url-lib').URL;\n\n // Attempt to copy over the static methods.\n const OriginalURL = require('./global_scope').URL;\n if (OriginalURL) {\n PolyfillURL.createObjectURL = function(blob) {\n // IE extension allows a second optional options argument, see\n // http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx\n return OriginalURL.createObjectURL.apply(OriginalURL, arguments);\n };\n PolyfillURL.revokeObjectURL = function(url) {\n OriginalURL.revokeObjectURL(url);\n };\n }\n exports.URL = PolyfillURL;\n }\n }\n}\n","/* Any copyright is dedicated to the Public Domain.\n * http://creativecommons.org/publicdomain/zero/1.0/\n */\n\n// Polyfill obtained from: https://github.com/Polymer/URL\n\n(function URLConstructorClosure() {\n 'use strict';\n\n var relative = Object.create(null);\n relative['ftp'] = 21;\n relative['file'] = 0;\n relative['gopher'] = 70;\n relative['http'] = 80;\n relative['https'] = 443;\n relative['ws'] = 80;\n relative['wss'] = 443;\n\n var relativePathDotMapping = Object.create(null);\n relativePathDotMapping['%2e'] = '.';\n relativePathDotMapping['.%2e'] = '..';\n relativePathDotMapping['%2e.'] = '..';\n relativePathDotMapping['%2e%2e'] = '..';\n\n function isRelativeScheme(scheme) {\n return relative[scheme] !== undefined;\n }\n\n function invalid() {\n clear.call(this);\n this._isInvalid = true;\n }\n\n function IDNAToASCII(h) {\n if (h === '') {\n invalid.call(this);\n }\n // XXX\n return h.toLowerCase();\n }\n\n function percentEscape(c) {\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ? `\n [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n function percentEscapeQuery(c) {\n // XXX This actually needs to encode c using encoding and then\n // convert the bytes one-by-one.\n\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ` (do not escape '?')\n [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n var EOF, ALPHA = /[a-zA-Z]/,\n ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n\n function parse(input, stateOverride, base) {\n function err(message) {\n errors.push(message);\n }\n\n var state = stateOverride || 'scheme start',\n cursor = 0,\n buffer = '',\n seenAt = false,\n seenBracket = false,\n errors = [];\n\n loop: while ((input[cursor - 1] !== EOF || cursor === 0) &&\n !this._isInvalid) {\n var c = input[cursor];\n switch (state) {\n case 'scheme start':\n if (c && ALPHA.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n state = 'scheme';\n } else if (!stateOverride) {\n buffer = '';\n state = 'no scheme';\n continue;\n } else {\n err('Invalid scheme.');\n break loop;\n }\n break;\n\n case 'scheme':\n if (c && ALPHANUMERIC.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n } else if (c === ':') {\n this._scheme = buffer;\n buffer = '';\n if (stateOverride) {\n break loop;\n }\n if (isRelativeScheme(this._scheme)) {\n this._isRelative = true;\n }\n if (this._scheme === 'file') {\n state = 'relative';\n } else if (this._isRelative && base &&\n base._scheme === this._scheme) {\n state = 'relative or authority';\n } else if (this._isRelative) {\n state = 'authority first slash';\n } else {\n state = 'scheme data';\n }\n } else if (!stateOverride) {\n buffer = '';\n cursor = 0;\n state = 'no scheme';\n continue;\n } else if (c === EOF) {\n break loop;\n } else {\n err('Code point not allowed in scheme: ' + c);\n break loop;\n }\n break;\n\n case 'scheme data':\n if (c === '?') {\n this._query = '?';\n state = 'query';\n } else if (c === '#') {\n this._fragment = '#';\n state = 'fragment';\n } else {\n // XXX error handling\n if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._schemeData += percentEscape(c);\n }\n }\n break;\n\n case 'no scheme':\n if (!base || !(isRelativeScheme(base._scheme))) {\n err('Missing scheme.');\n invalid.call(this);\n } else {\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative or authority':\n if (c === '/' && input[cursor + 1] === '/') {\n state = 'authority ignore slashes';\n } else {\n err('Expected /, got: ' + c);\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative':\n this._isRelative = true;\n if (this._scheme !== 'file') {\n this._scheme = base._scheme;\n }\n if (c === EOF) {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._username = base._username;\n this._password = base._password;\n break loop;\n } else if (c === '/' || c === '\\\\') {\n if (c === '\\\\') {\n err('\\\\ is an invalid code point.');\n }\n state = 'relative slash';\n } else if (c === '?') {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = '?';\n this._username = base._username;\n this._password = base._password;\n state = 'query';\n } else if (c === '#') {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._fragment = '#';\n this._username = base._username;\n this._password = base._password;\n state = 'fragment';\n } else {\n var nextC = input[cursor + 1];\n var nextNextC = input[cursor + 2];\n if (this._scheme !== 'file' || !ALPHA.test(c) ||\n (nextC !== ':' && nextC !== '|') ||\n (nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\\\' &&\n nextNextC !== '?' && nextNextC !== '#')) {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n this._path = base._path.slice();\n this._path.pop();\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'relative slash':\n if (c === '/' || c === '\\\\') {\n if (c === '\\\\') {\n err('\\\\ is an invalid code point.');\n }\n if (this._scheme === 'file') {\n state = 'file host';\n } else {\n state = 'authority ignore slashes';\n }\n } else {\n if (this._scheme !== 'file') {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'authority first slash':\n if (c === '/') {\n state = 'authority second slash';\n } else {\n err('Expected \\'/\\', got: ' + c);\n state = 'authority ignore slashes';\n continue;\n }\n break;\n\n case 'authority second slash':\n state = 'authority ignore slashes';\n if (c !== '/') {\n err('Expected \\'/\\', got: ' + c);\n continue;\n }\n break;\n\n case 'authority ignore slashes':\n if (c !== '/' && c !== '\\\\') {\n state = 'authority';\n continue;\n } else {\n err('Expected authority, got: ' + c);\n }\n break;\n\n case 'authority':\n if (c === '@') {\n if (seenAt) {\n err('@ already seen.');\n buffer += '%40';\n }\n seenAt = true;\n for (var i = 0; i < buffer.length; i++) {\n var cp = buffer[i];\n if (cp === '\\t' || cp === '\\n' || cp === '\\r') {\n err('Invalid whitespace in authority.');\n continue;\n }\n // XXX check URL code points\n if (cp === ':' && this._password === null) {\n this._password = '';\n continue;\n }\n var tempC = percentEscape(cp);\n if (this._password !== null) {\n this._password += tempC;\n } else {\n this._username += tempC;\n }\n }\n buffer = '';\n } else if (c === EOF || c === '/' || c === '\\\\' ||\n c === '?' || c === '#') {\n cursor -= buffer.length;\n buffer = '';\n state = 'host';\n continue;\n } else {\n buffer += c;\n }\n break;\n\n case 'file host':\n if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n if (buffer.length === 2 && ALPHA.test(buffer[0]) &&\n (buffer[1] === ':' || buffer[1] === '|')) {\n state = 'relative path';\n } else if (buffer.length === 0) {\n state = 'relative path start';\n } else {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n }\n continue;\n } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n err('Invalid whitespace in file host.');\n } else {\n buffer += c;\n }\n break;\n\n case 'host':\n case 'hostname':\n if (c === ':' && !seenBracket) {\n // XXX host parsing\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'port';\n if (stateOverride === 'hostname') {\n break loop;\n }\n } else if (c === EOF || c === '/' ||\n c === '\\\\' || c === '?' || c === '#') {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n if (stateOverride) {\n break loop;\n }\n continue;\n } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n if (c === '[') {\n seenBracket = true;\n } else if (c === ']') {\n seenBracket = false;\n }\n buffer += c;\n } else {\n err('Invalid code point in host/hostname: ' + c);\n }\n break;\n\n case 'port':\n if (/[0-9]/.test(c)) {\n buffer += c;\n } else if (c === EOF || c === '/' || c === '\\\\' ||\n c === '?' || c === '#' || stateOverride) {\n if (buffer !== '') {\n var temp = parseInt(buffer, 10);\n if (temp !== relative[this._scheme]) {\n this._port = temp + '';\n }\n buffer = '';\n }\n if (stateOverride) {\n break loop;\n }\n state = 'relative path start';\n continue;\n } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n err('Invalid code point in port: ' + c);\n } else {\n invalid.call(this);\n }\n break;\n\n case 'relative path start':\n if (c === '\\\\') {\n err('\\'\\\\\\' not allowed in path.');\n }\n state = 'relative path';\n if (c !== '/' && c !== '\\\\') {\n continue;\n }\n break;\n\n case 'relative path':\n if (c === EOF || c === '/' || c === '\\\\' ||\n (!stateOverride && (c === '?' || c === '#'))) {\n if (c === '\\\\') {\n err('\\\\ not allowed in relative path.');\n }\n var tmp;\n if ((tmp = relativePathDotMapping[buffer.toLowerCase()])) {\n buffer = tmp;\n }\n if (buffer === '..') {\n this._path.pop();\n if (c !== '/' && c !== '\\\\') {\n this._path.push('');\n }\n } else if (buffer === '.' && c !== '/' && c !== '\\\\') {\n this._path.push('');\n } else if (buffer !== '.') {\n if (this._scheme === 'file' && this._path.length === 0 &&\n buffer.length === 2 && ALPHA.test(buffer[0]) &&\n buffer[1] === '|') {\n buffer = buffer[0] + ':';\n }\n this._path.push(buffer);\n }\n buffer = '';\n if (c === '?') {\n this._query = '?';\n state = 'query';\n } else if (c === '#') {\n this._fragment = '#';\n state = 'fragment';\n }\n } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n buffer += percentEscape(c);\n }\n break;\n\n case 'query':\n if (!stateOverride && c === '#') {\n this._fragment = '#';\n state = 'fragment';\n } else if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._query += percentEscapeQuery(c);\n }\n break;\n\n case 'fragment':\n if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._fragment += c;\n }\n break;\n }\n\n cursor++;\n }\n }\n\n function clear() {\n this._scheme = '';\n this._schemeData = '';\n this._username = '';\n this._password = null;\n this._host = '';\n this._port = '';\n this._path = [];\n this._query = '';\n this._fragment = '';\n this._isInvalid = false;\n this._isRelative = false;\n }\n\n // Does not process domain names or IP addresses.\n // Does not handle encoding for the query parameter.\n function JURL(url, base /* , encoding */) {\n if (base !== undefined && !(base instanceof JURL)) {\n base = new JURL(String(base));\n }\n\n this._url = url;\n clear.call(this);\n\n var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n // encoding = encoding || 'utf-8'\n\n parse.call(this, input, null, base);\n }\n\n JURL.prototype = {\n toString() {\n return this.href;\n },\n get href() {\n if (this._isInvalid) {\n return this._url;\n }\n var authority = '';\n if (this._username !== '' || this._password !== null) {\n authority = this._username +\n (this._password !== null ? ':' + this._password : '') + '@';\n }\n\n return this.protocol +\n (this._isRelative ? '//' + authority + this.host : '') +\n this.pathname + this._query + this._fragment;\n },\n // The named parameter should be different from the setter's function name.\n // Otherwise Safari 5 will throw an error (see issue 8541)\n set href(value) {\n clear.call(this);\n parse.call(this, value);\n },\n\n get protocol() {\n return this._scheme + ':';\n },\n set protocol(value) {\n if (this._isInvalid) {\n return;\n }\n parse.call(this, value + ':', 'scheme start');\n },\n\n get host() {\n return this._isInvalid ? '' : this._port ?\n this._host + ':' + this._port : this._host;\n },\n set host(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'host');\n },\n\n get hostname() {\n return this._host;\n },\n set hostname(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'hostname');\n },\n\n get port() {\n return this._port;\n },\n set port(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'port');\n },\n\n get pathname() {\n return this._isInvalid ? '' : this._isRelative ?\n '/' + this._path.join('/') : this._schemeData;\n },\n set pathname(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n this._path = [];\n parse.call(this, value, 'relative path start');\n },\n\n get search() {\n return this._isInvalid || !this._query || this._query === '?' ?\n '' : this._query;\n },\n set search(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n this._query = '?';\n if (value[0] === '?') {\n value = value.slice(1);\n }\n parse.call(this, value, 'query');\n },\n\n get hash() {\n return this._isInvalid || !this._fragment || this._fragment === '#' ?\n '' : this._fragment;\n },\n set hash(value) {\n if (this._isInvalid) {\n return;\n }\n this._fragment = '#';\n if (value[0] === '#') {\n value = value.slice(1);\n }\n parse.call(this, value, 'fragment');\n },\n\n get origin() {\n var host;\n if (this._isInvalid || !this._scheme) {\n return '';\n }\n // javascript: Gecko returns String(\"\"), WebKit/Blink String(\"null\")\n // Gecko throws error for \"data://\"\n // data: Gecko returns \"\", Blink returns \"data://\", WebKit returns \"null\"\n // Gecko returns String(\"\") for file: mailto:\n // WebKit/Blink returns String(\"SCHEME://\") for file: mailto:\n switch (this._scheme) {\n case 'data':\n case 'file':\n case 'javascript':\n case 'mailto':\n return 'null';\n case 'blob':\n // Special case of blob: -- returns valid origin of _schemeData.\n try {\n return new JURL(this._schemeData).origin || 'null';\n } catch (_) {\n // Invalid _schemeData origin -- ignoring errors.\n }\n return 'null';\n }\n host = this.host;\n if (!host) {\n return '';\n }\n return this._scheme + '://' + host;\n },\n };\n\n exports.URL = JURL;\n})();\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals requirejs, __non_webpack_require__ */\n\nimport {\n assert, createPromiseCapability, getVerbosityLevel, info, InvalidPDFException,\n isArrayBuffer, isSameOrigin, MissingPDFException, NativeImageDecoding,\n PasswordException, setVerbosityLevel, shadow, stringToBytes,\n UnexpectedResponseException, UnknownErrorException, unreachable, URL, warn\n} from '../shared/util';\nimport {\n DOMCanvasFactory, DOMCMapReaderFactory, DummyStatTimer, loadScript,\n PageViewport, RenderingCancelledException, StatTimer\n} from './dom_utils';\nimport { FontFaceObject, FontLoader } from './font_loader';\nimport { apiCompatibilityParams } from './api_compatibility';\nimport { CanvasGraphics } from './canvas';\nimport globalScope from '../shared/global_scope';\nimport { GlobalWorkerOptions } from './worker_options';\nimport { MessageHandler } from '../shared/message_handler';\nimport { Metadata } from './metadata';\nimport { PDFDataTransportStream } from './transport_stream';\nimport { WebGLContext } from './webgl';\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\n\nlet isWorkerDisabled = false;\nlet fallbackWorkerSrc;\n\nlet fakeWorkerFilesLoader = null;\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('GENERIC')) {\n let useRequireEnsure = false;\n // For GENERIC build we need to add support for different fake file loaders\n // for different frameworks.\n if (typeof window === 'undefined') {\n // node.js - disable worker and set require.ensure.\n isWorkerDisabled = true;\n if (typeof __non_webpack_require__.ensure === 'undefined') {\n __non_webpack_require__.ensure = __non_webpack_require__('node-ensure');\n }\n useRequireEnsure = true;\n } else if (typeof __non_webpack_require__ !== 'undefined' &&\n typeof __non_webpack_require__.ensure === 'function') {\n useRequireEnsure = true;\n }\n if (typeof requirejs !== 'undefined' && requirejs.toUrl) {\n fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');\n }\n const dynamicLoaderSupported =\n typeof requirejs !== 'undefined' && requirejs.load;\n fakeWorkerFilesLoader = useRequireEnsure ? (function() {\n return new Promise(function(resolve, reject) {\n __non_webpack_require__.ensure([], function() {\n try {\n let worker;\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('LIB')) {\n worker = __non_webpack_require__('../pdf.worker.js');\n } else {\n worker = __non_webpack_require__('./pdf.worker.js');\n }\n resolve(worker.WorkerMessageHandler);\n } catch (ex) {\n reject(ex);\n }\n }, reject, 'pdfjsWorker');\n });\n }) : dynamicLoaderSupported ? (function() {\n return new Promise(function(resolve, reject) {\n requirejs(['pdfjs-dist/build/pdf.worker'], function(worker) {\n try {\n resolve(worker.WorkerMessageHandler);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n });\n }) : null;\n\n if (!fallbackWorkerSrc && typeof document !== 'undefined') {\n const pdfjsFilePath = document.currentScript && document.currentScript.src;\n if (pdfjsFilePath) {\n fallbackWorkerSrc =\n pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, '.worker$1$2');\n }\n }\n}\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params The document initialization\n * parameters. The \"url\" key is always present.\n * @return {IPDFStream}\n */\n\n/** @type IPDFStreamFactory */\nvar createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates a IPDFStream as an alternative PDF data\n * transport.\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - the factory function\n * that takes document initialization parameters (including a \"url\") and returns\n * an instance of IPDFStream.\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string} url - The URL of the PDF.\n * @property {TypedArray|Array|string} data - Binary PDF data. Use typed arrays\n * (Uint8Array) to improve the memory usage. If PDF data is BASE64-encoded,\n * use atob() to convert it to a binary string first.\n * @property {Object} httpHeaders - Basic authentication headers.\n * @property {boolean} withCredentials - Indicates whether or not cross-site\n * Access-Control requests should be made using credentials such as cookies\n * or authorization headers. The default is false.\n * @property {string} password - For decrypting password-protected PDFs.\n * @property {TypedArray} initialData - A typed array with the first portion or\n * all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} length - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} range\n * @property {number} rangeChunkSize - Optional parameter to specify\n * maximum number of bytes fetched per range request. The default value is\n * 2^16 = 65536.\n * @property {PDFWorker} worker - (optional) The worker that will be used for\n * the loading and parsing of the PDF data.\n * @property {boolean} postMessageTransfers - (optional) Enables transfer usage\n * in postMessage for ArrayBuffers. The default value is `true`.\n * @property {number} verbosity - (optional) Controls the logging level; the\n * constants from {VerbosityLevel} should be used.\n * @property {string} docBaseUrl - (optional) The base URL of the document,\n * used when attempting to recover valid absolute URLs for annotations, and\n * outline items, that (incorrectly) only specify relative URLs.\n * @property {string} nativeImageDecoderSupport - (optional) Strategy for\n * decoding certain (simple) JPEG images in the browser. This is useful for\n * environments without DOM image and canvas support, such as e.g. Node.js.\n * Valid values are 'decode', 'display' or 'none'; where 'decode' is intended\n * for browsers with full image/canvas support, 'display' for environments\n * with limited image support through stubs (useful for SVG conversion),\n * and 'none' where JPEG images will be decoded entirely by PDF.js.\n * The default value is 'decode'.\n * @property {string} cMapUrl - (optional) The URL where the predefined\n * Adobe CMaps are located. Include trailing slash.\n * @property {boolean} cMapPacked - (optional) Specifies if the Adobe CMaps are\n * binary packed.\n * @property {Object} CMapReaderFactory - (optional) The factory that will be\n * used when reading built-in CMap files. Providing a custom factory is useful\n * for environments without `XMLHttpRequest` support, such as e.g. Node.js.\n * The default value is {DOMCMapReaderFactory}.\n * @property {boolean} stopAtErrors - (optional) Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} maxImageSize - (optional) The maximum allowed image size\n * in total pixels, i.e. width * height. Images above this value will not be\n * rendered. Use -1 for no limit, which is also the default value.\n * @property {boolean} isEvalSupported - (optional) Determines if we can eval\n * strings as JS. Primarily used to improve performance of font rendering,\n * and when parsing PDF functions. The default value is `true`.\n * @property {boolean} disableFontFace - (optional) By default fonts are\n * converted to OpenType fonts and loaded via font face rules. If disabled,\n * fonts will be rendered using a built-in font renderer that constructs the\n * glyphs with primitive path commands. The default value is `false`.\n * @property {boolean} disableRange - (optional) Disable range request loading\n * of PDF files. When enabled, and if the server supports partial content\n * requests, then the PDF will be fetched in chunks.\n * The default value is `false`.\n * @property {boolean} disableStream - (optional) Disable streaming of PDF file\n * data. By default PDF.js attempts to load PDFs in chunks.\n * The default value is `false`.\n * @property {boolean} disableAutoFetch - (optional) Disable pre-fetching of PDF\n * file data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n * NOTE: It is also necessary to disable streaming, see above,\n * in order for disabling of pre-fetching to work correctly.\n * @property {boolean} disableCreateObjectURL - (optional) Disable the use of\n * `URL.createObjectURL`, for compatibility with older browsers.\n * The default value is `false`.\n * @property {boolean} pdfBug - (optional) Enables special hooks for debugging\n * PDF.js (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * @typedef {Object} PDFDocumentStats\n * @property {Array} streamTypes - Used stream types in the document (an item\n * is set to true if specific stream ID was used in the document).\n * @property {Array} fontTypes - Used font type in the document (an item is set\n * to true if specific font ID was used in the document).\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)\n * is used, which means it must follow the same origin rules that any XHR does\n * e.g. No cross domain requests without CORS.\n *\n * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src\n * Can be a url to where a PDF is located, a typed array (Uint8Array)\n * already populated with data or parameter object.\n *\n * @return {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n var task = new PDFDocumentLoadingTask();\n\n var source;\n if (typeof src === 'string') {\n source = { url: src, };\n } else if (isArrayBuffer(src)) {\n source = { data: src, };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src, };\n } else {\n if (typeof src !== 'object') {\n throw new Error('Invalid parameter in getDocument, ' +\n 'need either Uint8Array, string or a parameter object');\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n 'Invalid parameter object: need either .data, .range or .url');\n }\n\n source = src;\n }\n\n let params = Object.create(null);\n var rangeTransport = null;\n let worker = null;\n\n for (var key in source) {\n if (key === 'url' && typeof window !== 'undefined') {\n // The full path is required in the 'url' field.\n params[key] = new URL(source[key], window.location).href;\n continue;\n } else if (key === 'range') {\n rangeTransport = source[key];\n continue;\n } else if (key === 'worker') {\n worker = source[key];\n continue;\n } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {\n // Converting string or array-like data to Uint8Array.\n var pdfBytes = source[key];\n if (typeof pdfBytes === 'string') {\n params[key] = stringToBytes(pdfBytes);\n } else if (typeof pdfBytes === 'object' && pdfBytes !== null &&\n !isNaN(pdfBytes.length)) {\n params[key] = new Uint8Array(pdfBytes);\n } else if (isArrayBuffer(pdfBytes)) {\n params[key] = new Uint8Array(pdfBytes);\n } else {\n throw new Error('Invalid PDF binary data: either typed array, ' +\n 'string or array-like object is expected in the ' +\n 'data property.');\n }\n continue;\n }\n params[key] = source[key];\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory = params.CMapReaderFactory || DOMCMapReaderFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.pdfBug = params.pdfBug === true;\n\n const NativeImageDecoderValues = Object.values(NativeImageDecoding);\n if (params.nativeImageDecoderSupport === undefined ||\n !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {\n params.nativeImageDecoderSupport =\n (apiCompatibilityParams.nativeImageDecoderSupport ||\n NativeImageDecoding.DECODE);\n }\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n if (typeof params.isEvalSupported !== 'boolean') {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== 'boolean') {\n params.disableFontFace = apiCompatibilityParams.disableFontFace || false;\n }\n\n if (typeof params.disableRange !== 'boolean') {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== 'boolean') {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== 'boolean') {\n params.disableAutoFetch = false;\n }\n if (typeof params.disableCreateObjectURL !== 'boolean') {\n params.disableCreateObjectURL =\n apiCompatibilityParams.disableCreateObjectURL || false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n postMessageTransfers: params.postMessageTransfers,\n verbosity: params.verbosity,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n let workerPort = GlobalWorkerOptions.workerPort;\n if (workerPort) {\n workerParams.port = workerPort;\n worker = PDFWorker.fromPort(workerParams);\n } else {\n worker = new PDFWorker(workerParams);\n }\n task._worker = worker;\n }\n var docId = task.docId;\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error('Loading aborted');\n }\n return _fetchDocument(worker, params, rangeTransport, docId).then(\n function (workerId) {\n if (task.destroyed) {\n throw new Error('Loading aborted');\n }\n\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream({\n length: params.length,\n initialData: params.initialData,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n }, rangeTransport);\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n\n var messageHandler = new MessageHandler(docId, workerId, worker.port);\n messageHandler.postMessageTransfers = worker.postMessageTransfers;\n var transport = new WorkerTransport(messageHandler, task, networkStream,\n params);\n task._transport = transport;\n messageHandler.send('Ready', null);\n });\n }).catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId Unique document id, used as MessageHandler id.\n * @returns {Promise} The promise, which is resolved when worker id of\n * MessageHandler is known.\n * @private\n */\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n }\n return worker.messageHandler.sendWithPromise('GetDocRequest', {\n docId,\n apiVersion: (typeof PDFJSDev !== 'undefined' ?\n PDFJSDev.eval('BUNDLE_VERSION') : null),\n source: { // Only send the required properties, and *not* the entire object.\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n disableCreateObjectURL: source.disableCreateObjectURL,\n postMessageTransfers: worker.postMessageTransfers,\n docBaseUrl: source.docBaseUrl,\n nativeImageDecoderSupport: source.nativeImageDecoderSupport,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n }).then(function (workerId) {\n if (worker.destroyed) {\n throw new Error('Worker was destroyed');\n }\n return workerId;\n });\n}\n\n/**\n * PDF document loading operation.\n * @class\n * @alias PDFDocumentLoadingTask\n */\nvar PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {\n var nextDocumentId = 0;\n\n /** @constructs PDFDocumentLoadingTask */\n function PDFDocumentLoadingTask() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique document loading task id -- used in MessageHandlers.\n * @type {string}\n */\n this.docId = 'd' + (nextDocumentId++);\n\n /**\n * Shows if loading task is destroyed.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if wrong or no password was provided.\n * The callback receives two parameters: function that needs to be called\n * with new password and reason (see {PasswordResponses}).\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar). The callback receives\n * an {Object} with the properties: {number} loaded and {number} total.\n */\n this.onProgress = null;\n\n /**\n * Callback to when unsupported feature is used. The callback receives\n * an {UNSUPPORTED_FEATURES} argument.\n */\n this.onUnsupportedFeature = null;\n }\n\n PDFDocumentLoadingTask.prototype =\n /** @lends PDFDocumentLoadingTask.prototype */ {\n /**\n * @return {Promise}\n */\n get promise() {\n return this._capability.promise;\n },\n\n /**\n * Aborts all network requests and destroys worker.\n * @return {Promise} A promise that is resolved after destruction activity\n * is completed.\n */\n destroy() {\n this.destroyed = true;\n\n var transportDestroyed = !this._transport ? Promise.resolve() :\n this._transport.destroy();\n return transportDestroyed.then(() => {\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n });\n },\n\n /**\n * Registers callbacks to indicate the document loading completion.\n *\n * @param {function} onFulfilled The callback for the loading completion.\n * @param {function} onRejected The callback for the loading failure.\n * @return {Promise} A promise that is resolved after the onFulfilled or\n * onRejected callback.\n */\n then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {\n return this.promise.then.apply(this.promise, arguments);\n },\n };\n\n return PDFDocumentLoadingTask;\n})();\n\n/**\n * Abstract class to support range requests file loading.\n * @param {number} length\n * @param {Uint8Array} initialData\n */\nclass PDFDataRangeTransport {\n constructor(length, initialData) {\n this.length = length;\n this.initialData = initialData;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable('Abstract method PDFDataRangeTransport.requestDataRange');\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a PDFDocument in the worker thread. Also, contains commonly used\n * properties that can be read synchronously.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport, loadingTask) {\n this.loadingTask = loadingTask;\n\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n\n /**\n * @return {number} Total number of pages the PDF contains.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @return {string} A (not guaranteed to be) unique ID to identify a PDF.\n */\n get fingerprint() {\n return this._pdfInfo.fingerprint;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @return {Promise} A promise that is resolved with a {@link PDFPageProxy}\n * object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {{num: number, gen: number}} ref - The page reference. Must have\n * the `num` and `gen` properties.\n * @return {Promise} A promise that is resolved with the page index that is\n * associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @return {Promise} A promise that is resolved with a lookup table for\n * mapping named destinations to reference numbers.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @return {Promise} A promise that is resolved with all information\n * of the given named destination.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @return {Promise} A promise that is resolved with an {Array} containing\n * the page labels that correspond to the page indexes, or `null` when\n * no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @return {Promise} A promise that is resolved with a {string} containing\n * the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @return {Promise} A promise that is resolved with a lookup table for\n * mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @return {Promise} A promise that is resolved with an {Array} of all the\n * JavaScript strings in the name tree, or `null` if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @return {Promise} A promise that is resolved with an {Array} that is a\n * tree outline (if it has one) of the PDF. The tree is in the format of:\n * [\n * {\n * title: string,\n * bold: boolean,\n * italic: boolean,\n * color: rgb Uint8ClampedArray,\n * dest: dest obj,\n * url: string,\n * items: array of more items like this\n * },\n * ...\n * ]\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @return {Promise} A promise that is resolved with an {Array} that contains\n * the permission flags for the PDF document, or `null` when\n * no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @return {Promise} A promise that is resolved with an {Object} that has\n * `info` and `metadata` properties. `info` is an {Object} filled with\n * anything available in the information dictionary and similarly\n * `metadata` is a {Metadata} object with information from the metadata\n * section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @return {Promise} A promise that is resolved with a {TypedArray} that has\n * the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @return {Promise} A promise that is resolved when the document's data\n * is loaded. It is resolved with an {Object} that contains the `length`\n * property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * @return {Promise} A promise this is resolved with current statistics about\n * document structures (see {@link PDFDocumentStats}).\n */\n getStats() {\n return this._transport.getStats();\n }\n\n /**\n * Cleans up resources allocated by the document, e.g. created `@font-face`.\n */\n cleanup() {\n this._transport.startCleanup();\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @return {Object} A subset of the current {DocumentInitParameters},\n * which are either needed in the viewer and/or whose default values\n * may be affected by the `apiCompatibilityParams`.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n}\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} normalizeWhitespace - replaces all occurrences of\n * whitespace with standard spaces (0x20). The default value is `false`.\n * @property {boolean} disableCombineTextItems - do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {array} items - array of {@link TextItem}\n * @property {Object} styles - {@link TextStyles} objects, indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - text content.\n * @property {string} dir - text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {array} transform - transformation matrix.\n * @property {number} width - width in device space.\n * @property {number} height - height in device space.\n * @property {string} fontName - font name used by pdf.js for converted font.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - font ascent.\n * @property {number} descent - font descent.\n * @property {boolean} vertical - text is in vertical mode.\n * @property {string} fontFamily - possible font family\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} intent - Determines the annotations that will be fetched,\n * can be either 'display' (viewable annotations) or 'print'\n * (printable annotations).\n * If the parameter is omitted, all annotations are fetched.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by\n * calling of PDFPage.getViewport method.\n * @property {string} intent - Rendering intent, can be 'display' or 'print'\n * (default value is 'display').\n * @property {boolean} enableWebGL - (optional) Enables WebGL accelerated\n * rendering for some operations. The default value is `false`.\n * @property {boolean} renderInteractiveForms - (optional) Whether or not\n * interactive form elements are rendered in the display\n * layer. If so, we do not render them on canvas as well.\n * @property {Array} transform - (optional) Additional transform, applied\n * just before viewport transform.\n * @property {Object} imageLayer - (optional) An object that has beginLayout,\n * endLayout and appendImage functions.\n * @property {Object} canvasFactory - (optional) The factory that will be used\n * when creating canvases. The default value is\n * {DOMCanvasFactory}.\n * @property {Object} background - (optional) Background to use for the canvas.\n * Can use any valid canvas.fillStyle: A DOMString parsed as\n * CSS <color> value, a CanvasGradient object (a linear or\n * radial gradient) or a CanvasPattern object (a repetitive\n * image). The default value is 'rgb(255,255,255)'.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a PDFPage in the worker thread.\n * @class\n * @alias PDFPageProxy\n */\nvar PDFPageProxy = (function PDFPageProxyClosure() {\n function PDFPageProxy(pageIndex, pageInfo, transport, pdfBug = false) {\n this.pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this.transport = transport;\n this._stats = (pdfBug ? new StatTimer() : DummyStatTimer);\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this.intentStates = Object.create(null);\n this.destroyed = false;\n }\n PDFPageProxy.prototype = /** @lends PDFPageProxy.prototype */ {\n /**\n * @return {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this.pageIndex + 1;\n },\n /**\n * @return {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n },\n /**\n * @return {Object} The reference that points to this page. It has 'num' and\n * 'gen' properties.\n */\n get ref() {\n return this._pageInfo.ref;\n },\n /**\n * @return {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n },\n /**\n * @return {Array} An array of the visible portion of the PDF page in the\n * user space units - [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n },\n\n /**\n * @param {number} scale The desired scale of the viewport.\n * @param {number} rotate Degrees to rotate the viewport. If omitted this\n * defaults to the page rotation.\n * @param {boolean} dontFlip (optional) If true, axis Y will not be flipped.\n * @return {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport(scale, rotate = this.rotate, dontFlip = false) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation: rotate,\n dontFlip,\n });\n },\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @return {Promise} A promise that is resolved with an {Array} of the\n * annotation objects.\n */\n getAnnotations: function PDFPageProxy_getAnnotations(params) {\n var intent = (params && params.intent) || null;\n\n if (!this.annotationsPromise || this.annotationsIntent !== intent) {\n this.annotationsPromise = this.transport.getAnnotations(this.pageIndex,\n intent);\n this.annotationsIntent = intent;\n }\n return this.annotationsPromise;\n },\n /**\n * Begins the process of rendering a page to the desired context.\n * @param {RenderParameters} params Page render parameters.\n * @return {RenderTask} An object that contains the promise, which\n * is resolved when the page finishes rendering.\n */\n render: function PDFPageProxy_render(params) {\n let stats = this._stats;\n stats.time('Overall');\n\n // If there was a pending destroy cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n var renderingIntent = (params.intent === 'print' ? 'print' : 'display');\n var canvasFactory = params.canvasFactory || new DOMCanvasFactory();\n let webGLContext = new WebGLContext({\n enable: params.enableWebGL,\n });\n\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n var intentState = this.intentStates[renderingIntent];\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.receivingOperatorList = true;\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n stats.time('Page Request');\n this.transport.messageHandler.send('RenderPageRequest', {\n pageIndex: this.pageNumber - 1,\n intent: renderingIntent,\n renderInteractiveForms: (params.renderInteractiveForms === true),\n });\n }\n\n var complete = (error) => {\n var i = intentState.renderTasks.indexOf(internalRenderTask);\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n\n if (this.cleanupAfterRender) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n } else {\n internalRenderTask.capability.resolve();\n }\n stats.timeEnd('Rendering');\n stats.timeEnd('Overall');\n };\n\n var internalRenderTask = new InternalRenderTask(complete, params,\n this.objs,\n this.commonObjs,\n intentState.operatorList,\n this.pageNumber,\n canvasFactory,\n webGLContext,\n this._pdfBug);\n internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';\n if (!intentState.renderTasks) {\n intentState.renderTasks = [];\n }\n intentState.renderTasks.push(internalRenderTask);\n var renderTask = internalRenderTask.task;\n\n intentState.displayReadyCapability.promise.then((transparency) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n stats.time('Rendering');\n internalRenderTask.initializeGraphics(transparency);\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n\n return renderTask;\n },\n\n /**\n * @return {Promise} A promise resolved with an {@link PDFOperatorList}\n * object that represents page's operator list.\n */\n getOperatorList: function PDFPageProxy_getOperatorList() {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n var i = intentState.renderTasks.indexOf(opListTask);\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n }\n }\n\n var renderingIntent = 'oplist';\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n var intentState = this.intentStates[renderingIntent];\n var opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = {};\n opListTask.operatorListChanged = operatorListChanged;\n intentState.receivingOperatorList = true;\n intentState.opListReadCapability = createPromiseCapability();\n intentState.renderTasks = [];\n intentState.renderTasks.push(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n this._stats.time('Page Request');\n this.transport.messageHandler.send('RenderPageRequest', {\n pageIndex: this.pageIndex,\n intent: renderingIntent,\n });\n }\n return intentState.opListReadCapability.promise;\n },\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @return {ReadableStream} ReadableStream to read textContent chunks.\n */\n streamTextContent(params = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this.transport.messageHandler.sendWithStream('GetTextContent', {\n pageIndex: this.pageNumber - 1,\n normalizeWhitespace: (params.normalizeWhitespace === true),\n combineTextItems: (params.disableCombineTextItems !== true),\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n });\n },\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @return {Promise} That is resolved a {@link TextContent}\n * object that represent the page text content.\n */\n getTextContent: function PDFPageProxy_getTextContent(params) {\n params = params || {};\n let readableStream = this.streamTextContent(params);\n\n return new Promise(function(resolve, reject) {\n function pump() {\n reader.read().then(function({ value, done, }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n let reader = readableStream.getReader();\n let textContent = {\n items: [],\n styles: Object.create(null),\n };\n\n pump();\n });\n },\n\n /**\n * Destroys page object.\n */\n _destroy: function PDFPageProxy_destroy() {\n this.destroyed = true;\n this.transport.pageCache[this.pageIndex] = null;\n\n var waitOn = [];\n Object.keys(this.intentStates).forEach(function(intent) {\n if (intent === 'oplist') {\n // Avoid errors below, since the renderTasks are just stubs.\n return;\n }\n var intentState = this.intentStates[intent];\n intentState.renderTasks.forEach(function(renderTask) {\n var renderCompleted = renderTask.capability.promise.\n catch(function () {}); // ignoring failures\n waitOn.push(renderCompleted);\n renderTask.cancel();\n });\n }, this);\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n },\n\n /**\n * Cleans up resources allocated by the page.\n * @param {boolean} resetStats - (optional) Reset page stats, if enabled.\n * The default value is `false`.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n this._tryCleanup(resetStats);\n },\n /**\n * For internal use only. Attempts to clean up if rendering is in a state\n * where that's possible.\n * @ignore\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup ||\n Object.keys(this.intentStates).some(function(intent) {\n var intentState = this.intentStates[intent];\n return (intentState.renderTasks.length !== 0 ||\n intentState.receivingOperatorList);\n }, this)) {\n return;\n }\n\n Object.keys(this.intentStates).forEach(function(intent) {\n delete this.intentStates[intent];\n }, this);\n this.objs.clear();\n this.annotationsPromise = null;\n if (resetStats && this._stats instanceof StatTimer) {\n this._stats = new StatTimer();\n }\n this.pendingCleanup = false;\n },\n /**\n * For internal use only.\n * @ignore\n */\n _startRenderPage: function PDFPageProxy_startRenderPage(transparency,\n intent) {\n var intentState = this.intentStates[intent];\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n },\n /**\n * For internal use only.\n * @ignore\n */\n _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk,\n intent) {\n var intentState = this.intentStates[intent];\n var i, ii;\n // Add the new chunk to the current operator list.\n for (i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(\n operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n intentState.receivingOperatorList = false;\n this._tryCleanup();\n }\n },\n\n /**\n * @return {Object} Returns page stats, if enabled.\n */\n get stats() {\n return (this._stats instanceof StatTimer ? this._stats : null);\n },\n };\n return PDFPageProxy;\n})();\n\nclass LoopbackPort {\n constructor(defer = true) {\n this._listeners = [];\n this._defer = defer;\n this._deferred = Promise.resolve(undefined);\n }\n\n postMessage(obj, transfers) {\n function cloneValue(value) {\n // Trying to perform a structured clone close to the spec, including\n // transfers.\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n if (cloned.has(value)) { // already cloned the object\n return cloned.get(value);\n }\n var result;\n var buffer;\n if ((buffer = value.buffer) && isArrayBuffer(buffer)) {\n // We found object with ArrayBuffer (typed array).\n var transferable = transfers && transfers.includes(buffer);\n if (value === buffer) {\n // Special case when we are faking typed arrays in compatibility.js.\n result = value;\n } else if (transferable) {\n result = new value.constructor(buffer, value.byteOffset,\n value.byteLength);\n } else {\n result = new value.constructor(value);\n }\n cloned.set(value, result);\n return result;\n }\n result = Array.isArray(value) ? [] : {};\n cloned.set(value, result); // adding to cache now for cyclic references\n // Cloning all value and object properties, however ignoring properties\n // defined via getter.\n for (var i in value) {\n var desc, p = value;\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n if (typeof desc.value === 'undefined' ||\n typeof desc.value === 'function') {\n continue;\n }\n result[i] = cloneValue(desc.value);\n }\n return result;\n }\n\n if (!this._defer) {\n this._listeners.forEach(function (listener) {\n listener.call(this, { data: obj, });\n }, this);\n return;\n }\n\n var cloned = new WeakMap();\n var e = { data: cloneValue(obj), };\n this._deferred.then(() => {\n this._listeners.forEach(function (listener) {\n listener.call(this, e);\n }, this);\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n var i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners = [];\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} name - (optional) The name of the worker.\n * @property {Object} port - (optional) The `workerPort`.\n * @property {boolean} postMessageTransfers - (optional) Enables transfer usage\n * in postMessage for ArrayBuffers. The default value is `true`.\n * @property {number} verbosity - (optional) Controls the logging level; the\n * constants from {VerbosityLevel} should be used.\n */\n\n/**\n * PDF.js web worker abstraction, it controls instantiation of PDF documents and\n * WorkerTransport for them. If creation of a web worker is not possible,\n * a \"fake\" worker will be used instead.\n * @class\n */\nvar PDFWorker = (function PDFWorkerClosure() {\n let nextFakeWorkerId = 0;\n\n function getWorkerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (typeof fallbackWorkerSrc !== 'undefined') {\n return fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n function getMainThreadWorkerMessageHandler() {\n try {\n if (typeof window !== 'undefined') {\n return (window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler);\n }\n } catch (ex) { }\n return null;\n }\n\n let fakeWorkerFilesLoadedCapability;\n\n // Loads worker code into main thread.\n function setupFakeWorkerGlobal() {\n if (fakeWorkerFilesLoadedCapability) {\n return fakeWorkerFilesLoadedCapability.promise;\n }\n fakeWorkerFilesLoadedCapability = createPromiseCapability();\n\n let mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using a `<script>` tag.\n fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);\n return fakeWorkerFilesLoadedCapability.promise;\n }\n // In the developer build load worker_loader.js which in turn loads all the\n // other files and resolves the promise. In production only the\n // pdf.worker.js file is needed.\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {\n if (typeof SystemJS === 'object') {\n SystemJS.import('pdfjs/core/worker').then((worker) => {\n fakeWorkerFilesLoadedCapability.resolve(worker.WorkerMessageHandler);\n }).catch(fakeWorkerFilesLoadedCapability.reject);\n } else if (typeof require === 'function') {\n try {\n let worker = require('../core/worker.js');\n fakeWorkerFilesLoadedCapability.resolve(worker.WorkerMessageHandler);\n } catch (ex) {\n fakeWorkerFilesLoadedCapability.reject(ex);\n }\n } else {\n fakeWorkerFilesLoadedCapability.reject(new Error(\n 'SystemJS or CommonJS must be used to load fake worker.'));\n }\n } else {\n const loader = fakeWorkerFilesLoader || function() {\n return loadScript(getWorkerSrc()).then(function() {\n return window.pdfjsWorker.WorkerMessageHandler;\n });\n };\n loader().then(fakeWorkerFilesLoadedCapability.resolve,\n fakeWorkerFilesLoadedCapability.reject);\n }\n return fakeWorkerFilesLoadedCapability.promise;\n }\n\n function createCDNWrapper(url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n var wrapper = 'importScripts(\\'' + url + '\\');';\n return URL.createObjectURL(new Blob([wrapper]));\n }\n\n let pdfWorkerPorts = new WeakMap();\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n function PDFWorker({ name = null, port = null,\n postMessageTransfers = true,\n verbosity = getVerbosityLevel(), } = {}) {\n if (port && pdfWorkerPorts.has(port)) {\n throw new Error('Cannot use more than one PDFWorker per port');\n }\n\n this.name = name;\n this.destroyed = false;\n this.postMessageTransfers = postMessageTransfers !== false;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n pdfWorkerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n\n this._initialize();\n }\n\n PDFWorker.prototype = /** @lends PDFWorker.prototype */ {\n get promise() {\n return this._readyCapability.promise;\n },\n\n get port() {\n return this._port;\n },\n\n get messageHandler() {\n return this._messageHandler;\n },\n\n _initializeFromPort: function PDFWorker_initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler('main', 'worker', port);\n this._messageHandler.on('ready', function () {\n // Ignoring 'ready' event -- MessageHandler shall be already initialized\n // and ready to accept the messages.\n });\n this._readyCapability.resolve();\n },\n\n _initialize: function PDFWorker_initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (typeof Worker !== 'undefined' && !isWorkerDisabled &&\n !getMainThreadWorkerMessageHandler()) {\n let workerSrc = getWorkerSrc();\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('GENERIC') &&\n !isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = createCDNWrapper(\n new URL(workerSrc, window.location).href);\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n var worker = new Worker(workerSrc);\n var messageHandler = new MessageHandler('main', 'worker', worker);\n var terminateEarly = () => {\n worker.removeEventListener('error', onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error('Worker was destroyed'));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n var onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener('error', onWorkerError);\n\n messageHandler.on('test', (data) => {\n worker.removeEventListener('error', onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data && data.supportTypedArray) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n if (!data.supportTransfers) {\n this.postMessageTransfers = false;\n }\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send('configure', {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on('ready', (data) => {\n worker.removeEventListener('error', onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n let testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);\n // Some versions of Opera throw a DATA_CLONE_ERR on serializing the\n // typed array. Also, checking if we can use transfers.\n try {\n messageHandler.send('test', testObj, [testObj.buffer]);\n } catch (ex) {\n info('Cannot use postMessage transfers');\n testObj[0] = 0;\n messageHandler.send('test', testObj);\n }\n };\n\n // It might take time for worker to initialize (especially when AMD\n // loader is used). We will try to send test immediately, and then\n // when 'ready' message will arrive. The worker shall process only\n // first received 'test'.\n sendTest();\n return;\n } catch (e) {\n info('The worker has been disabled.');\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n },\n\n _setupFakeWorker: function PDFWorker_setupFakeWorker() {\n if (!isWorkerDisabled) {\n warn('Setting up fake worker.');\n isWorkerDisabled = true;\n }\n\n setupFakeWorkerGlobal().then((WorkerMessageHandler) => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error('Worker was destroyed'));\n return;\n }\n let port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n var id = 'fake' + (nextFakeWorkerId++);\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n var workerHandler = new MessageHandler(id + '_worker', id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n var messageHandler = new MessageHandler(id, id + '_worker', port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n }).catch((reason) => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n },\n\n /**\n * Destroys the worker instance.\n */\n destroy: function PDFWorker_destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n pdfWorkerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n },\n };\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n PDFWorker.fromPort = function(params) {\n if (!params || !params.port) {\n throw new Error('PDFWorker.fromPort - invalid method signature.');\n }\n if (pdfWorkerPorts.has(params.port)) {\n return pdfWorkerPorts.get(params.port);\n }\n return new PDFWorker(params);\n };\n\n PDFWorker.getWorkerSrc = function() {\n return getWorkerSrc();\n };\n\n return PDFWorker;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader(loadingTask.docId);\n this._params = params;\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked,\n });\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n\n this.pageCache = [];\n this.pagePromises = [];\n this.downloadInfoCapability = createPromiseCapability();\n\n this.setupMessageHandler();\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = createPromiseCapability();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(\n new Error('Worker was destroyed during onPassword callback'));\n }\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n this.pageCache.forEach(function(page) {\n if (page) {\n waitOn.push(page._destroy());\n }\n });\n this.pageCache = [];\n this.pagePromises = [];\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise('Terminate', null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.fontLoader.clear();\n if (this._networkStream) {\n this._networkStream.cancelAllRequests();\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const { messageHandler, loadingTask, } = this;\n\n messageHandler.on('GetReader', function(data, sink) {\n assert(this._networkStream);\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = (evt) => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function({ value, done, }) {\n if (done) {\n sink.close();\n return;\n }\n assert(isArrayBuffer(value));\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch((reason) => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = (reason) => {\n this._fullReader.cancel(reason);\n };\n }, this);\n\n messageHandler.on('ReaderHeadersReady', function(data) {\n const headersCapability = createPromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress && loadingTask.onProgress) {\n loadingTask.onProgress(this._lastProgress);\n }\n fullReader.onProgress = (evt) => {\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: evt.loaded,\n total: evt.total,\n });\n }\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n }, this);\n\n messageHandler.on('GetRangeReader', function(data, sink) {\n assert(this._networkStream);\n const rangeReader =\n this._networkStream.getRangeReader(data.begin, data.end);\n\n sink.onPull = () => {\n rangeReader.read().then(function({ value, done, }) {\n if (done) {\n sink.close();\n return;\n }\n assert(isArrayBuffer(value));\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch((reason) => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = (reason) => {\n rangeReader.cancel(reason);\n };\n }, this);\n\n messageHandler.on('GetDoc', function({ pdfInfo, }) {\n this.numPages = pdfInfo.numPages;\n this.pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);\n loadingTask._capability.resolve(this.pdfDocument);\n }, this);\n\n messageHandler.on('PasswordRequest', function(exception) {\n this._passwordCapability = createPromiseCapability();\n\n if (loadingTask.onPassword) {\n const updatePassword = (password) => {\n this._passwordCapability.resolve({\n password,\n });\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(\n new PasswordException(exception.message, exception.code));\n }\n return this._passwordCapability.promise;\n }, this);\n\n messageHandler.on('PasswordException', function(exception) {\n loadingTask._capability.reject(\n new PasswordException(exception.message, exception.code));\n }, this);\n\n messageHandler.on('InvalidPDF', function(exception) {\n loadingTask._capability.reject(\n new InvalidPDFException(exception.message));\n }, this);\n\n messageHandler.on('MissingPDF', function(exception) {\n loadingTask._capability.reject(\n new MissingPDFException(exception.message));\n }, this);\n\n messageHandler.on('UnexpectedResponse', function(exception) {\n loadingTask._capability.reject(\n new UnexpectedResponseException(exception.message, exception.status));\n }, this);\n\n messageHandler.on('UnknownError', function(exception) {\n loadingTask._capability.reject(\n new UnknownErrorException(exception.message, exception.details));\n }, this);\n\n messageHandler.on('DataLoaded', function(data) {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.length,\n total: data.length,\n });\n }\n this.downloadInfoCapability.resolve(data);\n }, this);\n\n messageHandler.on('StartRenderPage', function(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.pageCache[data.pageIndex];\n page._stats.timeEnd('Page Request');\n page._startRenderPage(data.transparency, data.intent);\n }, this);\n\n messageHandler.on('RenderPageChunk', function(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.pageCache[data.pageIndex];\n page._renderPageChunk(data.operatorList, data.intent);\n }, this);\n\n messageHandler.on('commonobj', function(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const [id, type, exportedData] = data;\n if (this.commonObjs.hasData(id)) {\n return;\n }\n\n switch (type) {\n case 'Font':\n const params = this._params;\n\n if ('error' in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n if (params.pdfBug && globalScope.FontInspector &&\n globalScope.FontInspector.enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalScope['FontInspector'].fontAdded(font, url);\n },\n };\n }\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry,\n });\n const fontReady = (fontObjs) => {\n this.commonObjs.resolve(id, font);\n };\n\n this.fontLoader.bind([font], fontReady);\n break;\n case 'FontPath':\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n }, this);\n\n messageHandler.on('obj', function(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const [id, pageIndex, type, imageData] = data;\n const pageProxy = this.pageCache[pageIndex];\n if (pageProxy.objs.hasData(id)) {\n return;\n }\n\n switch (type) {\n case 'JpegStream':\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = function() {\n resolve(img);\n };\n img.onerror = function() {\n reject(new Error('Error during JPEG image loading'));\n // Note that when the browser image loading/decoding fails,\n // we'll fallback to the built-in PDF.js JPEG decoder; see\n // `PartialEvaluator.buildPaintImageXObject` in the\n // `src/core/evaluator.js` file.\n };\n img.src = imageData;\n }).then((img) => {\n pageProxy.objs.resolve(id, img);\n });\n case 'Image':\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n if (imageData && 'data' in imageData &&\n imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n }, this);\n\n messageHandler.on('DocProgress', function(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.loaded,\n total: data.total,\n });\n }\n }, this);\n\n messageHandler.on('PageError', function(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.pageCache[data.pageNum - 1];\n const intentState = page.intentStates[data.intent];\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(data.error);\n } else {\n throw new Error(data.error);\n }\n\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n for (let i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n }\n }, this);\n\n messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);\n\n messageHandler.on('JpegDecode', function(data) {\n if (this.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n\n if (typeof document === 'undefined') {\n // Make sure that this code is not executing in node.js, as\n // it's using DOM image, and there is no library to support that.\n return Promise.reject(new Error('\"document\" is not defined.'));\n }\n\n const [imageUrl, components] = data;\n if (components !== 3 && components !== 1) {\n return Promise.reject(\n new Error('Only 3 components or 1 component can be returned'));\n }\n\n return new Promise(function (resolve, reject) {\n const img = new Image();\n img.onload = function () {\n const width = img.width;\n const height = img.height;\n const size = width * height;\n const rgbaLength = size * 4;\n const buf = new Uint8ClampedArray(size * components);\n const tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n const tmpCtx = tmpCanvas.getContext('2d');\n tmpCtx.drawImage(img, 0, 0);\n const data = tmpCtx.getImageData(0, 0, width, height).data;\n\n if (components === 3) {\n for (let i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {\n buf[j] = data[i];\n buf[j + 1] = data[i + 1];\n buf[j + 2] = data[i + 2];\n }\n } else if (components === 1) {\n for (let i = 0, j = 0; i < rgbaLength; i += 4, j++) {\n buf[j] = data[i];\n }\n }\n resolve({ data: buf, width, height, });\n };\n img.onerror = function () {\n reject(new Error('JpegDecode failed to load image'));\n };\n img.src = imageUrl;\n });\n }, this);\n\n messageHandler.on('FetchBuiltInCMap', function(data) {\n if (this.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n return this.CMapReaderFactory.fetch({\n name: data.name,\n });\n }, this);\n }\n\n _onUnsupportedFeature({ featureId, }) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (this.loadingTask.onUnsupportedFeature) {\n this.loadingTask.onUnsupportedFeature(featureId);\n }\n }\n\n getData() {\n return this.messageHandler.sendWithPromise('GetData', null);\n }\n\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) ||\n pageNumber <= 0 || pageNumber > this.numPages) {\n return Promise.reject(new Error('Invalid page request'));\n }\n\n const pageIndex = pageNumber - 1;\n if (pageIndex in this.pagePromises) {\n return this.pagePromises[pageIndex];\n }\n const promise = this.messageHandler.sendWithPromise('GetPage', {\n pageIndex,\n }).then((pageInfo) => {\n if (this.destroyed) {\n throw new Error('Transport destroyed');\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this,\n this._params.pdfBug);\n this.pageCache[pageIndex] = page;\n return page;\n });\n this.pagePromises[pageIndex] = promise;\n return promise;\n }\n\n getPageIndex(ref) {\n return this.messageHandler.sendWithPromise('GetPageIndex', {\n ref,\n }).catch(function(reason) {\n return Promise.reject(new Error(reason));\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise('GetAnnotations', {\n pageIndex,\n intent,\n });\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise('GetDestinations', null);\n }\n\n getDestination(id) {\n if (typeof id !== 'string') {\n return Promise.reject(new Error('Invalid destination request.'));\n }\n return this.messageHandler.sendWithPromise('GetDestination', {\n id,\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise('GetPageLabels', null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise('GetPageMode', null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise('GetAttachments', null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise('GetJavaScript', null);\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise('GetOutline', null);\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise('GetPermissions', null);\n }\n\n getMetadata() {\n return this.messageHandler.sendWithPromise('GetMetadata', null).\n then((results) => {\n return {\n info: results[0],\n metadata: (results[1] ? new Metadata(results[1]) : null),\n contentDispositionFilename: (this._fullReader ?\n this._fullReader.filename : null),\n };\n });\n }\n\n getStats() {\n return this.messageHandler.sendWithPromise('GetStats', null);\n }\n\n startCleanup() {\n this.messageHandler.sendWithPromise('Cleanup', null).then(() => {\n for (let i = 0, ii = this.pageCache.length; i < ii; i++) {\n const page = this.pageCache[i];\n if (page) {\n page.cleanup();\n }\n }\n this.commonObjs.clear();\n this.fontLoader.clear();\n });\n }\n\n get loadingParams() {\n const params = this._params;\n return shadow(this, 'loadingParams', {\n disableAutoFetch: params.disableAutoFetch,\n disableCreateObjectURL: params.disableCreateObjectURL,\n disableFontFace: params.disableFontFace,\n nativeImageDecoderSupport: params.nativeImageDecoderSupport,\n });\n }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects\n * for fonts, images, rendering code and such. These objects might get processed\n * inside of a worker. The `PDFObjects` implements some basic functions to\n * manage these objects.\n * @ignore\n */\nvar PDFObjects = (function PDFObjectsClosure() {\n function PDFObjects() {\n this.objs = Object.create(null);\n }\n\n PDFObjects.prototype = {\n /**\n * Internal function.\n * Ensures there is an object defined for `objId`.\n */\n ensureObj: function PDFObjects_ensureObj(objId) {\n if (this.objs[objId]) {\n return this.objs[objId];\n }\n\n var obj = {\n capability: createPromiseCapability(),\n data: null,\n resolved: false,\n };\n this.objs[objId] = obj;\n\n return obj;\n },\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this function throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this\n * function and the object is already resolved, the callback gets called\n * right away.\n */\n get: function PDFObjects_get(objId, callback) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now\n if (callback) {\n this.ensureObj(objId).capability.promise.then(callback);\n return null;\n }\n\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n var obj = this.objs[objId];\n\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj || !obj.resolved) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}`);\n }\n\n return obj.data;\n },\n\n /**\n * Resolves the object `objId` with optional `data`.\n */\n resolve: function PDFObjects_resolve(objId, data) {\n var obj = this.ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n },\n\n isResolved: function PDFObjects_isResolved(objId) {\n var objs = this.objs;\n\n if (!objs[objId]) {\n return false;\n }\n return objs[objId].resolved;\n },\n\n hasData: function PDFObjects_hasData(objId) {\n return this.isResolved(objId);\n },\n\n /**\n * Returns the data of `objId` if object exists, null otherwise.\n */\n getData: function PDFObjects_getData(objId) {\n var objs = this.objs;\n if (!objs[objId] || !objs[objId].resolved) {\n return null;\n }\n return objs[objId].data;\n },\n\n clear: function PDFObjects_clear() {\n this.objs = Object.create(null);\n },\n };\n return PDFObjects;\n})();\n\n/**\n * Allows controlling of the rendering tasks.\n * @class\n * @alias RenderTask\n */\nvar RenderTask = (function RenderTaskClosure() {\n function RenderTask(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n RenderTask.prototype = /** @lends RenderTask.prototype */ {\n /**\n * Promise for rendering task completion.\n * @return {Promise}\n */\n get promise() {\n return this._internalRenderTask.capability.promise;\n },\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n */\n cancel: function RenderTask_cancel() {\n this._internalRenderTask.cancel();\n },\n\n /**\n * Registers callbacks to indicate the rendering task completion.\n *\n * @param {function} onFulfilled The callback for the rendering completion.\n * @param {function} onRejected The callback for the rendering failure.\n * @return {Promise} A promise that is resolved after the onFulfilled or\n * onRejected callback.\n */\n then: function RenderTask_then(onFulfilled, onRejected) {\n return this.promise.then.apply(this.promise, arguments);\n },\n };\n\n return RenderTask;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nvar InternalRenderTask = (function InternalRenderTaskClosure() {\n let canvasInRendering = new WeakMap();\n\n function InternalRenderTask(callback, params, objs, commonObjs, operatorList,\n pageNumber, canvasFactory, webGLContext,\n pdfBug = false) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this.pageNumber = pageNumber;\n this.canvasFactory = canvasFactory;\n this.webGLContext = webGLContext;\n this._pdfBug = pdfBug;\n\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this.useRequestAnimationFrame = false;\n this.cancelled = false;\n this.capability = createPromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n InternalRenderTask.prototype = {\n\n initializeGraphics(transparency) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (canvasInRendering.has(this._canvas)) {\n throw new Error(\n 'Cannot use the same canvas during multiple render() operations. ' +\n 'Use different canvas or ensure previous operations were ' +\n 'cancelled or completed.');\n }\n canvasInRendering.set(this._canvas, this);\n }\n\n if (this._pdfBug && globalScope.StepperManager &&\n globalScope.StepperManager.enabled) {\n this.stepper = globalScope.StepperManager.create(this.pageNumber - 1);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n\n var params = this.params;\n this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs,\n this.objs, this.canvasFactory,\n this.webGLContext, params.imageLayer);\n\n this.gfx.beginDrawing({\n transform: params.transform,\n viewport: params.viewport,\n transparency,\n background: params.background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n },\n\n cancel: function InternalRenderTask_cancel() {\n this.running = false;\n this.cancelled = true;\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n this.callback(new RenderingCancelledException(\n 'Rendering cancelled, page ' + this.pageNumber, 'canvas'));\n },\n\n operatorListChanged: function InternalRenderTask_operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n this._continue();\n },\n\n _continue: function InternalRenderTask__continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n },\n\n _scheduleNext: function InternalRenderTask__scheduleNext() {\n if (this.useRequestAnimationFrame && typeof window !== 'undefined') {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this.callback);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this.callback);\n }\n },\n\n _next: function InternalRenderTask__next() {\n return new Promise(() => {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n this.callback();\n }\n }\n });\n },\n\n };\n\n return InternalRenderTask;\n})();\n\nvar version, build;\nif (typeof PDFJSDev !== 'undefined') {\n version = PDFJSDev.eval('BUNDLE_VERSION');\n build = PDFJSDev.eval('BUNDLE_BUILD');\n}\n\nexport {\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n PDFDocumentProxy,\n PDFPageProxy,\n setPDFNetworkStreamFactory,\n version,\n build,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert, CMapCompressionType, removeNullCharacters, stringToBytes,\n unreachable, Util, warn\n} from '../shared/util';\n\nconst DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\nconst SVG_NS = 'http://www.w3.org/2000/svg';\n\nclass DOMCanvasFactory {\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error('invalid canvas size');\n }\n let canvas = document.createElement('canvas');\n let context = canvas.getContext('2d');\n canvas.width = width;\n canvas.height = height;\n return {\n canvas,\n context,\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error('canvas is not specified');\n }\n if (width <= 0 || height <= 0) {\n throw new Error('invalid canvas size');\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error('canvas is not specified');\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n}\n\nclass DOMCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false, }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n fetch({ name, }) {\n if (!this.baseUrl) {\n return Promise.reject(new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'));\n }\n if (!name) {\n return Promise.reject(new Error('CMap name must be specified.'));\n }\n return new Promise((resolve, reject) => {\n let url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');\n\n let request = new XMLHttpRequest();\n request.open('GET', url, true);\n\n if (this.isCompressed) {\n request.responseType = 'arraybuffer';\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (this.isCompressed && request.response) {\n data = new Uint8Array(request.response);\n } else if (!this.isCompressed && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve({\n cMapData: data,\n compressionType: this.isCompressed ?\n CMapCompressionType.BINARY : CMapCompressionType.NONE,\n });\n return;\n }\n }\n reject(new Error('Unable to load ' +\n (this.isCompressed ? 'binary ' : '') +\n 'CMap at: ' + url));\n };\n\n request.send(null);\n });\n }\n}\n\nclass DOMSVGFactory {\n create(width, height) {\n assert(width > 0 && height > 0, 'Invalid SVG dimensions');\n\n let svg = document.createElementNS(SVG_NS, 'svg:svg');\n svg.setAttribute('version', '1.1');\n svg.setAttribute('width', width + 'px');\n svg.setAttribute('height', height + 'px');\n svg.setAttribute('preserveAspectRatio', 'none');\n svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);\n\n return svg;\n }\n\n createElement(type) {\n assert(typeof type === 'string', 'Invalid SVG element type');\n\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array} viewBox - The xMin, yMin, xMax and yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} offsetX - (optional) The vertical, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} offsetY - (optional) The horizontal, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} dontFlip - (optional) If true, the x-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} scale - (optional) The scale, overriding the one in the\n * cloned viewport. The default value is `this.scale`.\n * @property {number} rotation - (optional) The rotation, in degrees, overriding\n * the one in the cloned viewport. The default value is `this.rotation`.\n * @property {boolean} dontFlip - (optional) If true, the x-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({ viewBox, scale, rotation, offsetX = 0, offsetY = 0,\n dontFlip = false, }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n let centerX = (viewBox[2] + viewBox[0]) / 2;\n let centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n switch (rotation) {\n case 180:\n rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;\n break;\n case 90:\n rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;\n break;\n case 270:\n rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;\n break;\n // case 0:\n default:\n rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;\n break;\n }\n\n if (dontFlip) {\n rotateC = -rotateC; rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} - (optional)\n * @return {PageViewport} Cloned viewport.\n */\n clone({ scale = this.scale, rotation = this.rotation,\n dontFlip = false, } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @return {Object} Object containing `x` and `y` properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @return {Array} Array containing corresponding coordinates of the rectangle\n * in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n let tl = Util.applyTransform([rect[0], rect[1]], this.transform);\n let br = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [tl[0], tl[1], br[0], br[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @return {Object} Object containing `x` and `y` properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nvar RenderingCancelledException = (function RenderingCancelledException() {\n function RenderingCancelledException(msg, type) {\n this.message = msg;\n this.type = type;\n }\n\n RenderingCancelledException.prototype = new Error();\n RenderingCancelledException.prototype.name = 'RenderingCancelledException';\n RenderingCancelledException.constructor = RenderingCancelledException;\n\n return RenderingCancelledException;\n})();\n\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\nconst LinkTargetStringMap = [\n '',\n '_self',\n '_blank',\n '_parent',\n '_top'\n];\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} target - (optional) The link target.\n * The default value is `LinkTarget.NONE`.\n * @property {string} rel - (optional) The link relationship.\n * The default value is `DEFAULT_LINK_REL`.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLLinkElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, } = {}) {\n link.href = link.title = (url ? removeNullCharacters(url) : '');\n\n if (url) {\n const LinkTargetValues = Object.values(LinkTarget);\n let targetIndex =\n LinkTargetValues.includes(target) ? target : LinkTarget.NONE;\n link.target = LinkTargetStringMap[targetIndex];\n\n link.rel = (typeof rel === 'string' ? rel : DEFAULT_LINK_REL);\n }\n}\n\n// Gets the file name from a given URL.\nfunction getFilenameFromUrl(url) {\n var anchor = url.indexOf('#');\n var query = url.indexOf('?');\n var end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length);\n return url.substring(url.lastIndexOf('/', end) + 1, end);\n}\n\nclass StatTimer {\n constructor(enable = true) {\n this.enabled = !!enable;\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (!this.enabled) {\n return;\n }\n if (name in this.started) {\n warn('Timer is already running for ' + name);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!this.enabled) {\n return;\n }\n if (!(name in this.started)) {\n warn('Timer has not been started for ' + name);\n }\n this.times.push({\n 'name': name,\n 'start': this.started[name],\n 'end': Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n let times = this.times;\n // Find the longest name for padding purposes.\n let out = '', longest = 0;\n for (let i = 0, ii = times.length; i < ii; ++i) {\n let name = times[i]['name'];\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (let i = 0, ii = times.length; i < ii; ++i) {\n let span = times[i];\n let duration = span.end - span.start;\n out += `${span['name'].padEnd(longest)} ${duration}ms\\n`;\n }\n return out;\n }\n}\n\n/**\n * Helps avoid having to initialize {StatTimer} instances, e.g. one for every\n * page, in cases where the collected stats are not actually being used.\n * This (dummy) class can thus, since all its methods are `static`, be directly\n * shared between multiple call-sites without the need to be initialized first.\n *\n * NOTE: This must implement the same interface as {StatTimer}.\n */\nclass DummyStatTimer {\n constructor() {\n unreachable('Cannot initialize DummyStatTimer.');\n }\n\n static time(name) {}\n\n static timeEnd(name) {}\n\n static toString() {\n return '';\n }\n}\n\nfunction loadScript(src) {\n return new Promise((resolve, reject) => {\n let script = document.createElement('script');\n script.src = src;\n\n script.onload = resolve;\n script.onerror = function() {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\nexport {\n PageViewport,\n RenderingCancelledException,\n addLinkAttributes,\n getFilenameFromUrl,\n LinkTarget,\n DEFAULT_LINK_REL,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMSVGFactory,\n StatTimer,\n DummyStatTimer,\n loadScript,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert, bytesToString, isEvalSupported, shadow, string32, unreachable,\n UNSUPPORTED_FEATURES, warn\n} from '../shared/util';\n\nclass BaseFontLoader {\n constructor(docId) {\n if (this.constructor === BaseFontLoader) {\n unreachable('Cannot initialize BaseFontLoader.');\n }\n this.docId = docId;\n\n this.nativeFontFaces = [];\n this.styleElement = null;\n this.loadingContext = {\n requests: [],\n nextRequestId: 0,\n };\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n if (!styleElement) {\n styleElement = this.styleElement = document.createElement('style');\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n document.documentElement.getElementsByTagName('head')[0].appendChild(\n styleElement);\n }\n\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n this.nativeFontFaces.forEach(function(nativeFontFace) {\n document.fonts.delete(nativeFontFace);\n });\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n bind(fonts, callback) {\n const rules = [];\n const fontsToLoad = [];\n const fontLoadPromises = [];\n const getNativeFontPromise = function(nativeFontFace) {\n // Return a promise that is always fulfilled, even when the font fails to\n // load.\n return nativeFontFace.loaded.catch(function(reason) {\n warn(`Failed to load font \"${nativeFontFace.family}\": ${reason}`);\n });\n };\n\n for (const font of fonts) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || font.missingFile) {\n continue;\n }\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n fontLoadPromises.push(getNativeFontPromise(nativeFontFace));\n }\n } else {\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n rules.push(rule);\n fontsToLoad.push(font);\n }\n }\n }\n\n const request = this._queueLoadingCallback(callback);\n if (this.isFontLoadingAPISupported) {\n Promise.all(fontLoadPromises).then(request.complete);\n } else if (rules.length > 0 && !this.isSyncFontLoadingSupported) {\n this._prepareFontLoadEvent(rules, fontsToLoad, request);\n } else {\n request.complete();\n }\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, 'completeRequest() cannot be called twice.');\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback,\n };\n context.requests.push(request);\n return request;\n }\n\n get isFontLoadingAPISupported() {\n unreachable('Abstract method `isFontLoadingAPISupported`.');\n }\n\n get isSyncFontLoadingSupported() {\n unreachable('Abstract method `isSyncFontLoadingSupported`.');\n }\n\n get _loadTestFont() {\n unreachable('Abstract method `_loadTestFont`.');\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n unreachable('Abstract method `_prepareFontLoadEvent`.');\n }\n}\n\nlet FontLoader;\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('MOZCENTRAL')) {\n\nFontLoader = class MozcentralFontLoader extends BaseFontLoader {\n get isFontLoadingAPISupported() {\n return shadow(this, 'isFontLoadingAPISupported',\n typeof document !== 'undefined' && !!document.fonts);\n }\n\n get isSyncFontLoadingSupported() {\n return shadow(this, 'isSyncFontLoadingSupported', true);\n }\n};\n\n} else { // PDFJSDev.test('CHROME || GENERIC')\n\nFontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(docId) {\n super(docId);\n this.loadTestFontId = 0;\n }\n\n get isFontLoadingAPISupported() {\n let supported = (typeof document !== 'undefined' && !!document.fonts);\n\n if ((typeof PDFJSDev === 'undefined' || !PDFJSDev.test('CHROME')) &&\n (supported && typeof navigator !== 'undefined')) {\n // The Firefox Font Loading API does not work with `mozPrintCallback`\n // prior to version 63; see https://bugzilla.mozilla.org/show_bug.cgi?id=1473742\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n if (m && m[1] < 63) {\n supported = false;\n }\n }\n return shadow(this, 'isFontLoadingAPISupported', supported);\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('CHROME')) {\n if (typeof navigator === 'undefined') {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else {\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n if (m && m[1] >= 14) {\n supported = true;\n }\n // TODO - other browsers...\n }\n }\n return shadow(this, 'isSyncFontLoadingSupported', supported);\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function() {\n // This is a CFF font with 1 glyph for '.' that fills its entire width and\n // height.\n return atob(\n 'T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA' +\n 'FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA' +\n 'ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA' +\n 'AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1' +\n 'AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD' +\n '6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM' +\n 'AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D' +\n 'IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA' +\n 'AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA' +\n 'AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB' +\n 'AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY' +\n 'AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA' +\n 'AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA' +\n 'AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC' +\n 'AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3' +\n 'Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj' +\n 'FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==');\n };\n return shadow(this, '_loadTestFont', getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, request) {\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff);\n }\n function spliceString(s, offset, remove, insert) {\n let chunk1 = s.substring(0, offset);\n let chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n let canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n let ctx = canvas.getContext('2d');\n\n let called = 0;\n function isFontReady(name, callback) {\n called++;\n // With setTimeout clamping this gives the font ~100ms to load.\n if (called > 30) {\n warn('Load test font never loaded.');\n callback();\n return;\n }\n ctx.font = '30px ' + name;\n ctx.fillText('.', 0, 20);\n let imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n let COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length,\n loadTestFontId);\n // CFF checksum is important for IE, adjusting it\n let CFF_CHECKSUM_OFFSET = 16;\n let XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) { // align to 4 bytes boundary\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n\n let names = [];\n for (i = 0, ii = fonts.length; i < ii; i++) {\n names.push(fonts[i].loadedName);\n }\n names.push(loadTestFontId);\n\n let div = document.createElement('div');\n div.setAttribute('style', 'visibility: hidden;' +\n 'width: 10px; height: 10px;' +\n 'position: absolute; top: 0px; left: 0px;');\n for (i = 0, ii = names.length; i < ii; ++i) {\n let span = document.createElement('span');\n span.textContent = 'Hi';\n span.style.fontFamily = names[i];\n div.appendChild(span);\n }\n document.body.appendChild(div);\n\n isFontReady(loadTestFontId, function() {\n document.body.removeChild(div);\n request.complete();\n });\n /** Hack end */\n }\n};\n\n} // End of PDFJSDev.test('CHROME || GENERIC')\n\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, 'value', isEvalSupported());\n },\n};\n\nclass FontFaceObject {\n constructor(translatedData, { isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature = null,\n fontRegistry = null, }) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (let i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const nativeFontFace = new FontFace(this.loadedName, this.data, {});\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(new Uint8Array(this.data));\n // Add the @font-face rule to the document.\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds, current;\n try {\n cmds = objs.get(this.loadedName + '_path_' + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n if (this._onUnsupportedFeature) {\n this._onUnsupportedFeature({ featureId: UNSUPPORTED_FEATURES.font, });\n }\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return this.compiledGlyphs[character] = function(c, size) {\n // No-op function, to allow rendering to continue.\n };\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && IsEvalSupportedCached.value) {\n let args, js = '';\n for (let i = 0, ii = cmds.length; i < ii; i++) {\n current = cmds[i];\n\n if (current.args !== undefined) {\n args = current.args.join(',');\n } else {\n args = '';\n }\n js += 'c.' + current.cmd + '(' + args + ');\\n';\n }\n // eslint-disable-next-line no-new-func\n return this.compiledGlyphs[character] = new Function('c', 'size', js);\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return this.compiledGlyphs[character] = function(c, size) {\n for (let i = 0, ii = cmds.length; i < ii; i++) {\n current = cmds[i];\n\n if (current.cmd === 'scale') {\n current.args = [size, -size];\n }\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n}\n\nexport {\n FontFaceObject,\n FontLoader,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n const isNodeJS = require('../shared/is_node');\n\n const userAgent =\n (typeof navigator !== 'undefined' && navigator.userAgent) || '';\n const isIE = /Trident/.test(userAgent);\n const isIOSChrome = /CriOS/.test(userAgent);\n\n // Checks if possible to use URL.createObjectURL()\n // Support: IE, Chrome on iOS\n (function checkOnBlobSupport() {\n // Sometimes IE and Chrome on iOS losing the data created with\n // createObjectURL(), see issues #3977 and #8081.\n if (isIE || isIOSChrome) {\n compatibilityParams.disableCreateObjectURL = true;\n }\n })();\n\n // Support: Node.js\n (function checkFontFaceAndImage() {\n // Node.js is missing native support for `@font-face` and `Image`.\n if (isNodeJS()) {\n compatibilityParams.disableFontFace = true;\n compatibilityParams.nativeImageDecoderSupport = 'none';\n }\n })();\n}\n\nexports.apiCompatibilityParams = Object.freeze(compatibilityParams);\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FONT_IDENTITY_MATRIX, IDENTITY_MATRIX, ImageKind, info, isLittleEndian, isNum,\n OPS, shadow, TextRenderingMode, unreachable, Util, warn\n} from '../shared/util';\nimport { getShadingPatternFromIR, TilingPattern } from './pattern_helper';\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n\n// Minimal font size that would be used during canvas fillText operations.\nvar MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\n\n// Heuristic value used when enforcing minimum line widths.\nvar MIN_WIDTH_FACTOR = 0.65;\n\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\n\nvar FULL_CHUNK_HEIGHT = 16;\n\nvar IsLittleEndianCached = {\n get value() {\n return shadow(IsLittleEndianCached, 'value', isLittleEndian());\n },\n};\n\nfunction addContextCurrentTransform(ctx) {\n // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.\n if (!ctx.mozCurrentTransform) {\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n Object.defineProperty(ctx, 'mozCurrentTransform', {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n },\n });\n\n Object.defineProperty(ctx, 'mozCurrentTransformInverse', {\n get: function getCurrentTransformInverse() {\n // Calculation done using WolframAlpha:\n // http://www.wolframalpha.com/input/?\n // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}\n\n var m = this._transformMatrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n\n var ad_bc = a * d - b * c;\n var bc_ad = b * c - a * d;\n\n return [\n d / ad_bc,\n b / bc_ad,\n c / bc_ad,\n a / ad_bc,\n (d * e - c * f) / bc_ad,\n (b * e - a * f) / ad_bc\n ];\n },\n });\n\n ctx.save = function ctxSave() {\n var old = this._transformMatrix;\n this._transformStack.push(old);\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n var prev = this._transformStack.pop();\n if (prev) {\n this._transformMatrix = prev;\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n var m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n var m = this._transformMatrix;\n m[0] = m[0] * x;\n m[1] = m[1] * x;\n m[2] = m[2] * y;\n m[3] = m[3] * y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n var m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * a + m[2] * b,\n m[1] * a + m[3] * b,\n m[0] * c + m[2] * d,\n m[1] * c + m[3] * d,\n m[0] * e + m[2] * f + m[4],\n m[1] * e + m[3] * f + m[5]\n ];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.rotate = function ctxRotate(angle) {\n var cosValue = Math.cos(angle);\n var sinValue = Math.sin(angle);\n\n var m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * (-sinValue) + m[2] * cosValue,\n m[1] * (-sinValue) + m[3] * cosValue,\n m[4],\n m[5]\n ];\n\n this._originalRotate(angle);\n };\n }\n}\n\nvar CachedCanvases = (function CachedCanvasesClosure() {\n function CachedCanvases(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n CachedCanvases.prototype = {\n getCanvas: function CachedCanvases_getCanvas(id, width, height,\n trackTransform) {\n var canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n // reset canvas transform for emulated mozCurrentTransform, if needed\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n return canvasEntry;\n },\n clear() {\n for (var id in this.cache) {\n var canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n },\n };\n return CachedCanvases;\n})();\n\nfunction compileType3Glyph(imgData) {\n var POINT_TO_PROCESS_LIMIT = 1000;\n\n var width = imgData.width, height = imgData.height;\n var i, j, j0, width1 = width + 1;\n var points = new Uint8Array(width1 * (height + 1));\n var POINT_TYPES =\n new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n\n // decodes bit-packed mask data\n var lineSize = (width + 7) & ~7, data0 = imgData.data;\n var data = new Uint8Array(lineSize * height), pos = 0, ii;\n for (i = 0, ii = data0.length; i < ii; i++) {\n var mask = 128, elem = data0[i];\n while (mask > 0) {\n data[pos++] = (elem & mask) ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n var count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n var outlines = [];\n for (i = 0; count && i <= height; i++) {\n var p = i * width1;\n var end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n var coords = [p % width1, i];\n\n var type = points[p], p0 = p, pp;\n do {\n var step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else { // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2 | type << 2);\n }\n\n coords.push(p % width1);\n coords.push((p / width1) | 0);\n --count;\n } while (p0 !== p);\n outlines.push(coords);\n --i;\n }\n\n var drawOutline = function(c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n for (var i = 0, ii = outlines.length; i < ii; i++) {\n var o = outlines[i];\n c.moveTo(o[0], o[1]);\n for (var j = 2, jj = o.length; j < jj; j += 2) {\n c.lineTo(o[j], o[j + 1]);\n }\n }\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nvar CanvasExtraState = (function CanvasExtraStateClosure() {\n function CanvasExtraState() {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = '#000000';\n this.strokeColor = '#000000';\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.resumeSMaskCtx = null; // nonclonable field (see the save method below)\n }\n\n CanvasExtraState.prototype = {\n clone: function CanvasExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n },\n };\n return CanvasExtraState;\n})();\n\nvar CanvasGraphics = (function CanvasGraphicsClosure() {\n // Defines the time the executeOperatorList is going to be executing\n // before it stops and shedules a continue of execution.\n var EXECUTION_TIME = 15;\n // Defines the number of steps before checking the execution time\n var EXECUTION_STEPS = 10;\n\n function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory,\n webGLContext, imageLayer) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState();\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.webGLContext = webGLContext;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see pdf\n // spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n if (canvasCtx) {\n // NOTE: if mozCurrentTransform is polyfilled, then the current state of\n // the transformation must already be set in canvasCtx._transformMatrix.\n addContextCurrentTransform(canvasCtx);\n }\n this._cachedGetSinglePixelWidth = null;\n }\n\n function putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n var height = imgData.height, width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0, destPos;\n var src = imgData.data;\n var dest = chunkImgData.data;\n var i, j, thisChunkHeight, elemsInThisChunk;\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n var srcLength = src.byteLength;\n var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n var dest32DataLength = dest32.length;\n var fullSrcDiff = (width + 7) >> 3;\n var white = 0xFFFFFFFF;\n var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight =\n (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n var srcDiff = srcLength - srcPos;\n var k = 0;\n var kEnd = (srcDiff > fullSrcDiff) ? width : srcDiff * 8 - 7;\n var kEndUnrolled = kEnd & ~7;\n var mask = 0;\n var srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = (srcByte & 128) ? white : black;\n dest32[destPos++] = (srcByte & 64) ? white : black;\n dest32[destPos++] = (srcByte & 32) ? white : black;\n dest32[destPos++] = (srcByte & 16) ? white : black;\n dest32[destPos++] = (srcByte & 8) ? white : black;\n dest32[destPos++] = (srcByte & 4) ? white : black;\n dest32[destPos++] = (srcByte & 2) ? white : black;\n dest32[destPos++] = (srcByte & 1) ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = (srcByte & mask) ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n }\n\n function putBinaryImageMask(ctx, imgData) {\n var height = imgData.height, width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0;\n var src = imgData.data;\n var dest = chunkImgData.data;\n\n for (var i = 0; i < totalChunks; i++) {\n var thisChunkHeight =\n (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n var destPos = 3; // alpha component offset\n for (var j = 0; j < thisChunkHeight; j++) {\n var mask = 0;\n for (var k = 0; k < width; k++) {\n if (!mask) {\n var elem = src[srcPos++];\n mask = 128;\n }\n dest[destPos] = (elem & mask) ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n }\n\n function copyCtxState(sourceCtx, destCtx) {\n var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha',\n 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit',\n 'globalCompositeOperation', 'font'];\n for (var i = 0, ii = properties.length; i < ii; i++) {\n var property = properties[i];\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n }\n\n function resetCtxToDefault(ctx) {\n ctx.strokeStyle = '#000000';\n ctx.fillStyle = '#000000';\n ctx.fillRule = 'nonzero';\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = 'source-over';\n ctx.font = '10px sans-serif';\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n }\n\n function composeSMaskBackdrop(bytes, r0, g0, b0) {\n var length = bytes.length;\n for (var i = 3; i < length; i += 4) {\n var alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n var alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n }\n\n function composeSMaskAlpha(maskData, layerData, transferMap) {\n var length = maskData.length;\n var scale = 1 / 255;\n for (var i = 3; i < length; i += 4) {\n var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n }\n\n function composeSMaskLuminosity(maskData, layerData, transferMap) {\n var length = maskData.length;\n for (var i = 3; i < length; i += 4) {\n var y = (maskData[i - 3] * 77) + // * 0.3 / 255 * 0x10000\n (maskData[i - 2] * 152) + // * 0.59 ....\n (maskData[i - 1] * 28); // * 0.11 ....\n layerData[i] = transferMap ?\n (layerData[i] * transferMap[y >> 8]) >> 8 :\n (layerData[i] * y) >> 16;\n }\n }\n\n function genericComposeSMask(maskCtx, layerCtx, width, height,\n subtype, backdrop, transferMap) {\n var hasBackdrop = !!backdrop;\n var r0 = hasBackdrop ? backdrop[0] : 0;\n var g0 = hasBackdrop ? backdrop[1] : 0;\n var b0 = hasBackdrop ? backdrop[2] : 0;\n\n var composeFn;\n if (subtype === 'Luminosity') {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n var PIXELS_TO_PROCESS = 1048576;\n var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (var row = 0; row < height; row += chunkSize) {\n var chunkHeight = Math.min(chunkSize, height - row);\n var maskData = maskCtx.getImageData(0, row, width, chunkHeight);\n var layerData = layerCtx.getImageData(0, row, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n maskCtx.putImageData(layerData, 0, row);\n }\n }\n\n function composeSMask(ctx, smask, layerCtx, webGLContext) {\n var mask = smask.canvas;\n var maskCtx = smask.context;\n\n ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY,\n smask.offsetX, smask.offsetY);\n\n var backdrop = smask.backdrop || null;\n if (!smask.transferMap && webGLContext.isEnabled) {\n let composed = webGLContext.composeSMask({\n layer: layerCtx.canvas,\n mask,\n properties: {\n subtype: smask.subtype,\n backdrop,\n },\n });\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(composed, smask.offsetX, smask.offsetY);\n return;\n }\n genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height,\n smask.subtype, backdrop, smask.transferMap);\n ctx.drawImage(mask, 0, 0);\n }\n\n var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n var NORMAL_CLIP = {};\n var EO_CLIP = {};\n\n CanvasGraphics.prototype = {\n\n beginDrawing({ transform, viewport, transparency,\n background = null, }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n var width = this.ctx.canvas.width;\n var height = this.ctx.canvas.height;\n\n this.ctx.save();\n this.ctx.fillStyle = background || 'rgb(255, 255, 255)';\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n var transparentCanvas = this.cachedCanvases.getCanvas(\n 'transparent', width, height, true);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform.apply(this.ctx,\n this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n }\n this.ctx.transform.apply(this.ctx, viewport.transform);\n\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n },\n\n executeOperatorList: function CanvasGraphics_executeOperatorList(\n operatorList,\n executionStartIdx, continueCallback,\n stepper) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var i = executionStartIdx || 0;\n var argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n var chunkOperations = (argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === 'function');\n var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n var steps = 0;\n\n var commonObjs = this.commonObjs;\n var objs = this.objs;\n var fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n var deps = argsArray[i];\n for (var n = 0, nn = deps.length; n < nn; n++) {\n var depObjId = deps[n];\n var common = depObjId[0] === 'g' && depObjId[1] === '_';\n var objsPool = common ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.isResolved(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n },\n\n endDrawing: function CanvasGraphics_endDrawing() {\n // Finishing all opened operations such as SMask group painting.\n if (this.current.activeSMask !== null) {\n this.endSMaskGroup();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.webGLContext.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n },\n\n // Graphics state\n setLineWidth: function CanvasGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n },\n setLineCap: function CanvasGraphics_setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function CanvasGraphics_setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n },\n setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {\n var ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n },\n setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {\n // Maybe if we one day fully support color spaces this will be important\n // for now we can ignore.\n // TODO set rendering intent?\n },\n setFlatness: function CanvasGraphics_setFlatness(flatness) {\n // There's no way to control this with canvas, but we can safely ignore.\n // TODO set flatness?\n },\n setGState: function CanvasGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case 'LW':\n this.setLineWidth(value);\n break;\n case 'LC':\n this.setLineCap(value);\n break;\n case 'LJ':\n this.setLineJoin(value);\n break;\n case 'ML':\n this.setMiterLimit(value);\n break;\n case 'D':\n this.setDash(value[0], value[1]);\n break;\n case 'RI':\n this.setRenderingIntent(value);\n break;\n case 'FL':\n this.setFlatness(value);\n break;\n case 'Font':\n this.setFont(value[0], value[1]);\n break;\n case 'CA':\n this.current.strokeAlpha = state[1];\n break;\n case 'ca':\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n case 'BM':\n this.ctx.globalCompositeOperation = value;\n break;\n case 'SMask':\n if (this.current.activeSMask) {\n // If SMask is currrenly used, it needs to be suspended or\n // finished. Suspend only makes sense when at least one save()\n // was performed and state needs to be reverted on restore().\n if (this.stateStack.length > 0 &&\n (this.stateStack[this.stateStack.length - 1].activeSMask ===\n this.current.activeSMask)) {\n this.suspendSMaskGroup();\n } else {\n this.endSMaskGroup();\n }\n }\n this.current.activeSMask = value ? this.tempSMask : null;\n if (this.current.activeSMask) {\n this.beginSMaskGroup();\n }\n this.tempSMask = null;\n break;\n }\n }\n },\n beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {\n\n var activeSMask = this.current.activeSMask;\n var drawnWidth = activeSMask.canvas.width;\n var drawnHeight = activeSMask.canvas.height;\n var cacheId = 'smaskGroupAt' + this.groupLevel;\n var scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId, drawnWidth, drawnHeight, true);\n\n var currentCtx = this.ctx;\n var currentTransform = currentCtx.mozCurrentTransform;\n this.ctx.save();\n\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);\n groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;\n\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n ['BM', 'source-over'],\n ['ca', 1],\n ['CA', 1]\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n // Similar to endSMaskGroup, the intermediate canvas has to be composed\n // and future ctx state restored.\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n\n composeSMask(this.ctx, this.current.activeSMask, groupCtx,\n this.webGLContext);\n this.ctx.restore();\n this.ctx.save(); // save is needed since SMask will be resumed.\n copyCtxState(groupCtx, this.ctx);\n\n // Saving state for resuming.\n this.current.resumeSMaskCtx = groupCtx;\n // Transform was changed in the SMask canvas, reflecting this change on\n // this.ctx.\n var deltaTransform = Util.transform(\n this.current.activeSMask.startTransformInverse,\n groupCtx.mozCurrentTransform);\n this.ctx.transform.apply(this.ctx, deltaTransform);\n\n // SMask was composed, the results at the groupCtx can be cleared.\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n groupCtx.restore();\n },\n resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n // Resuming state saved by suspendSMaskGroup. We don't need to restore\n // any groupCtx state since restore() command (the only caller) will do\n // that for us. See also beginSMaskGroup.\n var groupCtx = this.current.resumeSMaskCtx;\n var currentCtx = this.ctx;\n this.ctx = groupCtx;\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n endSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n\n composeSMask(this.ctx, this.current.activeSMask, groupCtx,\n this.webGLContext);\n this.ctx.restore();\n copyCtxState(groupCtx, this.ctx);\n // Transform was changed in the SMask canvas, reflecting this change on\n // this.ctx.\n var deltaTransform = Util.transform(\n this.current.activeSMask.startTransformInverse,\n groupCtx.mozCurrentTransform);\n this.ctx.transform.apply(this.ctx, deltaTransform);\n },\n save: function CanvasGraphics_save() {\n this.ctx.save();\n var old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.current.resumeSMaskCtx = null;\n },\n restore: function CanvasGraphics_restore() {\n // SMask was suspended, we just need to resume it.\n if (this.current.resumeSMaskCtx) {\n this.resumeSMaskGroup();\n }\n // SMask has to be finished once there is no states that are using the\n // same SMask.\n if (this.current.activeSMask !== null && (this.stateStack.length === 0 ||\n this.stateStack[this.stateStack.length - 1].activeSMask !==\n this.current.activeSMask)) {\n this.endSMaskGroup();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedGetSinglePixelWidth = null;\n }\n },\n transform: function CanvasGraphics_transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedGetSinglePixelWidth = null;\n },\n\n // Path\n constructPath: function CanvasGraphics_constructPath(ops, args) {\n var ctx = this.ctx;\n var current = this.current;\n var x = current.x, y = current.y;\n for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n if (width === 0) {\n width = this.getSinglePixelWidth();\n }\n if (height === 0) {\n height = this.getSinglePixelWidth();\n }\n var xw = x + width;\n var yh = y + height;\n this.ctx.moveTo(x, y);\n this.ctx.lineTo(xw, y);\n this.ctx.lineTo(xw, yh);\n this.ctx.lineTo(x, yh);\n this.ctx.lineTo(x, y);\n this.ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3],\n x, y);\n j += 6;\n break;\n case OPS.curveTo2:\n ctx.bezierCurveTo(x, y, args[j], args[j + 1],\n args[j + 2], args[j + 3]);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n current.setCurrentPoint(x, y);\n },\n closePath: function CanvasGraphics_closePath() {\n this.ctx.closePath();\n },\n stroke: function CanvasGraphics_stroke(consumePath) {\n consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n var ctx = this.ctx;\n var strokeColor = this.current.strokeColor;\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR,\n this.current.lineWidth);\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (strokeColor && strokeColor.hasOwnProperty('type') &&\n strokeColor.type === 'Pattern') {\n // for patterns, we transform to pattern space, calculate\n // the pattern, call stroke, and restore to user space\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n if (consumePath) {\n this.consumePath();\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n },\n closeStroke: function CanvasGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n fill: function CanvasGraphics_fill(consumePath) {\n consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n if (this.baseTransform) {\n ctx.setTransform.apply(ctx, this.baseTransform);\n }\n ctx.fillStyle = fillColor.getPattern(ctx, this);\n needRestore = true;\n }\n\n if (this.pendingEOFill) {\n ctx.fill('evenodd');\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath();\n }\n },\n eoFill: function CanvasGraphics_eoFill() {\n this.pendingEOFill = true;\n this.fill();\n },\n fillStroke: function CanvasGraphics_fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n },\n eoFillStroke: function CanvasGraphics_eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n },\n closeFillStroke: function CanvasGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n },\n endPath: function CanvasGraphics_endPath() {\n this.consumePath();\n },\n\n // Clipping\n clip: function CanvasGraphics_clip() {\n this.pendingClip = NORMAL_CLIP;\n },\n eoClip: function CanvasGraphics_eoClip() {\n this.pendingClip = EO_CLIP;\n },\n\n // Text\n beginText: function CanvasGraphics_beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n endText: function CanvasGraphics_endText() {\n var paths = this.pendingTextPaths;\n var ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (var i = 0; i < paths.length; i++) {\n var path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n },\n setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n },\n setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n },\n setHScale: function CanvasGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n setLeading: function CanvasGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n setFont: function CanvasGraphics_setFont(fontRefName, size) {\n var fontObj = this.commonObjs.get(fontRefName);\n var current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n\n current.fontMatrix = (fontObj.fontMatrix ?\n fontObj.fontMatrix : FONT_IDENTITY_MATRIX);\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 ||\n current.fontMatrix[3] === 0) {\n warn('Invalid font matrix for font ' + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n var name = fontObj.loadedName || 'sans-serif';\n var bold = fontObj.black ? '900' : (fontObj.bold ? 'bold' : 'normal');\n var italic = fontObj.italic ? 'italic' : 'normal';\n var typeface = '\"' + name + '\", ' + fontObj.fallbackName;\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE :\n size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;\n this.current.fontSizeScale = size / browserFontSize;\n\n var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;\n this.ctx.font = rule;\n },\n setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n },\n setTextRise: function CanvasGraphics_setTextRise(rise) {\n this.current.textRise = rise;\n },\n moveText: function CanvasGraphics_moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n },\n setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.sqrt(a * a + b * b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n nextLine: function CanvasGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n paintChar(character, x, y, patternTransform) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var textRenderingMode = current.textRenderingMode;\n var fontSize = current.fontSize / current.fontSizeScale;\n var fillStrokeMode = textRenderingMode &\n TextRenderingMode.FILL_STROKE_MASK;\n var isAddToPathSet = !!(textRenderingMode &\n TextRenderingMode.ADD_TO_PATH_FLAG);\n let patternFill = current.patternFill && font.data;\n\n var addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n if (fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n var paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n },\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n var ctx = this.canvasFactory.create(10, 10).context;\n ctx.scale(1.5, 1);\n ctx.fillText('I', 0, 10);\n var data = ctx.getImageData(0, 0, 10, 10).data;\n var enabled = false;\n for (var i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, 'isFontSubpixelAAEnabled', enabled);\n },\n\n showText: function CanvasGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n var fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n var ctx = this.ctx;\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n var simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace && !current.patternFill;\n\n ctx.save();\n let patternTransform;\n if (current.patternFill) {\n // TODO: Patterns are not applied correctly to text if a non-embedded\n // font is used. E.g. issue 8111 and ShowText-ShadingPattern.pdf.\n ctx.save();\n let pattern = current.fillColor.getPattern(ctx, this);\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n var lineWidth = current.lineWidth;\n var scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n var fillStrokeMode = current.textRenderingMode &\n TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n this._cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n var x = 0, i;\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n if (isNum(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n var restoreNeeded = false;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var accent = glyph.accent;\n var scaledX, scaledY, scaledAccentX, scaledAccentY;\n var width = glyph.width;\n if (vertical) {\n var vmetric, vx, vy;\n vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n var measuredWidth = ctx.measureText(character).width * 1000 /\n fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n var characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 *\n fontSize / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (glyph.isInFont || font.missingFile) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n scaledAccentX = scaledX + accent.offset.x / fontSizeScale;\n scaledAccentY = scaledY - accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY,\n patternTransform);\n }\n }\n }\n\n var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x * textHScale;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n },\n\n showType3Text: function CanvasGraphics_showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n var fontDirection = current.fontDirection;\n var spacingDir = font.vertical ? 1 : -1;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var textHScale = current.textHScale * fontDirection;\n var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n var glyphsLength = glyphs.length;\n var isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n var i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (isNum(glyph)) {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n\n var transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n },\n\n // Type3 fonts\n setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n },\n setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth,\n yWidth,\n llx,\n lly,\n urx,\n ury) {\n // TODO According to the spec we're also suppose to ignore any operators\n // that set color or include images while processing this type3 font.\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n },\n\n // Color\n getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {\n var pattern;\n if (IR[0] === 'TilingPattern') {\n var color = IR[1];\n var baseTransform = this.baseTransform ||\n this.ctx.mozCurrentTransform.slice();\n var canvasGraphicsFactory = {\n createCanvasGraphics: (ctx) => {\n return new CanvasGraphics(ctx, this.commonObjs, this.objs,\n this.canvasFactory, this.webGLContext);\n },\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory,\n baseTransform);\n } else {\n pattern = getShadingPatternFromIR(IR);\n }\n return pattern;\n },\n setStrokeColorN: function CanvasGraphics_setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n },\n setFillColorN: function CanvasGraphics_setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n },\n setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n },\n setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n },\n\n shadingFill: function CanvasGraphics_shadingFill(patternIR) {\n var ctx = this.ctx;\n\n this.save();\n var pattern = getShadingPatternFromIR(patternIR);\n ctx.fillStyle = pattern.getPattern(ctx, this, true);\n\n var inv = ctx.mozCurrentTransformInverse;\n if (inv) {\n var canvas = ctx.canvas;\n var width = canvas.width;\n var height = canvas.height;\n\n var bl = Util.applyTransform([0, 0], inv);\n var br = Util.applyTransform([0, height], inv);\n var ul = Util.applyTransform([width, 0], inv);\n var ur = Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.restore();\n },\n\n // Images\n beginInlineImage: function CanvasGraphics_beginInlineImage() {\n unreachable('Should not call beginInlineImage');\n },\n beginImageData: function CanvasGraphics_beginImageData() {\n unreachable('Should not call beginImageData');\n },\n\n paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix,\n bbox) {\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (Array.isArray(bbox) && bbox.length === 4) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.clip();\n this.endPath();\n }\n },\n\n paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n },\n\n beginGroup: function CanvasGraphics_beginGroup(group) {\n this.save();\n var currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info('TODO: Support non-isolated groups.');\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn('Knockout groups not supported.');\n }\n\n var currentTransform = currentCtx.mozCurrentTransform;\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n if (!group.bbox) {\n throw new Error('Bounding box is required.');\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n var bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n currentCtx.mozCurrentTransform);\n // Clip the bounding box to the current canvas.\n var canvasBounds = [0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n var scaleX = 1, scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n var cacheId = 'groupAt' + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += '_smask_' + ((this.smaskCounter++) % 2);\n }\n var scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId, drawnWidth, drawnHeight, true);\n var groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n ['BM', 'source-over'],\n ['ca', 1],\n ['CA', 1]\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n\n // Reseting mask state, masks will be applied on restore of the group.\n this.current.activeSMask = null;\n },\n\n endGroup: function CanvasGraphics_endGroup(group) {\n this.groupLevel--;\n var groupCtx = this.ctx;\n this.ctx = this.groupStack.pop();\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n if (this.ctx.imageSmoothingEnabled !== undefined) {\n this.ctx.imageSmoothingEnabled = false;\n } else {\n this.ctx.mozImageSmoothingEnabled = false;\n }\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n } else {\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n }\n this.restore();\n },\n\n beginAnnotations: function CanvasGraphics_beginAnnotations() {\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n },\n\n endAnnotations: function CanvasGraphics_endAnnotations() {\n this.restore();\n },\n\n beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform,\n matrix) {\n this.save();\n resetCtxToDefault(this.ctx);\n this.current = new CanvasExtraState();\n\n if (Array.isArray(rect) && rect.length === 4) {\n var width = rect[2] - rect[0];\n var height = rect[3] - rect[1];\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n },\n\n endAnnotation: function CanvasGraphics_endAnnotation() {\n this.restore();\n },\n\n paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {\n var domImage = this.objs.get(objId);\n if (!domImage) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n this.save();\n\n var ctx = this.ctx;\n // scale the image to the unit square\n ctx.scale(1 / w, -1 / h);\n\n ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height,\n 0, -h, w, h);\n if (this.imageLayer) {\n var currentTransform = ctx.mozCurrentTransformInverse;\n var position = this.getCanvasPosition(0, 0);\n this.imageLayer.appendImage({\n objId,\n left: position[0],\n top: position[1],\n width: w / currentTransform[0],\n height: h / currentTransform[3],\n });\n }\n this.restore();\n },\n\n paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {\n var ctx = this.ctx;\n var width = img.width, height = img.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n var glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled =\n compileType3Glyph({ data: img.data, width, height, });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph && glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, img);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n this.paintInlineImageXObject(maskCanvas.canvas);\n },\n\n paintImageMaskXObjectRepeat:\n function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX,\n scaleY, positions) {\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, imgData);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n var ctx = this.ctx;\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n ctx.save();\n ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,\n 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageMaskXObjectGroup:\n function CanvasGraphics_paintImageMaskXObjectGroup(images) {\n var ctx = this.ctx;\n\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n for (var i = 0, ii = images.length; i < ii; i++) {\n var image = images[i];\n var width = image.width, height = image.height;\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, image);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,\n 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n },\n\n paintImageXObjectRepeat:\n function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY,\n positions) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var map = [];\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({ transform: [scaleX, 0, 0, scaleY, positions[i],\n positions[i + 1]], x: 0, y: 0, w: width, h: height, });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n },\n\n paintInlineImageXObject:\n function CanvasGraphics_paintInlineImageXObject(imgData) {\n var width = imgData.width;\n var height = imgData.height;\n var ctx = this.ctx;\n\n this.save();\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n var currentTransform = ctx.mozCurrentTransformInverse;\n var a = currentTransform[0], b = currentTransform[1];\n var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);\n var c = currentTransform[2], d = currentTransform[3];\n var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);\n\n var imgToPaint, tmpCanvas;\n // typeof check is needed due to node.js support, see issue #8489\n if ((typeof HTMLElement === 'function' &&\n imgData instanceof HTMLElement) || !imgData.data) {\n imgToPaint = imgData;\n } else {\n tmpCanvas = this.cachedCanvases.getCanvas('inlineImage',\n width, height);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = tmpCanvas.canvas;\n }\n\n var paintWidth = width, paintHeight = height;\n var tmpCanvasId = 'prescale1';\n // Vertial or horizontal scaling shall not be more than 2 to not loose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size\n while ((widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)) {\n var newWidth = paintWidth, newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId,\n newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,\n 0, 0, newWidth, newHeight);\n imgToPaint = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';\n }\n ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,\n 0, -height, width, height);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / currentTransform[0],\n height: height / currentTransform[3],\n });\n }\n this.restore();\n },\n\n paintInlineImageXObjectGroup:\n function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {\n var ctx = this.ctx;\n var w = imgData.width;\n var h = imgData.height;\n\n var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n\n for (var i = 0, ii = map.length; i < ii; i++) {\n var entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h,\n 0, -1, 1, 1);\n if (this.imageLayer) {\n var position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h,\n });\n }\n ctx.restore();\n }\n },\n\n paintSolidColorImageMask:\n function CanvasGraphics_paintSolidColorImageMask() {\n this.ctx.fillRect(0, 0, 1, 1);\n },\n\n paintXObject: function CanvasGraphics_paintXObject() {\n warn('Unsupported \\'paintXObject\\' command.');\n },\n\n // Marked content\n\n markPoint: function CanvasGraphics_markPoint(tag) {\n // TODO Marked content.\n },\n markPointProps: function CanvasGraphics_markPointProps(tag, properties) {\n // TODO Marked content.\n },\n beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {\n // TODO Marked content.\n },\n beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(\n tag, properties) {\n // TODO Marked content.\n },\n endMarkedContent: function CanvasGraphics_endMarkedContent() {\n // TODO Marked content.\n },\n\n // Compatibility\n\n beginCompat: function CanvasGraphics_beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n },\n endCompat: function CanvasGraphics_endCompat() {\n // TODO stop ignoring undefined operators\n },\n\n // Helper functions\n\n consumePath: function CanvasGraphics_consumePath() {\n var ctx = this.ctx;\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip('evenodd');\n } else {\n ctx.clip();\n }\n this.pendingClip = null;\n }\n ctx.beginPath();\n },\n getSinglePixelWidth(scale) {\n if (this._cachedGetSinglePixelWidth === null) {\n const inverse = this.ctx.mozCurrentTransformInverse;\n // max of the current horizontal and vertical scale\n this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(\n (inverse[0] * inverse[0] + inverse[1] * inverse[1]),\n (inverse[2] * inverse[2] + inverse[3] * inverse[3])));\n }\n return this._cachedGetSinglePixelWidth;\n },\n getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {\n var transform = this.ctx.mozCurrentTransform;\n return [\n transform[0] * x + transform[2] * y + transform[4],\n transform[1] * x + transform[3] * y + transform[5]\n ];\n },\n };\n\n for (var op in OPS) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n\n return CanvasGraphics;\n})();\n\nexport {\n CanvasGraphics,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, Util } from '../shared/util';\n\nvar ShadingIRs = {};\n\nShadingIRs.RadialAxial = {\n fromIR: function RadialAxial_fromIR(raw) {\n var type = raw[1];\n var colorStops = raw[2];\n var p0 = raw[3];\n var p1 = raw[4];\n var r0 = raw[5];\n var r1 = raw[6];\n return {\n type: 'Pattern',\n getPattern: function RadialAxial_getPattern(ctx) {\n var grad;\n if (type === 'axial') {\n grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n } else if (type === 'radial') {\n grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);\n }\n\n for (var i = 0, ii = colorStops.length; i < ii; ++i) {\n var c = colorStops[i];\n grad.addColorStop(c[0], c[1]);\n }\n return grad;\n },\n };\n },\n};\n\nvar createMeshCanvas = (function createMeshCanvasClosure() {\n function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n var coords = context.coords, colors = context.colors;\n var bytes = data.data, rowSize = data.width * 4;\n var tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2; p2 = p3; p3 = tmp; tmp = c2; c2 = c3; c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;\n }\n var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n var c1r = colors[c1], c1g = colors[c1 + 1], c1b = colors[c1 + 2];\n var c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2];\n var c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2];\n\n var minY = Math.round(y1), maxY = Math.round(y3);\n var xa, car, cag, cab;\n var xb, cbr, cbg, cbb;\n var k;\n for (var y = minY; y <= maxY; y++) {\n if (y < y2) {\n k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n var x1_ = Math.round(Math.min(xa, xb));\n var x2_ = Math.round(Math.max(xa, xb));\n var j = rowSize * y + x1_ * 4;\n for (var x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n k = k < 0 ? 0 : k > 1 ? 1 : k;\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n }\n\n function drawFigure(data, figure, context) {\n var ps = figure.coords;\n var cs = figure.colors;\n var i, ii;\n switch (figure.type) {\n case 'lattice':\n var verticesPerRow = figure.verticesPerRow;\n var rows = Math.floor(ps.length / verticesPerRow) - 1;\n var cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n var q = i * verticesPerRow;\n for (var j = 0; j < cols; j++, q++) {\n drawTriangle(data, context,\n ps[q], ps[q + 1], ps[q + verticesPerRow],\n cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context,\n ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case 'triangles':\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context,\n ps[i], ps[i + 1], ps[i + 2],\n cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error('illegal figure');\n }\n }\n\n function createMeshCanvas(bounds, combinesScale, coords, colors, figures,\n backgroundColor, cachedCanvases, webGLContext) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n var EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n var BORDER_SIZE = 2;\n\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var boundsWidth = Math.ceil(bounds[2]) - offsetX;\n var boundsHeight = Math.ceil(bounds[3]) - offsetY;\n\n var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] *\n EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] *\n EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var scaleX = boundsWidth / width;\n var scaleY = boundsHeight / height;\n\n var context = {\n coords,\n colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n var paddedWidth = width + BORDER_SIZE * 2;\n var paddedHeight = height + BORDER_SIZE * 2;\n\n var canvas, tmpCanvas, i, ii;\n if (webGLContext.isEnabled) {\n canvas = webGLContext.drawFigures({\n width,\n height,\n backgroundColor,\n figures,\n context,\n });\n // https://bugzilla.mozilla.org/show_bug.cgi?id=972126\n tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight,\n false);\n tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n } else {\n tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight,\n false);\n var tmpCtx = tmpCanvas.context;\n\n var data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n var bytes = data.data;\n for (i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (i = 0; i < figures.length; i++) {\n drawFigure(data, figures[i], context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n }\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n return createMeshCanvas;\n})();\n\nShadingIRs.Mesh = {\n fromIR: function Mesh_fromIR(raw) {\n // var type = raw[1];\n var coords = raw[2];\n var colors = raw[3];\n var figures = raw[4];\n var bounds = raw[5];\n var matrix = raw[6];\n // var bbox = raw[7];\n var background = raw[8];\n return {\n type: 'Pattern',\n getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {\n var scale;\n if (shadingFill) {\n scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (matrix) {\n var matrixScale = Util.singularValueDecompose2dScale(matrix);\n scale = [scale[0] * matrixScale[0],\n scale[1] * matrixScale[1]];\n }\n }\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords,\n colors, figures, shadingFill ? null : background,\n owner.cachedCanvases, owner.webGLContext);\n\n if (!shadingFill) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n if (matrix) {\n ctx.transform.apply(ctx, matrix);\n }\n }\n\n ctx.translate(temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX,\n temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');\n },\n };\n },\n};\n\nShadingIRs.Dummy = {\n fromIR: function Dummy_fromIR() {\n return {\n type: 'Pattern',\n getPattern: function Dummy_fromIR_getPattern() {\n return 'hotpink';\n },\n };\n },\n};\n\nfunction getShadingPatternFromIR(raw) {\n var shadingIR = ShadingIRs[raw[0]];\n if (!shadingIR) {\n throw new Error(`Unknown IR type: ${raw[0]}`);\n }\n return shadingIR.fromIR(raw);\n}\n\nvar TilingPattern = (function TilingPatternClosure() {\n var PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n };\n\n var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n\n function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.type = 'Pattern';\n this.ctx = ctx;\n }\n\n TilingPattern.prototype = {\n createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {\n var operatorList = this.operatorList;\n var bbox = this.bbox;\n var xstep = this.xstep;\n var ystep = this.ystep;\n var paintType = this.paintType;\n var tilingType = this.tilingType;\n var color = this.color;\n var canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info('TilingType: ' + tilingType);\n\n var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3];\n\n var topLeft = [x0, y0];\n // we want the canvas to be as large as the step size\n var botRight = [x0 + xstep, y0 + ystep];\n\n var width = botRight[0] - topLeft[0];\n var height = botRight[1] - topLeft[1];\n\n // Obtain scale from matrix and current transformation matrix.\n var matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n var curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform);\n var combinedScale = [matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1]];\n\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])),\n MAX_PATTERN_SIZE);\n\n height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])),\n MAX_PATTERN_SIZE);\n\n var tmpCanvas = owner.cachedCanvases.getCanvas('pattern',\n width, height, true);\n var tmpCtx = tmpCanvas.context;\n var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n this.setScale(width, height, xstep, ystep);\n this.transformToScale(graphics);\n\n // transform coordinates to pattern space\n var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];\n graphics.transform.apply(graphics, tmpTranslate);\n\n this.clipBbox(graphics, bbox, x0, y0, x1, y1);\n\n graphics.executeOperatorList(operatorList);\n return tmpCanvas.canvas;\n },\n\n setScale: function TilingPattern_setScale(width, height, xstep, ystep) {\n this.scale = [width / xstep, height / ystep];\n },\n\n transformToScale: function TilingPattern_transformToScale(graphics) {\n var scale = this.scale;\n var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];\n graphics.transform.apply(graphics, tmpScale);\n },\n\n scaleToContext: function TilingPattern_scaleToContext() {\n var scale = this.scale;\n this.ctx.scale(1 / scale[0], 1 / scale[1]);\n },\n\n clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {\n if (Array.isArray(bbox) && bbox.length === 4) {\n var bboxWidth = x1 - x0;\n var bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n },\n\n setFillAndStrokeStyleToContext:\n function setFillAndStrokeStyleToContext(graphics, paintType, color) {\n let context = graphics.ctx, current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n var ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n var cssColor = Util.makeCssRgb(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n },\n\n getPattern: function TilingPattern_getPattern(ctx, owner) {\n var temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.baseTransform);\n ctx.transform.apply(ctx, this.matrix);\n this.scaleToContext();\n\n return ctx.createPattern(temporaryPatternCanvas, 'repeat');\n },\n };\n\n return TilingPattern;\n})();\n\nexport {\n getShadingPatternFromIR,\n TilingPattern,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst GlobalWorkerOptions = Object.create(null);\n\n/**\n * Defines global port for worker process. Overrides the `workerSrc` option.\n * @var {Object}\n */\nGlobalWorkerOptions.workerPort = (GlobalWorkerOptions.workerPort === undefined ?\n null : GlobalWorkerOptions.workerPort);\n\n/**\n * Path and filename of the worker file. Required when workers are enabled in\n * development mode. If unspecified in production builds, the worker will be\n * loaded based on the location of the `pdf.js` file.\n *\n * NOTE: The `workerSrc` should always be set in custom applications, in order\n * to prevent issues caused by third-party frameworks and libraries.\n * @var {string}\n */\nGlobalWorkerOptions.workerSrc = (GlobalWorkerOptions.workerSrc === undefined ?\n '' : GlobalWorkerOptions.workerSrc);\n\nexport {\n GlobalWorkerOptions,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException, assert, createPromiseCapability, MissingPDFException,\n ReadableStream, UnexpectedResponseException, UnknownErrorException\n} from './util';\n\nasync function resolveCall(fn, args, thisArg = null) {\n if (!fn) {\n return;\n }\n return fn.apply(thisArg, args);\n}\n\nfunction wrapReason(reason) {\n if (typeof reason !== 'object') {\n return reason;\n }\n switch (reason.name) {\n case 'AbortException':\n return new AbortException(reason.message);\n case 'MissingPDFException':\n return new MissingPDFException(reason.message);\n case 'UnexpectedResponseException':\n return new UnexpectedResponseException(reason.message, reason.status);\n default:\n return new UnknownErrorException(reason.message, reason.details);\n }\n}\n\nfunction makeReasonSerializable(reason) {\n if (!(reason instanceof Error) ||\n reason instanceof AbortException ||\n reason instanceof MissingPDFException ||\n reason instanceof UnexpectedResponseException ||\n reason instanceof UnknownErrorException) {\n return reason;\n }\n return new UnknownErrorException(reason.message, reason.toString());\n}\n\nfunction resolveOrReject(capability, success, reason) {\n if (success) {\n capability.resolve();\n } else {\n capability.reject(reason);\n }\n}\n\nfunction finalize(promise) {\n return Promise.resolve(promise).catch(() => {});\n}\n\nfunction MessageHandler(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n let callbacksCapabilities = this.callbacksCapabilities = Object.create(null);\n let ah = this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = (event) => {\n let data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n } else if (data.isReply) {\n let callbackId = data.callbackId;\n if (data.callbackId in callbacksCapabilities) {\n let callback = callbacksCapabilities[callbackId];\n delete callbacksCapabilities[callbackId];\n if ('error' in data) {\n callback.reject(wrapReason(data.error));\n } else {\n callback.resolve(data.data);\n }\n } else {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n } else if (data.action in ah) {\n let action = ah[data.action];\n if (data.callbackId) {\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n Promise.resolve().then(function () {\n return action[0].call(action[1], data.data);\n }).then((result) => {\n comObj.postMessage({\n sourceName,\n targetName,\n isReply: true,\n callbackId: data.callbackId,\n data: result,\n });\n }, (reason) => {\n comObj.postMessage({\n sourceName,\n targetName,\n isReply: true,\n callbackId: data.callbackId,\n error: makeReasonSerializable(reason),\n });\n });\n } else if (data.streamId) {\n this._createStreamSink(data);\n } else {\n action[0].call(action[1], data.data);\n }\n } else {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n };\n comObj.addEventListener('message', this._onComObjOnMessage);\n}\n\nMessageHandler.prototype = {\n on(actionName, handler, scope) {\n var ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = [handler, scope];\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers\n */\n send(actionName, data, transfers) {\n var message = {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n };\n this.postMessage(message, transfers);\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n var callbackId = this.callbackId++;\n var message = {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n callbackId,\n };\n var capability = createPromiseCapability();\n this.callbacksCapabilities[callbackId] = capability;\n try {\n this.postMessage(message, transfers);\n } catch (e) {\n capability.reject(e);\n }\n return capability.promise;\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n * @return {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n let streamId = this.streamId++;\n let sourceName = this.sourceName;\n let targetName = this.targetName;\n\n return new ReadableStream({\n start: (controller) => {\n let startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n isClosed: false,\n };\n this.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n });\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: (controller) => {\n let pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n this.postMessage({\n sourceName,\n targetName,\n stream: 'pull',\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: (reason) => {\n let cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n this.postMessage({\n sourceName,\n targetName,\n stream: 'cancel',\n reason,\n streamId,\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n }, queueingStrategy);\n },\n\n _createStreamSink(data) {\n let self = this;\n let action = this.actionHandler[data.action];\n let streamId = data.streamId;\n let desiredSize = data.desiredSize;\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n let capability = createPromiseCapability();\n\n let sendStreamRequest = ({ stream, chunk, transfers,\n success, reason, }) => {\n this.postMessage({ sourceName, targetName, stream, streamId,\n chunk, success, reason, }, transfers);\n };\n\n let streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n let lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n sendStreamRequest({ stream: 'enqueue', chunk, transfers, });\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n sendStreamRequest({ stream: 'close', });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n sendStreamRequest({ stream: 'error', reason, });\n },\n\n sinkCapability: capability,\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n resolveCall(action[0], [data.data, streamSink], action[1]).then(() => {\n sendStreamRequest({ stream: 'start_complete', success: true, });\n }, (reason) => {\n sendStreamRequest({ stream: 'start_complete', success: false, reason, });\n });\n },\n\n _processStreamMessage(data) {\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n let streamId = data.streamId;\n\n let sendStreamResponse = ({ stream, success, reason, }) => {\n this.comObj.postMessage({ sourceName, targetName, stream,\n success, streamId, reason, });\n };\n\n let deleteStreamController = () => {\n // Delete streamController only when start, pull and\n // cancel callbacks are resolved, to avoid \"TypeError\".\n Promise.all([\n this.streamControllers[data.streamId].startCall,\n this.streamControllers[data.streamId].pullCall,\n this.streamControllers[data.streamId].cancelCall\n ].map(function(capability) {\n return capability && finalize(capability.promise);\n })).then(() => {\n delete this.streamControllers[data.streamId];\n });\n };\n\n switch (data.stream) {\n case 'start_complete':\n resolveOrReject(this.streamControllers[data.streamId].startCall,\n data.success, wrapReason(data.reason));\n break;\n case 'pull_complete':\n resolveOrReject(this.streamControllers[data.streamId].pullCall,\n data.success, wrapReason(data.reason));\n break;\n case 'pull':\n // Ignore any pull after close is called.\n if (!this.streamSinks[data.streamId]) {\n sendStreamResponse({ stream: 'pull_complete', success: true, });\n break;\n }\n // Pull increases the desiredSize property of sink,\n // so when it changes from negative to positive,\n // set ready property as resolved promise.\n if (this.streamSinks[data.streamId].desiredSize <= 0 &&\n data.desiredSize > 0) {\n this.streamSinks[data.streamId].sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n this.streamSinks[data.streamId].desiredSize = data.desiredSize;\n resolveCall(this.streamSinks[data.streamId].onPull).then(() => {\n sendStreamResponse({ stream: 'pull_complete', success: true, });\n }, (reason) => {\n sendStreamResponse({ stream: 'pull_complete',\n success: false, reason, });\n });\n break;\n case 'enqueue':\n assert(this.streamControllers[data.streamId],\n 'enqueue should have stream controller');\n if (!this.streamControllers[data.streamId].isClosed) {\n this.streamControllers[data.streamId].controller.enqueue(data.chunk);\n }\n break;\n case 'close':\n assert(this.streamControllers[data.streamId],\n 'close should have stream controller');\n if (this.streamControllers[data.streamId].isClosed) {\n break;\n }\n this.streamControllers[data.streamId].isClosed = true;\n this.streamControllers[data.streamId].controller.close();\n deleteStreamController();\n break;\n case 'error':\n assert(this.streamControllers[data.streamId],\n 'error should have stream controller');\n this.streamControllers[data.streamId].controller.\n error(wrapReason(data.reason));\n deleteStreamController();\n break;\n case 'cancel_complete':\n resolveOrReject(this.streamControllers[data.streamId].cancelCall,\n data.success, wrapReason(data.reason));\n deleteStreamController();\n break;\n case 'cancel':\n if (!this.streamSinks[data.streamId]) {\n break;\n }\n resolveCall(this.streamSinks[data.streamId].onCancel,\n [wrapReason(data.reason)]).then(() => {\n sendStreamResponse({ stream: 'cancel_complete', success: true, });\n }, (reason) => {\n sendStreamResponse({ stream: 'cancel_complete',\n success: false, reason, });\n });\n this.streamSinks[data.streamId].sinkCapability.\n reject(wrapReason(data.reason));\n this.streamSinks[data.streamId].isCancelled = true;\n delete this.streamSinks[data.streamId];\n break;\n default:\n throw new Error('Unexpected stream case');\n }\n },\n\n /**\n * Sends raw message to the comObj.\n * @private\n * @param {Object} message - Raw message.\n * @param transfers List of transfers/ArrayBuffers, or undefined.\n */\n postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n },\n\n destroy() {\n this.comObj.removeEventListener('message', this._onComObjOnMessage);\n },\n};\n\nexport {\n MessageHandler,\n};\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","module.exports = function(module) {\r\n\tif (!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif (!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '../shared/util';\nimport { SimpleXMLParser } from './xml_parser';\n\nclass Metadata {\n constructor(data) {\n assert(typeof data === 'string', 'Metadata: input is not a string');\n\n // Ghostscript may produce invalid metadata, so try to repair that first.\n data = this._repair(data);\n\n // Convert the string to an XML document.\n let parser = new SimpleXMLParser();\n const xmlDocument = parser.parseFromString(data);\n\n this._metadata = Object.create(null);\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n return data.replace(/>\\\\376\\\\377([^<]+)/g, function(all, codes) {\n let bytes = codes.replace(/\\\\([0-3])([0-7])([0-7])/g,\n function(code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n }).replace(/&(amp|apos|gt|lt|quot);/g, function(str, name) {\n switch (name) {\n case 'amp':\n return '&';\n case 'apos':\n return '\\'';\n case 'gt':\n return '>';\n case 'lt':\n return '<';\n case 'quot':\n return '\\\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n\n let chars = '';\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n let code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (code >= 32 && code < 127 && code !== 60 && code !== 62 &&\n code !== 38) {\n chars += String.fromCharCode(code);\n } else {\n chars += '&#x' + (0x10000 + code).toString(16).substring(1) + ';';\n }\n }\n\n return '>' + chars;\n });\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { // Wrapped in <xmpmeta>\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {\n rdf = rdf.nextSibling;\n }\n }\n\n let nodeName = rdf ? rdf.nodeName.toLowerCase() : null;\n if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {\n return;\n }\n\n let children = rdf.childNodes;\n for (let i = 0, ii = children.length; i < ii; i++) {\n let desc = children[i];\n if (desc.nodeName.toLowerCase() !== 'rdf:description') {\n continue;\n }\n\n for (let j = 0, jj = desc.childNodes.length; j < jj; j++) {\n if (desc.childNodes[j].nodeName.toLowerCase() !== '#text') {\n let entry = desc.childNodes[j];\n let name = entry.nodeName.toLowerCase();\n\n this._metadata[name] = entry.textContent.trim();\n }\n }\n }\n }\n\n get(name) {\n return this._metadata[name] || null;\n }\n\n getAll() {\n return this._metadata;\n }\n\n has(name) {\n return typeof this._metadata[name] !== 'undefined';\n }\n}\n\nexport {\n Metadata,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === ' ' || ch === '\\n' || ch === '\\r' || ch === '\\t';\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, function (all, entity) {\n if (entity.substring(0, 2) === '#x') {\n return String.fromCharCode(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === '#') {\n return String.fromCharCode(parseInt(entity.substring(1), 10));\n }\n switch (entity) {\n case 'lt':\n return '<';\n case 'gt':\n return '>';\n case 'amp':\n return '&';\n case 'quot':\n return '\\\"';\n }\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n let pos = start, name, attributes = [];\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (pos < s.length && !isWhitespace(s, pos) &&\n s[pos] !== '>' && s[pos] !== '/') {\n ++pos;\n }\n name = s.substring(start, pos);\n skipWs();\n while (pos < s.length && s[pos] !== '>' &&\n s[pos] !== '/' && s[pos] !== '?') {\n skipWs();\n let attrName = '', attrValue = '';\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '=') {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== '=') {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\\\"' && attrEndChar !== '\\'') {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue),\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start,\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start, name, value;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (pos < s.length && !isWhitespace(s, pos) &&\n s[pos] !== '>' && s[pos] !== '/') {\n ++pos;\n }\n name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== '?' || s[pos + 1] !== '>')) {\n ++pos;\n }\n value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start,\n };\n }\n\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === '<') {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case '/':\n ++j;\n q = s.indexOf('>', j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case '?':\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== '?>') {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case '!':\n if (s.substring(j + 1, j + 3) === '--') {\n q = s.indexOf('-->', j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === '[CDATA[') {\n q = s.indexOf(']]>', j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === 'DOCTYPE') {\n const q2 = s.indexOf('[', j + 8);\n let complexDoctype = false;\n q = s.indexOf('>', j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(']>', j + 8);\n if (q < 0) {\n this.onError(\n XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent =\n s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (s.substring(j + content.parsed,\n j + content.parsed + 2) === '/>') {\n isClosed = true;\n } else if (s.substring(j + content.parsed,\n j + content.parsed + 1) !== '>') {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== '<') {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) { }\n\n onComment(text) { }\n\n onCdata(text) { }\n\n onDoctype(doctypeContent) { }\n\n onText(text) { }\n\n onBeginElement(name, attributes, isEmpty) { }\n\n onEndElement(name) { }\n\n onError(code) { }\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n\n Object.defineProperty(this, 'parentNode', { value: null, writable: true, });\n }\n\n get firstChild() {\n return this.childNodes[0];\n }\n\n get nextSibling() {\n let index = this.parentNode.childNodes.indexOf(this);\n return this.parentNode.childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || '';\n }\n return this.childNodes.map(function(child) {\n return child.textContent;\n }).join('');\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor() {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined; // return undefined on error\n }\n\n // We should only have one root.\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined; // Return undefined if no root was found.\n }\n return { documentElement, };\n }\n\n onResolveEntity(name) {\n switch (name) {\n case 'apos':\n return '\\'';\n }\n return super.onResolveEntity(name);\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode('#text', text);\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode('#text', text);\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop();\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport {\n SimpleXMLParser,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability } from '../shared/util';\n\n /** @implements {IPDFStream} */\nvar PDFDataTransportStream = (function PDFDataTransportStreamClosure() {\n function PDFDataTransportStream(params, pdfDataRangeTransport) {\n assert(pdfDataRangeTransport);\n\n this._queuedChunks = [];\n var initialData = params.initialData;\n if (initialData && initialData.length > 0) {\n let buffer = new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk, });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded) => {\n this._onProgress({ loaded, });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener((chunk) => {\n this._onReceiveData({ chunk, });\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n PDFDataTransportStream.prototype = {\n _onReceiveData: function PDFDataTransportStream_onReceiveData(args) {\n let buffer = new Uint8Array(args.chunk).buffer;\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n var found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found);\n }\n },\n\n _onProgress: function PDFDataTransportStream_onDataProgress(evt) {\n if (this._rangeReaders.length > 0) {\n // Reporting to first range reader.\n var firstReader = this._rangeReaders[0];\n if (firstReader.onProgress) {\n firstReader.onProgress({ loaded: evt.loaded, });\n }\n }\n },\n\n _removeRangeReader:\n function PDFDataTransportStream_removeRangeReader(reader) {\n var i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n },\n\n getFullReader: function PDFDataTransportStream_getFullReader() {\n assert(!this._fullRequestReader);\n var queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks);\n },\n\n getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) {\n var reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n },\n\n cancelAllRequests:\n function PDFDataTransportStream_cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n var readers = this._rangeReaders.slice(0);\n readers.forEach(function (rangeReader) {\n rangeReader.cancel(reason);\n });\n this._pdfDataRangeTransport.abort();\n },\n };\n\n /** @implements {IPDFStreamReader} */\n function PDFDataTransportStreamReader(stream, queuedChunks) {\n this._stream = stream;\n this._done = false;\n this._filename = null;\n this._queuedChunks = queuedChunks || [];\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null; // not used\n }\n PDFDataTransportStreamReader.prototype = {\n _enqueue: function PDFDataTransportStreamReader_enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n return;\n }\n this._queuedChunks.push(chunk);\n },\n\n get headersReady() {\n return this._headersReady;\n },\n\n get filename() {\n return this._filename;\n },\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n },\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n },\n\n get contentLength() {\n return this._stream._contentLength;\n },\n\n async read() {\n if (this._queuedChunks.length > 0) {\n var chunk = this._queuedChunks.shift();\n return { value: chunk, done: false, };\n }\n if (this._done) {\n return { value: undefined, done: true, };\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFDataTransportStreamReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n },\n };\n\n /** @implements {IPDFStreamRangeReader} */\n function PDFDataTransportStreamRangeReader(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n PDFDataTransportStreamRangeReader.prototype = {\n _enqueue: function PDFDataTransportStreamRangeReader_enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n var requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false, });\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n },\n\n get isStreamingSupported() {\n return false;\n },\n\n async read() {\n if (this._queuedChunk) {\n let chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false, };\n }\n if (this._done) {\n return { value: undefined, done: true, };\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFDataTransportStreamRangeReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n this._stream._removeRangeReader(this);\n },\n };\n\n return PDFDataTransportStream;\n})();\n\nexport {\n PDFDataTransportStream,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-multi-str */\n\nimport { shadow } from '../shared/util';\n\nclass WebGLContext {\n constructor({ enable = false, }) {\n this._enabled = enable === true;\n }\n\n get isEnabled() {\n let enabled = this._enabled;\n if (enabled) {\n enabled = WebGLUtils.tryInitGL();\n }\n return shadow(this, 'isEnabled', enabled);\n }\n\n composeSMask({ layer, mask, properties, }) {\n return WebGLUtils.composeSMask(layer, mask, properties);\n }\n\n drawFigures({ width, height, backgroundColor, figures, context, }) {\n return WebGLUtils.drawFigures(width, height, backgroundColor, figures,\n context);\n }\n\n clear() {\n WebGLUtils.cleanup();\n }\n}\n\nvar WebGLUtils = (function WebGLUtilsClosure() {\n function loadShader(gl, code, shaderType) {\n var shader = gl.createShader(shaderType);\n gl.shaderSource(shader, code);\n gl.compileShader(shader);\n var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n if (!compiled) {\n var errorMsg = gl.getShaderInfoLog(shader);\n throw new Error('Error during shader compilation: ' + errorMsg);\n }\n return shader;\n }\n function createVertexShader(gl, code) {\n return loadShader(gl, code, gl.VERTEX_SHADER);\n }\n function createFragmentShader(gl, code) {\n return loadShader(gl, code, gl.FRAGMENT_SHADER);\n }\n function createProgram(gl, shaders) {\n var program = gl.createProgram();\n for (var i = 0, ii = shaders.length; i < ii; ++i) {\n gl.attachShader(program, shaders[i]);\n }\n gl.linkProgram(program);\n var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n if (!linked) {\n var errorMsg = gl.getProgramInfoLog(program);\n throw new Error('Error during program linking: ' + errorMsg);\n }\n return program;\n }\n function createTexture(gl, image, textureId) {\n gl.activeTexture(textureId);\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n // Set the parameters so we can render any size image.\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\n // Upload the image into the texture.\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n return texture;\n }\n\n var currentGL, currentCanvas;\n function generateGL() {\n if (currentGL) {\n return;\n }\n\n // The temporary canvas is used in the WebGL context.\n currentCanvas = document.createElement('canvas');\n currentGL = currentCanvas.getContext('webgl',\n { premultipliedalpha: false, });\n }\n\n var smaskVertexShaderCode = '\\\n attribute vec2 a_position; \\\n attribute vec2 a_texCoord; \\\n \\\n uniform vec2 u_resolution; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_texCoord = a_texCoord; \\\n } ';\n\n var smaskFragmentShaderCode = '\\\n precision mediump float; \\\n \\\n uniform vec4 u_backdrop; \\\n uniform int u_subtype; \\\n uniform sampler2D u_image; \\\n uniform sampler2D u_mask; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec4 imageColor = texture2D(u_image, v_texCoord); \\\n vec4 maskColor = texture2D(u_mask, v_texCoord); \\\n if (u_backdrop.a > 0.0) { \\\n maskColor.rgb = maskColor.rgb * maskColor.a + \\\n u_backdrop.rgb * (1.0 - maskColor.a); \\\n } \\\n float lum; \\\n if (u_subtype == 0) { \\\n lum = maskColor.a; \\\n } else { \\\n lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \\\n maskColor.b * 0.11; \\\n } \\\n imageColor.a *= lum; \\\n imageColor.rgb *= imageColor.a; \\\n gl_FragColor = imageColor; \\\n } ';\n\n var smaskCache = null;\n\n function initSmaskGL() {\n var canvas, gl;\n\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n\n // setup a GLSL program\n var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');\n cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');\n\n var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');\n var texLayerLocation = gl.getUniformLocation(program, 'u_image');\n var texMaskLocation = gl.getUniformLocation(program, 'u_mask');\n\n // provide texture coordinates for the rectangle.\n var texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n 0.0, 0.0,\n 1.0, 0.0,\n 0.0, 1.0,\n 0.0, 1.0,\n 1.0, 0.0,\n 1.0, 1.0]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(texCoordLocation);\n gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n\n gl.uniform1i(texLayerLocation, 0);\n gl.uniform1i(texMaskLocation, 1);\n\n smaskCache = cache;\n }\n\n function composeSMask(layer, mask, properties) {\n var width = layer.width, height = layer.height;\n\n if (!smaskCache) {\n initSmaskGL();\n }\n var cache = smaskCache, canvas = cache.canvas, gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n if (properties.backdrop) {\n gl.uniform4f(cache.resolutionLocation, properties.backdrop[0],\n properties.backdrop[1], properties.backdrop[2], 1);\n } else {\n gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n }\n gl.uniform1i(cache.subtypeLocation,\n properties.subtype === 'Luminosity' ? 1 : 0);\n\n // Create a textures\n var texture = createTexture(gl, layer, gl.TEXTURE0);\n var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n\n // Create a buffer and put a single clipspace rectangle in\n // it (2 triangles)\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n 0, 0,\n width, 0,\n 0, height,\n 0, height,\n width, 0,\n width, height]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n // draw\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n\n gl.flush();\n\n gl.deleteTexture(texture);\n gl.deleteTexture(maskTexture);\n gl.deleteBuffer(buffer);\n\n return canvas;\n }\n\n var figuresVertexShaderCode = '\\\n attribute vec2 a_position; \\\n attribute vec3 a_color; \\\n \\\n uniform vec2 u_resolution; \\\n uniform vec2 u_scale; \\\n uniform vec2 u_offset; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n vec2 position = (a_position + u_offset) * u_scale; \\\n vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_color = vec4(a_color / 255.0, 1.0); \\\n } ';\n\n var figuresFragmentShaderCode = '\\\n precision mediump float; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n gl_FragColor = v_color; \\\n } ';\n\n var figuresCache = null;\n\n function initFiguresGL() {\n var canvas, gl;\n\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n\n // setup a GLSL program\n var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');\n cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');\n cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n cache.colorLocation = gl.getAttribLocation(program, 'a_color');\n\n figuresCache = cache;\n }\n\n function drawFigures(width, height, backgroundColor, figures, context) {\n if (!figuresCache) {\n initFiguresGL();\n }\n var cache = figuresCache, canvas = cache.canvas, gl = cache.gl;\n\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n // count triangle points\n var count = 0;\n var i, ii, rows;\n for (i = 0, ii = figures.length; i < ii; i++) {\n switch (figures[i].type) {\n case 'lattice':\n rows = (figures[i].coords.length / figures[i].verticesPerRow) | 0;\n count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n break;\n case 'triangles':\n count += figures[i].coords.length;\n break;\n }\n }\n // transfer data\n var coords = new Float32Array(count * 2);\n var colors = new Uint8Array(count * 3);\n var coordsMap = context.coords, colorsMap = context.colors;\n var pIndex = 0, cIndex = 0;\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i], ps = figure.coords, cs = figure.colors;\n switch (figure.type) {\n case 'lattice':\n var cols = figure.verticesPerRow;\n rows = (ps.length / cols) | 0;\n for (var row = 1; row < rows; row++) {\n var offset = row * cols + 1;\n for (var col = 1; col < cols; col++, offset++) {\n coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n\n coords[pIndex + 6] = coords[pIndex + 2];\n coords[pIndex + 7] = coords[pIndex + 3];\n coords[pIndex + 8] = coords[pIndex + 4];\n coords[pIndex + 9] = coords[pIndex + 5];\n coords[pIndex + 10] = coordsMap[ps[offset]];\n coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n colors[cIndex + 9] = colors[cIndex + 3];\n colors[cIndex + 10] = colors[cIndex + 4];\n colors[cIndex + 11] = colors[cIndex + 5];\n colors[cIndex + 12] = colors[cIndex + 6];\n colors[cIndex + 13] = colors[cIndex + 7];\n colors[cIndex + 14] = colors[cIndex + 8];\n colors[cIndex + 15] = colorsMap[cs[offset]];\n colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n pIndex += 12;\n cIndex += 18;\n }\n }\n break;\n case 'triangles':\n for (var j = 0, jj = ps.length; j < jj; j++) {\n coords[pIndex] = coordsMap[ps[j]];\n coords[pIndex + 1] = coordsMap[ps[j] + 1];\n colors[cIndex] = colorsMap[cs[j]];\n colors[cIndex + 1] = colorsMap[cs[j] + 1];\n colors[cIndex + 2] = colorsMap[cs[j] + 2];\n pIndex += 2;\n cIndex += 3;\n }\n break;\n }\n }\n\n // draw\n if (backgroundColor) {\n gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255,\n backgroundColor[2] / 255, 1.0);\n } else {\n gl.clearColor(0, 0, 0, 0);\n }\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n var coordsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n var colorsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.colorLocation);\n gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false,\n 0, 0);\n\n gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n\n gl.drawArrays(gl.TRIANGLES, 0, count);\n\n gl.flush();\n\n gl.deleteBuffer(coordsBuffer);\n gl.deleteBuffer(colorsBuffer);\n\n return canvas;\n }\n\n return {\n tryInitGL() {\n try {\n generateGL();\n return !!currentGL;\n } catch (ex) { }\n return false;\n },\n\n composeSMask,\n\n drawFigures,\n\n cleanup() {\n if (smaskCache && smaskCache.canvas) {\n smaskCache.canvas.width = 0;\n smaskCache.canvas.height = 0;\n }\n if (figuresCache && figuresCache.canvas) {\n figuresCache.canvas.width = 0;\n figuresCache.canvas.height = 0;\n }\n smaskCache = null;\n figuresCache = null;\n },\n };\n})();\n\nexport {\n WebGLContext,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AbortException, createPromiseCapability, Util } from '../shared/util';\nimport globalScope from '../shared/global_scope';\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {TextContent} textContent - (optional) Text content to render\n * (the object is returned by the page's getTextContent() method).\n * @property {ReadableStream} textContentStream - (optional) Text content\n * stream to render (the stream is returned by the page's\n * streamTextContent() method).\n * @property {HTMLElement} container - HTML element that will contain text runs.\n * @property {PageViewport} viewport - The target viewport to properly\n * layout the text runs.\n * @property {Array} textDivs - (optional) HTML elements that are correspond\n * the text items of the textContent input. This is output and shall be\n * initially be set to empty array.\n * @property {Array} textContentItemsStr - (optional) Strings that correspond\n * the `str` property of the text items of textContent input. This is output\n * and shall be initially be set to empty array.\n * @property {number} timeout - (optional) Delay in milliseconds before\n * rendering of the text runs occurs.\n * @property {boolean} enhanceTextSelection - (optional) Whether to turn on the\n * text selection enhancement.\n */\nvar renderTextLayer = (function renderTextLayerClosure() {\n var MAX_TEXT_DIVS_TO_RENDER = 100000;\n\n var NonWhitespaceRegexp = /\\S/;\n\n function isAllWhitespace(str) {\n return !NonWhitespaceRegexp.test(str);\n }\n\n // Text layers may contain many thousands of divs, and using `styleBuf` avoids\n // creating many intermediate strings when building their 'style' properties.\n var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0,\n 'px; font-family: ', '', ';'];\n\n function appendText(task, geom, styles) {\n // Initialize all used properties to keep the caches monomorphic.\n var textDiv = document.createElement('div');\n var textDivProperties = {\n style: null,\n angle: 0,\n canvasWidth: 0,\n isWhitespace: false,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n };\n\n task._textDivs.push(textDiv);\n if (isAllWhitespace(geom.str)) {\n textDivProperties.isWhitespace = true;\n task._textDivProperties.set(textDiv, textDivProperties);\n return;\n }\n\n var tx = Util.transform(task._viewport.transform, geom.transform);\n var angle = Math.atan2(tx[1], tx[0]);\n var style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n var fontHeight = Math.sqrt((tx[2] * tx[2]) + (tx[3] * tx[3]));\n var fontAscent = fontHeight;\n if (style.ascent) {\n fontAscent = style.ascent * fontAscent;\n } else if (style.descent) {\n fontAscent = (1 + style.descent) * fontAscent;\n }\n\n var left;\n var top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + (fontAscent * Math.sin(angle));\n top = tx[5] - (fontAscent * Math.cos(angle));\n }\n styleBuf[1] = left;\n styleBuf[3] = top;\n styleBuf[5] = fontHeight;\n styleBuf[7] = style.fontFamily;\n textDivProperties.style = styleBuf.join('');\n textDiv.setAttribute('style', textDivProperties.style);\n\n textDiv.textContent = geom.str;\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n if (geom.str.length > 1) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection) {\n var angleCos = 1, angleSin = 0;\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n var divWidth = (style.vertical ? geom.height : geom.width) *\n task._viewport.scale;\n var divHeight = fontHeight;\n\n var m, b;\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m,\n });\n }\n }\n\n function render(task) {\n if (task._canceled) {\n return;\n }\n var textDivs = task._textDivs;\n var capability = task._capability;\n var textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (var i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n }\n\n function expand(task) {\n var bounds = task._bounds;\n var viewport = task._viewport;\n\n var expanded = expandBounds(viewport.width, viewport.height, bounds);\n for (var i = 0; i < expanded.length; i++) {\n var div = bounds[i].div;\n var divProperties = task._textDivProperties.get(div);\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n task._textDivProperties.set(div, divProperties);\n continue;\n }\n // Box is rotated -- trying to find padding so rotated div will not\n // exceed its expanded bounds.\n var e = expanded[i], b = bounds[i];\n var m = b.m, c = m[0], s = m[1];\n // Finding intersections with expanded box.\n var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n var ts = new Float64Array(64);\n points.forEach(function (p, i) {\n var t = Util.applyTransform(p, m);\n ts[i + 0] = c && (e.left - t[0]) / c;\n ts[i + 4] = s && (e.top - t[1]) / s;\n ts[i + 8] = c && (e.right - t[0]) / c;\n ts[i + 12] = s && (e.bottom - t[1]) / s;\n\n ts[i + 16] = s && (e.left - t[0]) / -s;\n ts[i + 20] = c && (e.top - t[1]) / c;\n ts[i + 24] = s && (e.right - t[0]) / -s;\n ts[i + 28] = c && (e.bottom - t[1]) / c;\n\n ts[i + 32] = c && (e.left - t[0]) / -c;\n ts[i + 36] = s && (e.top - t[1]) / -s;\n ts[i + 40] = c && (e.right - t[0]) / -c;\n ts[i + 44] = s && (e.bottom - t[1]) / -s;\n\n ts[i + 48] = s && (e.left - t[0]) / s;\n ts[i + 52] = c && (e.top - t[1]) / -c;\n ts[i + 56] = s && (e.right - t[0]) / s;\n ts[i + 60] = c && (e.bottom - t[1]) / -c;\n });\n var findPositiveMin = function (ts, offset, count) {\n var result = 0;\n for (var i = 0; i < count; i++) {\n var t = ts[offset++];\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n return result;\n };\n // Not based on math, but to simplify calculations, using cos and sin\n // absolute values to not exceed the box (it can but insignificantly).\n var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n task._textDivProperties.set(div, divProperties);\n }\n }\n\n function expandBounds(width, height, boxes) {\n var bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined,\n };\n });\n expandBoundsLTR(width, bounds);\n var expanded = new Array(boxes.length);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0,\n };\n });\n\n // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n // array and objects.\n boxes.map(function (box, i) {\n var e = expanded[i], b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n });\n return expanded;\n }\n\n function expandBoundsLTR(width, bounds) {\n // Sorting by x1 coordinate and walk by the bounds in the same order.\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n\n // First we see on the horizon is a fake boundary.\n var fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0,\n };\n var horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary,\n }];\n\n bounds.forEach(function (boundary) {\n // Searching for the affected part of horizon.\n // TODO red-black tree or simple binary search\n var i = 0;\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n var j = horizon.length - 1;\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n var horizonPart, affectedBoundary;\n var q, k, maxXNew = -Infinity;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var xNew;\n if (affectedBoundary.x2 > boundary.x1) {\n // In the middle of the previous element, new x shall be at the\n // boundary start. Extending if further if the affected boundary\n // placed on top of the current one.\n xNew = affectedBoundary.index > boundary.index ?\n affectedBoundary.x1New : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n // We have some space in between, new x in middle will be a fair\n // choice.\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n // Affected boundary has x2new set, using it as new x.\n xNew = affectedBoundary.x2New;\n }\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n // Set new x1 for current boundary.\n boundary.x1New = maxXNew;\n\n // Adjusts new x2 for the affected boundaries.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n // Was not set yet, choosing new x if possible.\n if (affectedBoundary.x2 > boundary.x1) {\n // Current and affected boundaries intersect. If affected boundary\n // is placed on top of the current, shrinking the affected.\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n // Affected boundary is touching new x, pushing it back.\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n // Fixing the horizon.\n var changedHorizon = [], lastBoundary = null;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n // Checking which boundary will be visible.\n var useBoundary = affectedBoundary.x2 > boundary.x2 ?\n affectedBoundary : boundary;\n if (lastBoundary === useBoundary) {\n // Merging with previous.\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary,\n });\n lastBoundary = useBoundary;\n }\n }\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary,\n });\n }\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary,\n });\n }\n\n // Set x2 new of boundary that is no longer visible (see overlapping case\n // above).\n // TODO more efficient, e.g. via reference counting.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n var used = false;\n for (k = i - 1; !used && k >= 0 &&\n horizon[k].start >= affectedBoundary.y1; k--) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = j + 1; !used && k < horizon.length &&\n horizon[k].end <= affectedBoundary.y2; k++) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon,\n [i, j - i + 1].concat(changedHorizon));\n });\n\n // Set new x2 for all unset boundaries.\n horizon.forEach(function (horizonPart) {\n var affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n });\n }\n\n /**\n * Text layer rendering task.\n *\n * @param {TextContent} textContent\n * @param {HTMLElement} container\n * @param {PageViewport} viewport\n * @param {Array} textDivs\n * @param {boolean} enhanceTextSelection\n * @private\n */\n function TextLayerRenderTask({ textContent, textContentStream, container,\n viewport, textDivs, textContentItemsStr,\n enhanceTextSelection, }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!(globalScope.FontInspector &&\n globalScope.FontInspector.enabled);\n\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = createPromiseCapability();\n this._renderTimer = null;\n this._bounds = [];\n }\n TextLayerRenderTask.prototype = {\n get promise() {\n return this._capability.promise;\n },\n\n cancel: function TextLayer_cancel() {\n if (this._reader) {\n this._reader.cancel(new AbortException('text layer task cancelled'));\n this._reader = null;\n }\n this._canceled = true;\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n this._capability.reject('canceled');\n },\n\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n this._textContentItemsStr.push(items[i].str);\n appendText(this, items[i], styleCache);\n }\n },\n\n _layoutText(textDiv) {\n let textLayerFrag = this._container;\n\n let textDivProperties = this._textDivProperties.get(textDiv);\n if (textDivProperties.isWhitespace) {\n return;\n }\n\n let fontSize = textDiv.style.fontSize;\n let fontFamily = textDiv.style.fontFamily;\n\n // Only build font string and set to context if different from last.\n if (fontSize !== this._layoutTextLastFontSize ||\n fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = fontSize + ' ' + fontFamily;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n\n let width = this._layoutTextCtx.measureText(textDiv.textContent).width;\n\n let transform = '';\n if (textDivProperties.canvasWidth !== 0 && width > 0) {\n textDivProperties.scale = textDivProperties.canvasWidth / width;\n transform = 'scaleX(' + textDivProperties.scale + ')';\n }\n if (textDivProperties.angle !== 0) {\n transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform;\n }\n if (transform !== '') {\n textDivProperties.originalTransform = transform;\n textDiv.style.transform = transform;\n }\n this._textDivProperties.set(textDiv, textDivProperties);\n textLayerFrag.appendChild(textDiv);\n },\n\n _render: function TextLayer_render(timeout) {\n let capability = createPromiseCapability();\n let styleCache = Object.create(null);\n\n // The temporary canvas is used to measure text length in the DOM.\n let canvas = document.createElement('canvas');\n if (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('FIREFOX || MOZCENTRAL || GENERIC')) {\n canvas.mozOpaque = true;\n }\n this._layoutTextCtx = canvas.getContext('2d', { alpha: false, });\n\n if (this._textContent) {\n let textItems = this._textContent.items;\n let textStyles = this._textContent.styles;\n this._processItems(textItems, textStyles);\n capability.resolve();\n } else if (this._textContentStream) {\n let pump = () => {\n this._reader.read().then(({ value, done, }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\"' +\n ' parameters specified.');\n }\n\n capability.promise.then(() => {\n styleCache = null;\n if (!timeout) { // Render right away\n render(this);\n } else { // Schedule\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n },\n\n expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n var div = this._textDivs[i];\n var divProperties = this._textDivProperties.get(div);\n\n if (divProperties.isWhitespace) {\n continue;\n }\n if (expandDivs) {\n var transform = '', padding = '';\n\n if (divProperties.scale !== 1) {\n transform = 'scaleX(' + divProperties.scale + ')';\n }\n if (divProperties.angle !== 0) {\n transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;\n }\n if (divProperties.paddingLeft !== 0) {\n padding += ' padding-left: ' +\n (divProperties.paddingLeft / divProperties.scale) + 'px;';\n transform += ' translateX(' +\n (-divProperties.paddingLeft / divProperties.scale) + 'px)';\n }\n if (divProperties.paddingTop !== 0) {\n padding += ' padding-top: ' + divProperties.paddingTop + 'px;';\n transform += ' translateY(' + (-divProperties.paddingTop) + 'px)';\n }\n if (divProperties.paddingRight !== 0) {\n padding += ' padding-right: ' +\n (divProperties.paddingRight / divProperties.scale) + 'px;';\n }\n if (divProperties.paddingBottom !== 0) {\n padding += ' padding-bottom: ' +\n divProperties.paddingBottom + 'px;';\n }\n\n if (padding !== '') {\n div.setAttribute('style', divProperties.style + padding);\n }\n if (transform !== '') {\n div.style.transform = transform;\n }\n } else {\n div.style.padding = 0;\n div.style.transform = divProperties.originalTransform || '';\n }\n }\n },\n };\n\n /**\n * Starts rendering of the text layer.\n *\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\n function renderTextLayer(renderParameters) {\n var task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection,\n });\n task._render(renderParameters.timeout);\n return task;\n }\n\n return renderTextLayer;\n})();\n\nexport {\n renderTextLayer,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n addLinkAttributes, DOMSVGFactory, getFilenameFromUrl, LinkTarget\n} from './dom_utils';\nimport {\n AnnotationBorderStyleType, AnnotationType, stringToPDFString, unreachable,\n Util, warn\n} from '../shared/util';\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPage} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {DownloadManager} downloadManager\n * @property {string} imageResourcesPath - (optional) Path for image resources,\n * mainly for annotation icons. Include trailing slash.\n * @property {boolean} renderInteractiveForms\n * @property {Object} svgFactory\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n let subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n let fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case 'Tx':\n return new TextWidgetAnnotationElement(parameters);\n case 'Btn':\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case 'Ch':\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n constructor(parameters, isRenderable = false, ignoreBorder = false) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderInteractiveForms = parameters.renderInteractiveForms;\n this.svgFactory = parameters.svgFactory;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement}\n */\n _createContainer(ignoreBorder = false) {\n let data = this.data, page = this.page, viewport = this.viewport;\n let container = document.createElement('section');\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n\n container.setAttribute('data-annotation-id', data.id);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n let rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1]\n ]);\n\n container.style.transform = 'matrix(' + viewport.transform.join(',') + ')';\n container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px';\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = data.borderStyle.width + 'px';\n if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {\n // Underline styles only have a bottom border, so we do not need\n // to adjust for all borders. This yields a similar result as\n // Adobe Acrobat/Reader.\n width = width - 2 * data.borderStyle.width;\n height = height - 2 * data.borderStyle.width;\n }\n\n let horizontalRadius = data.borderStyle.horizontalCornerRadius;\n let verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n let radius = horizontalRadius + 'px / ' + verticalRadius + 'px';\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = 'solid';\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = 'dashed';\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn('Unimplemented border style: beveled');\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn('Unimplemented border style: inset');\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = 'solid';\n break;\n\n default:\n break;\n }\n\n if (data.color) {\n container.style.borderColor = Util.makeCssRgb(data.color[0] | 0,\n data.color[1] | 0,\n data.color[2] | 0);\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = rect[0] + 'px';\n container.style.top = rect[1] + 'px';\n\n container.style.width = width + 'px';\n container.style.height = height + 'px';\n\n return container;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @param {HTMLSectionElement} container\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup(container, trigger, data) {\n // If no trigger element is specified, create it.\n if (!trigger) {\n trigger = document.createElement('div');\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n let popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n title: data.title,\n contents: data.contents,\n hideWrapper: true,\n });\n let popup = popupElement.render();\n\n // Position the popup next to the annotation's container.\n popup.style.left = container.style.width;\n\n container.appendChild(popup);\n }\n\n /**\n * Render the annotation's HTML element in the empty container.\n *\n * @public\n * @memberof AnnotationElement\n */\n render() {\n unreachable('Abstract method `AnnotationElement.render` called');\n }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.url || parameters.data.dest ||\n parameters.data.action);\n super(parameters, isRenderable);\n }\n\n /**\n * Render the link annotation's HTML element in the empty container.\n *\n * @public\n * @memberof LinkAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'linkAnnotation';\n\n let { data, linkService, } = this;\n let link = document.createElement('a');\n\n addLinkAttributes(link, {\n url: data.url,\n target: (data.newWindow ?\n LinkTarget.BLANK : linkService.externalLinkTarget),\n rel: linkService.externalLinkRel,\n });\n\n if (!data.url) {\n if (data.action) {\n this._bindNamedAction(link, data.action);\n } else {\n this._bindLink(link, data.dest);\n }\n }\n\n this.container.appendChild(link);\n return this.container;\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.navigateTo(destination);\n }\n return false;\n };\n if (destination) {\n link.className = 'internalLink';\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl('');\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n link.className = 'internalLink';\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable);\n }\n\n /**\n * Render the text annotation's HTML element in the empty container.\n *\n * @public\n * @memberof TextAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'textAnnotation';\n\n let image = document.createElement('img');\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src = this.imageResourcesPath + 'annotation-' +\n this.data.name.toLowerCase() + '.svg';\n image.alt = '[{{type}} Annotation]';\n image.dataset.l10nId = 'text_annotation_type';\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name, });\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n /**\n * Render the widget annotation's HTML element in the empty container.\n *\n * @public\n * @memberof WidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n // Show only the container for unsupported field types.\n return this.container;\n }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n let isRenderable = parameters.renderInteractiveForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, isRenderable);\n }\n\n /**\n * Render the text widget annotation's HTML element in the empty container.\n *\n * @public\n * @memberof TextWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n const TEXT_ALIGNMENT = ['left', 'center', 'right'];\n\n this.container.className = 'textWidgetAnnotation';\n\n let element = null;\n if (this.renderInteractiveForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n if (this.data.multiLine) {\n element = document.createElement('textarea');\n element.textContent = this.data.fieldValue;\n } else {\n element = document.createElement('input');\n element.type = 'text';\n element.setAttribute('value', this.data.fieldValue);\n }\n\n element.disabled = this.data.readOnly;\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n let fieldWidth = this.data.rect[2] - this.data.rect[0];\n let combWidth = fieldWidth / this.data.maxLen;\n\n element.classList.add('comb');\n element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';\n }\n } else {\n element = document.createElement('div');\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = 'middle';\n element.style.display = 'table-cell';\n\n let font = null;\n if (this.data.fontRefName) {\n font = this.page.commonObjs.getData(this.data.fontRefName);\n }\n this._setTextStyle(element, font);\n }\n\n if (this.data.textAlignment !== null) {\n element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @param {Object} font\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element, font) {\n // TODO: This duplicates some of the logic in CanvasGraphics.setFont().\n let style = element.style;\n style.fontSize = this.data.fontSize + 'px';\n style.direction = (this.data.fontDirection < 0 ? 'rtl' : 'ltr');\n\n if (!font) {\n return;\n }\n\n style.fontWeight = (font.black ?\n (font.bold ? '900' : 'bold') :\n (font.bold ? 'bold' : 'normal'));\n style.fontStyle = (font.italic ? 'italic' : 'normal');\n\n // Use a reasonable default font if the font doesn't specify a fallback.\n let fontFamily = font.loadedName ? '\"' + font.loadedName + '\", ' : '';\n let fallbackName = font.fallbackName || 'Helvetica, sans-serif';\n style.fontFamily = fontFamily + fallbackName;\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n /**\n * Render the checkbox widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof CheckboxWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'buttonWidgetAnnotation checkBox';\n\n let element = document.createElement('input');\n element.disabled = this.data.readOnly;\n element.type = 'checkbox';\n if (this.data.fieldValue && this.data.fieldValue !== 'Off') {\n element.setAttribute('checked', true);\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n /**\n * Render the radio button widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof RadioButtonWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'buttonWidgetAnnotation radioButton';\n\n let element = document.createElement('input');\n element.disabled = this.data.readOnly;\n element.type = 'radio';\n element.name = this.data.fieldName;\n if (this.data.fieldValue === this.data.buttonValue) {\n element.setAttribute('checked', true);\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n /**\n * Render the push button widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof PushButtonWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n let container = super.render();\n container.className = 'buttonWidgetAnnotation pushButton';\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n /**\n * Render the choice widget annotation's HTML element in the empty\n * container.\n *\n * @public\n * @memberof ChoiceWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'choiceWidgetAnnotation';\n\n let selectElement = document.createElement('select');\n selectElement.disabled = this.data.readOnly;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n // Insert the options into the choice field.\n for (let i = 0, ii = this.data.options.length; i < ii; i++) {\n let option = this.data.options[i];\n\n let optionElement = document.createElement('option');\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n\n if (this.data.fieldValue.includes(option.displayValue)) {\n optionElement.setAttribute('selected', true);\n }\n\n selectElement.appendChild(optionElement);\n }\n\n this.container.appendChild(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable);\n }\n\n /**\n * Render the popup annotation's HTML element in the empty container.\n *\n * @public\n * @memberof PopupAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n // Do not render popup annotations for parent elements with these types as\n // they create the popups themselves (because of custom trigger divs).\n const IGNORE_TYPES = [\n 'Line',\n 'Square',\n 'Circle',\n 'PolyLine',\n 'Polygon',\n 'Ink',\n ];\n\n this.container.className = 'popupAnnotation';\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n let selector = '[data-annotation-id=\"' + this.data.parentId + '\"]';\n let parentElement = this.layer.querySelector(selector);\n if (!parentElement) {\n return this.container;\n }\n\n let popup = new PopupElement({\n container: this.container,\n trigger: parentElement,\n color: this.data.color,\n title: this.data.title,\n contents: this.data.contents,\n });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n let parentLeft = parseFloat(parentElement.style.left);\n let parentWidth = parseFloat(parentElement.style.width);\n this.container.style.transformOrigin =\n -(parentLeft + parentWidth) + 'px -' + parentElement.style.top;\n this.container.style.left = (parentLeft + parentWidth) + 'px';\n\n this.container.appendChild(popup.render());\n return this.container;\n }\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.title = parameters.title;\n this.contents = parameters.contents;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n /**\n * Render the popup's HTML element.\n *\n * @public\n * @memberof PopupElement\n * @returns {HTMLSectionElement}\n */\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n\n let wrapper = document.createElement('div');\n wrapper.className = 'popupWrapper';\n\n // For Popup annotations we hide the entire section because it contains\n // only the popup. However, for Text annotations without a separate Popup\n // annotation, we cannot hide the entire container as the image would\n // disappear too. In that special case, hiding the wrapper suffices.\n this.hideElement = (this.hideWrapper ? wrapper : this.container);\n this.hideElement.setAttribute('hidden', true);\n\n let popup = document.createElement('div');\n popup.className = 'popup';\n\n let color = this.color;\n if (color) {\n // Enlighten the color.\n let r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n let g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n let b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0);\n }\n\n let contents = this._formatContents(this.contents);\n let title = document.createElement('h1');\n title.textContent = this.title;\n\n // Attach the event listeners to the trigger element.\n this.trigger.addEventListener('click', this._toggle.bind(this));\n this.trigger.addEventListener('mouseover', this._show.bind(this, false));\n this.trigger.addEventListener('mouseout', this._hide.bind(this, false));\n popup.addEventListener('click', this._hide.bind(this, true));\n\n popup.appendChild(title);\n popup.appendChild(contents);\n wrapper.appendChild(popup);\n return wrapper;\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {string} contents\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents(contents) {\n let p = document.createElement('p');\n let lines = contents.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n let line = lines[i];\n p.appendChild(document.createTextNode(line));\n if (i < (ii - 1)) {\n p.appendChild(document.createElement('br'));\n }\n }\n return p;\n }\n\n /**\n * Toggle the visibility of the popup.\n *\n * @private\n * @memberof PopupElement\n */\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n /**\n * Show the popup.\n *\n * @private\n * @param {boolean} pin\n * @memberof PopupElement\n */\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hasAttribute('hidden')) {\n this.hideElement.removeAttribute('hidden');\n this.container.style.zIndex += 1;\n }\n }\n\n /**\n * Hide the popup.\n *\n * @private\n * @param {boolean} unpin\n * @memberof PopupElement\n */\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {\n this.hideElement.setAttribute('hidden', true);\n this.container.style.zIndex -= 1;\n }\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the line annotation's HTML element in the empty container.\n *\n * @public\n * @memberof LineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'lineAnnotation';\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n let data = this.data;\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n let svg = this.svgFactory.create(width, height);\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n let line = this.svgFactory.createElement('svg:line');\n line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute('stroke-width', data.borderStyle.width);\n line.setAttribute('stroke', 'transparent');\n\n svg.appendChild(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n this._createPopup(this.container, line, data);\n\n return this.container;\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the square annotation's HTML element in the empty container.\n *\n * @public\n * @memberof SquareAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'squareAnnotation';\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n let data = this.data;\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n let svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n let borderWidth = data.borderStyle.width;\n let square = this.svgFactory.createElement('svg:rect');\n square.setAttribute('x', borderWidth / 2);\n square.setAttribute('y', borderWidth / 2);\n square.setAttribute('width', width - borderWidth);\n square.setAttribute('height', height - borderWidth);\n square.setAttribute('stroke-width', borderWidth);\n square.setAttribute('stroke', 'transparent');\n square.setAttribute('fill', 'none');\n\n svg.appendChild(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n this._createPopup(this.container, square, data);\n\n return this.container;\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the circle annotation's HTML element in the empty container.\n *\n * @public\n * @memberof CircleAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'circleAnnotation';\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n let data = this.data;\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n let svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n let borderWidth = data.borderStyle.width;\n let circle = this.svgFactory.createElement('svg:ellipse');\n circle.setAttribute('cx', width / 2);\n circle.setAttribute('cy', height / 2);\n circle.setAttribute('rx', (width / 2) - (borderWidth / 2));\n circle.setAttribute('ry', (height / 2) - (borderWidth / 2));\n circle.setAttribute('stroke-width', borderWidth);\n circle.setAttribute('stroke', 'transparent');\n circle.setAttribute('fill', 'none');\n\n svg.appendChild(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n this._createPopup(this.container, circle, data);\n\n return this.container;\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n\n this.containerClassName = 'polylineAnnotation';\n this.svgElementName = 'svg:polyline';\n }\n\n /**\n * Render the polyline annotation's HTML element in the empty container.\n *\n * @public\n * @memberof PolylineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n let data = this.data;\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n let svg = this.svgFactory.create(width, height);\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let vertices = data.vertices;\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i++) {\n let x = vertices[i].x - data.rect[0];\n let y = data.rect[3] - vertices[i].y;\n points.push(x + ',' + y);\n }\n points = points.join(' ');\n\n let borderWidth = data.borderStyle.width;\n let polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute('points', points);\n polyline.setAttribute('stroke-width', borderWidth);\n polyline.setAttribute('stroke', 'transparent');\n polyline.setAttribute('fill', 'none');\n\n svg.appendChild(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(this.container, polyline, data);\n\n return this.container;\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = 'polygonAnnotation';\n this.svgElementName = 'svg:polygon';\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n\n this.containerClassName = 'inkAnnotation';\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = 'svg:polyline';\n }\n\n /**\n * Render the ink annotation's HTML element in the empty container.\n *\n * @public\n * @memberof InkAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n let data = this.data;\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n let svg = this.svgFactory.create(width, height);\n\n let inkLists = data.inkLists;\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n let inkList = inkLists[i];\n let points = [];\n\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n for (let j = 0, jj = inkList.length; j < jj; j++) {\n let x = inkList[j].x - data.rect[0];\n let y = data.rect[3] - inkList[j].y;\n points.push(x + ',' + y);\n }\n\n points = points.join(' ');\n\n let borderWidth = data.borderStyle.width;\n let polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute('points', points);\n polyline.setAttribute('stroke-width', borderWidth);\n polyline.setAttribute('stroke', 'transparent');\n polyline.setAttribute('fill', 'none');\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(this.container, polyline, data);\n\n svg.appendChild(polyline);\n }\n\n this.container.append(svg);\n\n return this.container;\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the highlight annotation's HTML element in the empty container.\n *\n * @public\n * @memberof HighlightAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'highlightAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the underline annotation's HTML element in the empty container.\n *\n * @public\n * @memberof UnderlineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'underlineAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the squiggly annotation's HTML element in the empty container.\n *\n * @public\n * @memberof SquigglyAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'squigglyAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the strikeout annotation's HTML element in the empty container.\n *\n * @public\n * @memberof StrikeOutAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'strikeoutAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n let isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the stamp annotation's HTML element in the empty container.\n *\n * @public\n * @memberof StampAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'stampAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, /* isRenderable = */ true);\n\n const { filename, content, } = this.data.file;\n this.filename = getFilenameFromUrl(filename);\n this.content = content;\n\n if (this.linkService.eventBus) {\n this.linkService.eventBus.dispatch('fileattachmentannotation', {\n source: this,\n id: stringToPDFString(filename),\n filename,\n content,\n });\n }\n }\n\n /**\n * Render the file attachment annotation's HTML element in the empty\n * container.\n *\n * @public\n * @memberof FileAttachmentAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = 'fileAttachmentAnnotation';\n\n let trigger = document.createElement('div');\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener('dblclick', this._download.bind(this));\n\n if (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n this._createPopup(this.container, trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download() {\n if (!this.downloadManager) {\n warn('Download cannot be started due to unavailable download manager');\n return;\n }\n this.downloadManager.downloadData(this.content, this.filename, '');\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPage} page\n * @property {IPDFLinkService} linkService\n * @property {DownloadManager} downloadManager\n * @property {string} imageResourcesPath - (optional) Path for image resources,\n * mainly for annotation icons. Include trailing slash.\n * @property {boolean} renderInteractiveForms\n */\n\nclass AnnotationLayer {\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static render(parameters) {\n for (let i = 0, ii = parameters.annotations.length; i < ii; i++) {\n let data = parameters.annotations[i];\n if (!data) {\n continue;\n }\n let element = AnnotationElementFactory.create({\n data,\n layer: parameters.div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || '',\n renderInteractiveForms: parameters.renderInteractiveForms || false,\n svgFactory: new DOMSVGFactory(),\n });\n if (element.isRenderable) {\n parameters.div.appendChild(element.render());\n }\n }\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static update(parameters) {\n for (let i = 0, ii = parameters.annotations.length; i < ii; i++) {\n let data = parameters.annotations[i];\n let element = parameters.div.querySelector(\n '[data-annotation-id=\"' + data.id + '\"]');\n if (element) {\n element.style.transform =\n 'matrix(' + parameters.viewport.transform.join(',') + ')';\n }\n }\n parameters.div.removeAttribute('hidden');\n }\n}\n\nexport {\n AnnotationLayer,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n createObjectURL, FONT_IDENTITY_MATRIX, IDENTITY_MATRIX, ImageKind, isNum, OPS,\n TextRenderingMode, Util, warn\n} from '../shared/util';\nimport { DOMSVGFactory } from './dom_utils';\nimport isNodeJS from '../shared/is_node';\n\nvar SVGGraphics = function() {\n throw new Error('Not implemented: SVGGraphics');\n};\n\nif (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n\nvar SVG_DEFAULTS = {\n fontStyle: 'normal',\n fontWeight: 'normal',\n fillColor: '#000000',\n};\n\nvar convertImgDataToPng = (function convertImgDataToPngClosure() {\n var PNG_HEADER =\n new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n\n var CHUNK_WRAPPER_SIZE = 12;\n\n var crcTable = new Int32Array(256);\n for (var i = 0; i < 256; i++) {\n var c = i;\n for (var h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedB88320 ^ ((c >> 1) & 0x7fffffff);\n } else {\n c = (c >> 1) & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n var crc = -1;\n for (var i = start; i < end; i++) {\n var a = (crc ^ data[i]) & 0xff;\n var b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n var p = offset;\n var len = body.length;\n\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n var crc = crc32(data, offset + 4, p);\n\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n var a = 1;\n var b = 0;\n for (var i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS()) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the canvas\n // API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n var input;\n // eslint-disable-next-line no-undef\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n // eslint-disable-next-line no-undef\n input = new Buffer(literals);\n }\n var output = __non_webpack_require__('zlib')\n .deflateSync(input, { level: 9, });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n var len = literals.length;\n var maxBlockLength = 0xFFFF;\n\n var deflateBlocks = Math.ceil(len / maxBlockLength);\n var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n var pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n var pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = (~len & 0xffff) & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n var adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n var width = imgData.width;\n var height = imgData.height;\n var bitDepth, colorType, lineSize;\n var bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error('invalid format');\n }\n\n // prefix every row with predictor 0\n var literals = new Uint8Array((1 + lineSize) * height);\n var offsetLiterals = 0, offsetBytes = 0;\n var y, i;\n for (y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n // inverting for image masks\n offsetLiterals = 0;\n for (y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xFF;\n }\n }\n }\n\n var ihdr = new Uint8Array([\n width >> 24 & 0xff,\n width >> 16 & 0xff,\n width >> 8 & 0xff,\n width & 0xff,\n height >> 24 & 0xff,\n height >> 16 & 0xff,\n height >> 8 & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00 // interlace method\n ]);\n\n var idat = deflateSync(literals);\n\n // PNG will consists: header, IHDR+data, IDAT+data, and IEND.\n var pngLength = PNG_HEADER.length + (CHUNK_WRAPPER_SIZE * 3) +\n ihdr.length + idat.length;\n var data = new Uint8Array(pngLength);\n var offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk('IHDR', ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk('IDATA', idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk('IEND', new Uint8Array(0), data, offset);\n\n return createObjectURL(data, 'image/png', forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n var kind = (imgData.kind === undefined ?\n ImageKind.GRAYSCALE_1BPP : imgData.kind);\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n})();\n\nvar SVGExtraState = (function SVGExtraStateClosure() {\n function SVGExtraState() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = TextRenderingMode.FILL;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = '#000000';\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = '';\n this.lineCap = '';\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = '';\n }\n\n SVGExtraState.prototype = {\n clone: function SVGExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n },\n };\n return SVGExtraState;\n})();\n\nSVGGraphics = (function SVGGraphicsClosure() {\n function opListToTree(opList) {\n var opTree = [];\n var tmp = [];\n var opListLen = opList.length;\n\n for (var x = 0; x < opListLen; x++) {\n if (opList[x].fn === 'save') {\n opTree.push({ 'fnId': 92, 'fn': 'group', 'items': [], });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opList[x].fn === 'restore') {\n opTree = tmp.pop();\n } else {\n opTree.push(opList[x]);\n }\n }\n return opTree;\n }\n\n /**\n * Formats float number.\n * @param value {number} number to format.\n * @returns {string}\n */\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n var s = value.toFixed(10);\n var i = s.length - 1;\n if (s[i] !== '0') {\n return s;\n }\n // removing trailing zeros\n do {\n i--;\n } while (s[i] === '0');\n return s.substring(0, s[i] === '.' ? i : i + 1);\n }\n\n /**\n * Formats transform matrix. The standard rotation, scale and translate\n * matrices are replaced by their shorter forms, and for identity matrix\n * returns empty string to save the memory.\n * @param m {Array} matrix to format.\n * @returns {string}\n */\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return '';\n }\n return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n var a = Math.acos(m[0]) * 180 / Math.PI;\n return 'rotate(' + pf(a) + ')';\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n }\n }\n return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' +\n pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n }\n\n function SVGGraphics(commonObjs, objs, forceDataSchema) {\n this.svgFactory = new DOMSVGFactory();\n\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n }\n\n var XML_NS = 'http://www.w3.org/XML/1998/namespace';\n var XLINK_NS = 'http://www.w3.org/1999/xlink';\n var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n var clipCount = 0;\n var maskCount = 0;\n\n SVGGraphics.prototype = {\n save: function SVGGraphics_save() {\n this.transformStack.push(this.transformMatrix);\n var old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n },\n\n restore: function SVGGraphics_restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n\n this.pendingClip = null;\n this.tgrp = null;\n },\n\n group: function SVGGraphics_group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n },\n\n loadDependencies: function SVGGraphics_loadDependencies(operatorList) {\n var fnArray = operatorList.fnArray;\n var fnArrayLen = fnArray.length;\n var argsArray = operatorList.argsArray;\n\n for (var i = 0; i < fnArrayLen; i++) {\n if (OPS.dependency === fnArray[i]) {\n var deps = argsArray[i];\n for (var n = 0, nn = deps.length; n < nn; n++) {\n var obj = deps[n];\n var common = obj.substring(0, 2) === 'g_';\n var promise;\n if (common) {\n promise = new Promise((resolve) => {\n this.commonObjs.get(obj, resolve);\n });\n } else {\n promise = new Promise((resolve) => {\n this.objs.get(obj, resolve);\n });\n }\n this.current.dependencies.push(promise);\n }\n }\n }\n return Promise.all(this.current.dependencies);\n },\n\n transform: function SVGGraphics_transform(a, b, c, d, e, f) {\n var transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(this.transformMatrix,\n transformMatrix);\n this.tgrp = null;\n },\n\n getSVG: function SVGGraphics_getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n var svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n var opTree = this.convertOpList(operatorList);\n this.executeOpTree(opTree);\n return svgElement;\n });\n },\n\n convertOpList: function SVGGraphics_convertOpList(operatorList) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var fnArrayLen = fnArray.length;\n var REVOPS = [];\n var opList = [];\n\n for (var op in OPS) {\n REVOPS[OPS[op]] = op;\n }\n\n for (var x = 0; x < fnArrayLen; x++) {\n var fnId = fnArray[x];\n opList.push({\n 'fnId': fnId,\n 'fn': REVOPS[fnId],\n 'args': argsArray[x],\n });\n }\n return opListToTree(opList);\n },\n\n executeOpTree: function SVGGraphics_executeOpTree(opTree) {\n var opTreeLen = opTree.length;\n for (var x = 0; x < opTreeLen; x++) {\n var fn = opTree[x].fn;\n var fnId = opTree[x].fnId;\n var args = opTree[x].args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.dependency:\n // Handled in loadDependencies, warning should not be thrown\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2],\n args[3], args[4], args[5]);\n break;\n case OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip('nonzero');\n break;\n case OPS.eoClip:\n this.clip('evenodd');\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintJpegXObject:\n this.paintJpegXObject(args[0], args[1], args[2]);\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(args[0], args[1], args[2], args[3],\n args[4], args[5]);\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTree[x].items);\n break;\n default:\n warn('Unimplemented operator ' + fn);\n break;\n }\n }\n },\n\n setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n },\n\n setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n },\n\n nextLine: function SVGGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) {\n var current = this.current;\n this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f];\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n\n current.xcoords = [];\n current.tspan = this.svgFactory.createElement('svg:tspan');\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n\n current.txtElement = this.svgFactory.createElement('svg:text');\n current.txtElement.appendChild(current.tspan);\n },\n\n beginText: function SVGGraphics_beginText() {\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.lineMatrix = IDENTITY_MATRIX;\n this.current.tspan = this.svgFactory.createElement('svg:tspan');\n this.current.txtElement = this.svgFactory.createElement('svg:text');\n this.current.txtgrp = this.svgFactory.createElement('svg:g');\n this.current.xcoords = [];\n },\n\n moveText: function SVGGraphics_moveText(x, y) {\n var current = this.current;\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n\n current.xcoords = [];\n current.tspan = this.svgFactory.createElement('svg:tspan');\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n },\n\n showText: function SVGGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n var x = 0, i;\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n if (glyph === null) {\n // word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (isNum(glyph)) {\n x += -glyph * fontSize * 0.001;\n continue;\n }\n\n var width = glyph.width;\n var character = glyph.fontChar;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n\n if (!glyph.isInFont && !font.missingFile) {\n x += charWidth;\n // TODO: To assist with text selection, we should replace the missing\n // character with a space character if charWidth is not zero.\n // But we cannot just do \"character = ' '\", because the ' ' character\n // might actually map to a different glyph.\n continue;\n }\n current.xcoords.push(current.x + x * textHScale);\n current.tspan.textContent += character;\n x += charWidth;\n }\n if (vertical) {\n current.y -= x * textHScale;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, 'x',\n current.xcoords.map(pf).join(' '));\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);\n }\n\n const fillStrokeMode = current.textRenderingMode &\n TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, 'fill', current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha);\n }\n } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n // Workaround for Firefox: We must set fill=\"transparent\" because\n // fill=\"none\" would generate an empty clipping path.\n current.tspan.setAttributeNS(null, 'fill', 'transparent');\n } else {\n current.tspan.setAttributeNS(null, 'fill', 'none');\n }\n\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n this._setStrokeAttributes(current.tspan);\n }\n\n // Include the text rise in the text matrix since the `pm` function\n // creates the SVG element's `translate` entry (work on a copy to avoid\n // altering the original text matrix).\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(null, 'transform',\n pm(textMatrix) + ' scale(1, -1)');\n current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n },\n\n setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n\n addFontStyle: function SVGGraphics_addFontStyle(fontObj) {\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement('svg:style');\n this.cssStyle.setAttributeNS(null, 'type', 'text/css');\n this.defs.appendChild(this.cssStyle);\n }\n\n var url = createObjectURL(fontObj.data, fontObj.mimetype,\n this.forceDataSchema);\n this.cssStyle.textContent +=\n '@font-face { font-family: \"' + fontObj.loadedName + '\";' +\n ' src: url(' + url + '); }\\n';\n },\n\n setFont: function SVGGraphics_setFont(details) {\n var current = this.current;\n var fontObj = this.commonObjs.get(details[0]);\n var size = details[1];\n this.current.font = fontObj;\n\n if (this.embedFonts && fontObj.data &&\n !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = (fontObj.fontMatrix ?\n fontObj.fontMatrix : FONT_IDENTITY_MATRIX);\n\n var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') :\n (fontObj.bold ? 'bold' : 'normal');\n var italic = fontObj.italic ? 'italic' : 'normal';\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = this.svgFactory.createElement('svg:tspan');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n current.xcoords = [];\n },\n\n endText() {\n const current = this.current;\n if ((current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) &&\n current.txtElement && current.txtElement.hasChildNodes()) {\n // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n current.element = current.txtElement;\n this.clip('nonzero');\n this.endPath();\n }\n },\n\n // Path properties\n setLineWidth: function SVGGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n },\n setLineCap: function SVGGraphics_setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function SVGGraphics_setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function SVGGraphics_setMiterLimit(limit) {\n this.current.miterLimit = limit;\n },\n setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n },\n setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.current.strokeColor = color;\n },\n setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n },\n setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.current.fillColor = color;\n this.current.tspan = this.svgFactory.createElement('svg:tspan');\n this.current.xcoords = [];\n },\n setDash: function SVGGraphics_setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n },\n\n constructPath: function SVGGraphics_constructPath(ops, args) {\n var current = this.current;\n var x = current.x, y = current.y;\n current.path = this.svgFactory.createElement('svg:path');\n var d = [];\n var opLength = ops.length;\n\n for (var i = 0, j = 0; i < opLength; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n var xw = x + width;\n var yh = y + height;\n d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh),\n 'L', pf(x), pf(yh), 'Z');\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push('M', pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push('L', pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]),\n pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n case OPS.curveTo2:\n x = args[j + 2];\n y = args[j + 3];\n d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]),\n pf(args[j + 2]), pf(args[j + 3]));\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y),\n pf(x), pf(y));\n j += 4;\n break;\n case OPS.closePath:\n d.push('Z');\n break;\n }\n }\n current.path.setAttributeNS(null, 'd', d.join(' '));\n current.path.setAttributeNS(null, 'fill', 'none');\n\n this._ensureTransformGroup().appendChild(current.path);\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n },\n\n endPath: function SVGGraphics_endPath() {\n if (!this.pendingClip) {\n return;\n }\n var current = this.current;\n // Add current path to clipping path\n var clipId = 'clippath' + clipCount;\n clipCount++;\n var clipPath = this.svgFactory.createElement('svg:clipPath');\n clipPath.setAttributeNS(null, 'id', clipId);\n clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n // A deep clone is needed when text is used as a clipping path.\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === 'evenodd') {\n clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');\n } else {\n clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');\n }\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n this.extraStack.forEach(function (prev) {\n prev.clipGroup = null;\n });\n // Intersect with the previous clipping path.\n clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl);\n }\n current.activeClipUrl = 'url(#' + clipId + ')';\n\n this.tgrp = null;\n },\n\n clip: function SVGGraphics_clip(type) {\n this.pendingClip = type;\n },\n\n closePath: function SVGGraphics_closePath() {\n var current = this.current;\n if (current.path) {\n var d = current.path.getAttributeNS(null, 'd');\n d += 'Z';\n current.path.setAttributeNS(null, 'd', d);\n }\n },\n\n setLeading: function SVGGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n\n setTextRise: function SVGGraphics_setTextRise(textRise) {\n this.current.textRise = textRise;\n },\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n },\n\n setHScale: function SVGGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n\n setGState: function SVGGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case 'LW':\n this.setLineWidth(value);\n break;\n case 'LC':\n this.setLineCap(value);\n break;\n case 'LJ':\n this.setLineJoin(value);\n break;\n case 'ML':\n this.setMiterLimit(value);\n break;\n case 'D':\n this.setDash(value[0], value[1]);\n break;\n case 'Font':\n this.setFont(value);\n break;\n case 'CA':\n this.setStrokeAlpha(value);\n break;\n case 'ca':\n this.setFillAlpha(value);\n break;\n default:\n warn('Unimplemented graphic state ' + key);\n break;\n }\n }\n },\n\n fill: function SVGGraphics_fill() {\n var current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, 'fill', current.fillColor);\n current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);\n this.endPath();\n }\n },\n\n stroke: function SVGGraphics_stroke() {\n var current = this.current;\n\n if (current.element) {\n this._setStrokeAttributes(current.element);\n\n current.element.setAttributeNS(null, 'fill', 'none');\n\n this.endPath();\n }\n },\n\n /**\n * @private\n */\n _setStrokeAttributes(element) {\n const current = this.current;\n element.setAttributeNS(null, 'stroke', current.strokeColor);\n element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha);\n element.setAttributeNS(null, 'stroke-miterlimit',\n pf(current.miterLimit));\n element.setAttributeNS(null, 'stroke-linecap', current.lineCap);\n element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);\n element.setAttributeNS(null, 'stroke-width',\n pf(current.lineWidth) + 'px');\n element.setAttributeNS(null, 'stroke-dasharray',\n current.dashArray.map(pf).join(' '));\n element.setAttributeNS(null, 'stroke-dashoffset',\n pf(current.dashPhase) + 'px');\n },\n\n eoFill: function SVGGraphics_eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n }\n this.fill();\n },\n\n fillStroke: function SVGGraphics_fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n },\n\n eoFillStroke: function SVGGraphics_eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n }\n this.fillStroke();\n },\n\n closeStroke: function SVGGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n\n closeFillStroke: function SVGGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n },\n\n paintSolidColorImageMask:\n function SVGGraphics_paintSolidColorImageMask() {\n var current = this.current;\n var rect = this.svgFactory.createElement('svg:rect');\n rect.setAttributeNS(null, 'x', '0');\n rect.setAttributeNS(null, 'y', '0');\n rect.setAttributeNS(null, 'width', '1px');\n rect.setAttributeNS(null, 'height', '1px');\n rect.setAttributeNS(null, 'fill', current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n },\n\n paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {\n var imgObj = this.objs.get(objId);\n var imgEl = this.svgFactory.createElement('svg:image');\n imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);\n imgEl.setAttributeNS(null, 'width', pf(w));\n imgEl.setAttributeNS(null, 'height', pf(h));\n imgEl.setAttributeNS(null, 'x', '0');\n imgEl.setAttributeNS(null, 'y', pf(-h));\n imgEl.setAttributeNS(null, 'transform',\n 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');\n\n this._ensureTransformGroup().appendChild(imgEl);\n },\n\n paintImageXObject: function SVGGraphics_paintImageXObject(objId) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n this.paintInlineImageXObject(imgData);\n },\n\n paintInlineImageXObject:\n function SVGGraphics_paintInlineImageXObject(imgData, mask) {\n var width = imgData.width;\n var height = imgData.height;\n\n var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n var cliprect = this.svgFactory.createElement('svg:rect');\n cliprect.setAttributeNS(null, 'x', '0');\n cliprect.setAttributeNS(null, 'y', '0');\n cliprect.setAttributeNS(null, 'width', pf(width));\n cliprect.setAttributeNS(null, 'height', pf(height));\n this.current.element = cliprect;\n this.clip('nonzero');\n var imgEl = this.svgFactory.createElement('svg:image');\n imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);\n imgEl.setAttributeNS(null, 'x', '0');\n imgEl.setAttributeNS(null, 'y', pf(-height));\n imgEl.setAttributeNS(null, 'width', pf(width) + 'px');\n imgEl.setAttributeNS(null, 'height', pf(height) + 'px');\n imgEl.setAttributeNS(null, 'transform',\n 'scale(' + pf(1 / width) + ' ' +\n pf(-1 / height) + ')');\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n },\n\n paintImageMaskXObject:\n function SVGGraphics_paintImageMaskXObject(imgData) {\n var current = this.current;\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = current.fillColor;\n\n current.maskId = 'mask' + maskCount++;\n var mask = this.svgFactory.createElement('svg:mask');\n mask.setAttributeNS(null, 'id', current.maskId);\n\n var rect = this.svgFactory.createElement('svg:rect');\n rect.setAttributeNS(null, 'x', '0');\n rect.setAttributeNS(null, 'y', '0');\n rect.setAttributeNS(null, 'width', pf(width));\n rect.setAttributeNS(null, 'height', pf(height));\n rect.setAttributeNS(null, 'fill', fillColor);\n rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')');\n this.defs.appendChild(mask);\n\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n },\n\n paintFormXObjectBegin:\n function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2],\n matrix[3], matrix[4], matrix[5]);\n }\n\n if (Array.isArray(bbox) && bbox.length === 4) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n\n var cliprect = this.svgFactory.createElement('svg:rect');\n cliprect.setAttributeNS(null, 'x', bbox[0]);\n cliprect.setAttributeNS(null, 'y', bbox[1]);\n cliprect.setAttributeNS(null, 'width', pf(width));\n cliprect.setAttributeNS(null, 'height', pf(height));\n this.current.element = cliprect;\n this.clip('nonzero');\n this.endPath();\n }\n },\n\n paintFormXObjectEnd:\n function SVGGraphics_paintFormXObjectEnd() {},\n\n /**\n * @private\n */\n _initialize(viewport) {\n let svg = this.svgFactory.create(viewport.width, viewport.height);\n\n // Create the definitions element.\n let definitions = this.svgFactory.createElement('svg:defs');\n svg.appendChild(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n let rootGroup = this.svgFactory.createElement('svg:g');\n rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform));\n svg.appendChild(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n },\n\n /**\n * @private\n */\n _ensureClipGroup: function SVGGraphics_ensureClipGroup() {\n if (!this.current.clipGroup) {\n var clipGroup = this.svgFactory.createElement('svg:g');\n clipGroup.setAttributeNS(null, 'clip-path',\n this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n },\n\n /**\n * @private\n */\n _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement('svg:g');\n this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n return this.tgrp;\n },\n };\n return SVGGraphics;\n})();\n\n}\n\nexport {\n SVGGraphics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nlet fs = __non_webpack_require__('fs');\nlet http = __non_webpack_require__('http');\nlet https = __non_webpack_require__('https');\nlet url = __non_webpack_require__('url');\n\nimport {\n AbortException, assert, createPromiseCapability, MissingPDFException\n} from '../shared/util';\nimport {\n extractFilenameFromHeader, validateRangeRequestCapabilities\n} from './network_utils';\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n let parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === 'file:' || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = 'file:';\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === 'http:' ||\n this.url.protocol === 'https:';\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === 'file:';\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequest = null;\n this._rangeRequestReaders = [];\n }\n\n getFullReader() {\n assert(!this._fullRequest);\n this._fullRequest = this.isFsUrl ?\n new PDFNodeStreamFsFullReader(this) :\n new PDFNodeStreamFullReader(this);\n return this._fullRequest;\n }\n\n getRangeReader(start, end) {\n let rangeReader = this.isFsUrl ?\n new PDFNodeStreamFsRangeReader(this, start, end) :\n new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequest) {\n this._fullRequest.cancel(reason);\n }\n\n let readers = this._rangeRequestReaders.slice(0);\n readers.forEach(function(reader) {\n reader.cancel(reason);\n });\n }\n}\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n let source = stream.source;\n this._contentLength = source.length; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n this._headersCapability = createPromiseCapability();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true, };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n let chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n let buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false, };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on('readable', () => {\n this._readCapability.resolve();\n });\n\n readableStream.on('end', () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on('error', (reason) => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException('streaming is disabled'));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n let source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true, };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n let chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded, });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n let buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false, };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on('readable', () => {\n this._readCapability.resolve();\n });\n\n readableStream.on('end', () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on('error', (reason) => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nfunction createRequestOptions(url, headers) {\n return {\n protocol: url.protocol,\n auth: url.auth,\n host: url.hostname,\n port: url.port,\n path: url.path,\n method: 'GET',\n headers,\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let handleResponse = (response) => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n\n const getResponseHeader = (name) => {\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n return this._readableStream.headers[name.toLowerCase()];\n };\n let { allowRangeRequests, suggestedLength, } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === 'http:') {\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse);\n } else {\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse);\n }\n\n this._request.on('error', (reason) => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n this._httpHeaders = {};\n for (let property in stream.httpHeaders) {\n let value = stream.httpHeaders[property];\n if (typeof value === 'undefined') {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders['Range'] = `bytes=${start}-${end - 1}`;\n\n let handleResponse = (response) => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n\n this._request = null;\n if (this._url.protocol === 'http:') {\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse);\n } else {\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse);\n }\n\n this._request.on('error', (reason) => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, '');\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === 'ENOENT') {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, '');\n }\n\n this._setReadableStream(\n fs.createReadStream(path, { start, end: end - 1, }));\n }\n}\n\nexport {\n PDFNodeStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert, MissingPDFException, UnexpectedResponseException\n} from '../shared/util';\nimport {\n getFilenameFromContentDispositionHeader\n} from './content_disposition';\n\nfunction validateRangeRequestCapabilities({ getResponseHeader, isHttp,\n rangeChunkSize, disableRange, }) {\n assert(rangeChunkSize > 0, 'Range chunk size must be larger than zero');\n let returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n let length = parseInt(getResponseHeader('Content-Length'), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader('Accept-Ranges') !== 'bytes') {\n return returnValues;\n }\n\n let contentEncoding = getResponseHeader('Content-Encoding') || 'identity';\n if (contentEncoding !== 'identity') {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader('Content-Disposition');\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (/\\.pdf$/i.test(filename)) {\n return filename;\n }\n }\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && /^file:/.test(url)) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(\n 'Unexpected server response (' + status +\n ') while retrieving PDF \"' + url + '\".', status);\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Support UTF-8 decoding when TextDecoder is unsupported.\n// - Replace Array.from with Array + loop for compat with old browsers.\n// - Replace \"startsWith\" with other string method for compat with old browsers.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @return {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n let tmp = toParamRegExp('filename\\\\*', 'i').exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n let filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\n tmp = toParamRegExp('filename', 'i').exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n '(?:^|;)\\\\s*' + attributePattern + '\\\\s*=\\\\s*' +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n '(' +\n '[^\";\\\\s][^;\\\\s]*' +\n '|' +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n ')', flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n let decoder = new TextDecoder(encoding, { fatal: true, });\n let bytes = new Array(value.length);\n for (let i = 0; i < value.length; ++i) {\n bytes[i] = value.charCodeAt(i);\n }\n value = decoder.decode(new Uint8Array(bytes));\n needsEncodingFixup = false;\n } catch (e) {\n // TextDecoder constructor threw - unrecognized encoding.\n // Or TextDecoder API is not available (in IE / Edge).\n if (/^utf-?8$/i.test(encoding)) {\n // UTF-8 is commonly used, try to support it in another way:\n try {\n value = decodeURIComponent(escape(value));\n needsEncodingFixup = false;\n } catch (err) {\n }\n }\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode('utf-8', value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode('iso-8859-1', value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDisposition) {\n let matches = [], match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n let iter = toParamRegExp('filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)', 'ig');\n while ((match = iter.exec(contentDisposition)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n let parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join('');\n }\n function rfc2616unquote(value) {\n if (value.charAt(0) === '\"') {\n let parts = value.slice(1).split('\\\\\"');\n // Find the first unescaped \" and terminate there.\n for (let i = 0; i < parts.length; ++i) {\n let quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replace(/\\\\(.)/g, '$1');\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n let encodingend = extvalue.indexOf('\\'');\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n let encoding = extvalue.slice(0, encodingend);\n let langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n let value = langvalue.replace(/^[^']*'/, '');\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (value.slice(0, 2) !== '=?' || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function(_, charset, encoding, text) {\n if (encoding === 'q' || encoding === 'Q') {\n // RFC 2047 section 4.2.\n text = text.replace(/_/g, ' ');\n text = text.replace(/=([0-9a-fA-F]{2})/g, function(_, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch (e) {\n }\n return textdecode(charset, text);\n });\n }\n\n return '';\n}\n\nexport {\n getFilenameFromContentDispositionHeader,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException, assert, createPromiseCapability\n} from '../shared/util';\nimport {\n createResponseStatusError, extractFilenameFromHeader,\n validateRangeRequestCapabilities, validateResponseStatus\n} from './network_utils';\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: 'GET',\n headers,\n signal: abortController && abortController.signal,\n mode: 'cors',\n credentials: withCredentials ? 'include' : 'same-origin',\n redirect: 'follow',\n };\n}\n\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n getFullReader() {\n assert(!this._fullRequestReader);\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n let reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n let readers = this._rangeRequestReaders.slice(0);\n readers.forEach(function(reader) {\n reader.cancel(reason);\n });\n }\n}\n\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n let source = stream.source;\n this._withCredentials = source.withCredentials;\n this._contentLength = source.length;\n this._headersCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== 'undefined') {\n this._abortController = new AbortController();\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = new Headers();\n for (let property in this._stream.httpHeaders) {\n let value = this._stream.httpHeaders[property];\n if (typeof value === 'undefined') {\n continue;\n }\n this._headers.append(property, value);\n }\n\n let url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials,\n this._abortController)).then((response) => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n\n const getResponseHeader = (name) => {\n return response.headers.get(name);\n };\n let { allowRangeRequests, suggestedLength, } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException('streaming is disabled'));\n }\n }).catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done, } = await this._reader.read();\n if (done) {\n return { value, done, };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n let buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false, };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n let source = stream.source;\n this._withCredentials = source.withCredentials;\n this._readCapability = createPromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== 'undefined') {\n this._abortController = new AbortController();\n }\n\n this._headers = new Headers();\n for (let property in this._stream.httpHeaders) {\n let value = this._stream.httpHeaders[property];\n if (typeof value === 'undefined') {\n continue;\n }\n this._headers.append(property, value);\n }\n\n let rangeStr = begin + '-' + (end - 1);\n this._headers.append('Range', 'bytes=' + rangeStr);\n let url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials,\n this._abortController)).then((response) => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n });\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done, } = await this._reader.read();\n if (done) {\n return { value, done, };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded, });\n }\n let buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false, };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\nexport {\n PDFFetchStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability, stringToBytes } from '../shared/util';\nimport {\n createResponseStatusError, extractFilenameFromHeader,\n validateRangeRequestCapabilities\n} from './network_utils';\nimport globalScope from '../shared/global_scope';\n\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n throw new Error('Module \"./network\" shall not ' +\n 'be used with FIREFOX or MOZCENTRAL build.');\n}\n\nvar OK_RESPONSE = 200;\nvar PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction NetworkManager(url, args) {\n this.url = url;\n args = args || {};\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || {};\n this.withCredentials = args.withCredentials || false;\n this.getXhr = args.getXhr ||\n function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n this.loadedRequests = Object.create(null);\n}\n\nfunction getArrayBuffer(xhr) {\n var data = xhr.response;\n if (typeof data !== 'string') {\n return data;\n }\n let array = stringToBytes(data);\n return array.buffer;\n}\n\nvar supportsMozChunked =\n typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME') ? false :\n (function supportsMozChunkedClosure() {\n try {\n var x = new XMLHttpRequest();\n // Firefox 37- required .open() to be called before setting responseType.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=707484\n // Even though the URL is not visited, .open() could fail if the URL is\n // blocked, e.g. via the connect-src CSP directive or the NoScript addon.\n // When this error occurs, this feature detection method will mistakenly\n // report that moz-chunked-arraybuffer is not supported in Firefox 37-.\n x.open('GET', globalScope.location.href);\n x.responseType = 'moz-chunked-arraybuffer';\n return x.responseType === 'moz-chunked-arraybuffer';\n } catch (e) {\n return false;\n }\n})();\n\nNetworkManager.prototype = {\n requestRange: function NetworkManager_requestRange(begin, end, listeners) {\n var args = {\n begin,\n end,\n };\n for (var prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n },\n\n requestFull: function NetworkManager_requestFull(listeners) {\n return this.request(listeners);\n },\n\n request: function NetworkManager_request(args) {\n var xhr = this.getXhr();\n var xhrId = this.currXhrId++;\n var pendingRequest = this.pendingRequests[xhrId] = {\n xhr,\n };\n\n xhr.open('GET', this.url);\n xhr.withCredentials = this.withCredentials;\n for (var property in this.httpHeaders) {\n var value = this.httpHeaders[property];\n if (typeof value === 'undefined') {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && 'begin' in args && 'end' in args) {\n var rangeStr = args.begin + '-' + (args.end - 1);\n xhr.setRequestHeader('Range', 'bytes=' + rangeStr);\n pendingRequest.expectedStatus = 206;\n } else {\n pendingRequest.expectedStatus = 200;\n }\n\n var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData;\n if (useMozChunkedLoading) {\n xhr.responseType = 'moz-chunked-arraybuffer';\n pendingRequest.onProgressiveData = args.onProgressiveData;\n pendingRequest.mozChunked = true;\n } else {\n xhr.responseType = 'arraybuffer';\n }\n\n if (args.onError) {\n xhr.onerror = function(evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n },\n\n onProgress: function NetworkManager_onProgress(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n // Maybe abortRequest was called...\n return;\n }\n\n if (pendingRequest.mozChunked) {\n var chunk = getArrayBuffer(pendingRequest.xhr);\n pendingRequest.onProgressiveData(chunk);\n }\n\n var onProgress = pendingRequest.onProgress;\n if (onProgress) {\n onProgress(evt);\n }\n },\n\n onStateChange: function NetworkManager_onStateChange(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n // Maybe abortRequest was called...\n return;\n }\n\n var xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // success status == 0 can be on ftp, file and other protocols\n if (xhr.status === 0 && this.isHttp) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n return;\n }\n var xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n var ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n return;\n }\n\n this.loadedRequests[xhrId] = true;\n\n var chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n var rangeHeader = xhr.getResponseHeader('Content-Range');\n var matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n var begin = parseInt(matches[1], 10);\n pendingRequest.onDone({\n begin,\n chunk,\n });\n } else if (pendingRequest.onProgressiveData) {\n pendingRequest.onDone(null);\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n },\n\n hasPendingRequests: function NetworkManager_hasPendingRequests() {\n for (var xhrId in this.pendingRequests) {\n return true;\n }\n return false;\n },\n\n getRequestXhr: function NetworkManager_getXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n },\n\n isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) {\n return !!(this.pendingRequests[xhrId].onProgressiveData);\n },\n\n isPendingRequest: function NetworkManager_isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n },\n\n isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) {\n return xhrId in this.loadedRequests;\n },\n\n abortAllRequests: function NetworkManager_abortAllRequests() {\n for (var xhrId in this.pendingRequests) {\n this.abortRequest(xhrId | 0);\n }\n },\n\n abortRequest: function NetworkManager_abortRequest(xhrId) {\n var xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n },\n};\n\n/** @implements {IPDFStream} */\nfunction PDFNetworkStream(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n}\n\nPDFNetworkStream.prototype = {\n _onRangeRequestReaderClosed:\n function PDFNetworkStream_onRangeRequestReaderClosed(reader) {\n var i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n },\n\n getFullReader: function PDFNetworkStream_getFullReader() {\n assert(!this._fullRequestReader);\n this._fullRequestReader =\n new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n },\n\n getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) {\n var reader = new PDFNetworkStreamRangeRequestReader(this._manager,\n begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n },\n\n cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n var readers = this._rangeRequestReaders.slice(0);\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n },\n};\n\n/** @implements {IPDFStreamReader} */\nfunction PDFNetworkStreamFullRequestReader(manager, source) {\n this._manager = manager;\n\n var args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onProgressiveData: source.disableStream ? null :\n this._onProgressiveData.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n}\n\nPDFNetworkStreamFullRequestReader.prototype = {\n _onHeadersReceived:\n function PDFNetworkStreamFullRequestReader_onHeadersReceived() {\n var fullRequestXhrId = this._fullRequestId;\n var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = (name) => {\n return fullRequestXhr.getResponseHeader(name);\n };\n let { allowRangeRequests, suggestedLength, } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n var networkManager = this._manager;\n if (networkManager.isStreamingRequest(fullRequestXhrId)) {\n // We can continue fetching when progressive loading is enabled,\n // and we don't need the autoFetch feature.\n this._isStreamingSupported = true;\n } else if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range\n // requests.\n networkManager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n },\n\n _onProgressiveData:\n function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) {\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n } else {\n this._cachedChunks.push(chunk);\n }\n },\n\n _onDone: function PDFNetworkStreamFullRequestReader_onDone(args) {\n if (args) {\n this._onProgressiveData(args.chunk);\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n },\n\n _onError: function PDFNetworkStreamFullRequestReader_onError(status) {\n var url = this._url;\n var exception = createResponseStatusError(status, url);\n this._storedError = exception;\n this._headersReceivedCapability.reject(exception);\n this._requests.forEach(function (requestCapability) {\n requestCapability.reject(exception);\n });\n this._requests = [];\n this._cachedChunks = [];\n },\n\n _onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) {\n if (this.onProgress) {\n this.onProgress({\n loaded: data.loaded,\n total: data.lengthComputable ? data.total : this._contentLength,\n });\n }\n },\n\n get filename() {\n return this._filename;\n },\n\n get isRangeSupported() {\n return this._isRangeSupported;\n },\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n },\n\n get contentLength() {\n return this._contentLength;\n },\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n },\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n var chunk = this._cachedChunks.shift();\n return { value: chunk, done: false, };\n }\n if (this._done) {\n return { value: undefined, done: true, };\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n },\n};\n\n/** @implements {IPDFStreamRangeReader} */\nfunction PDFNetworkStreamRangeRequestReader(manager, begin, end) {\n this._manager = manager;\n var args = {\n onDone: this._onDone.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n\n this.onProgress = null;\n this.onClosed = null;\n}\n\nPDFNetworkStreamRangeRequestReader.prototype = {\n _close: function PDFNetworkStreamRangeRequestReader_close() {\n if (this.onClosed) {\n this.onClosed(this);\n }\n },\n\n _onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) {\n var chunk = data.chunk;\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n this._close();\n },\n\n _onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) {\n if (!this.isStreamingSupported && this.onProgress) {\n this.onProgress({\n loaded: evt.loaded,\n });\n }\n },\n\n get isStreamingSupported() {\n return false; // TODO allow progressive range bytes loading\n },\n\n async read() {\n if (this._queuedChunk !== null) {\n var chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false, };\n }\n if (this._done) {\n return { value: undefined, done: true, };\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n },\n};\n\nexport {\n PDFNetworkStream,\n NetworkManager,\n};\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/api_compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/xml_parser.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/webgl.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js"],"names":["pdfjsVersion","pdfjsBuild","pdfjsSharedUtil","require","pdfjsDisplayAPI","pdfjsDisplayTextLayer","pdfjsDisplayAnnotationLayer","pdfjsDisplayDisplayUtils","pdfjsDisplaySVG","pdfjsDisplayWorkerOptions","pdfjsDisplayAPICompatibility","PDFNodeStream","params","PDFNetworkStream","PDFFetchStream","exports","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","NativeImageDecoding","NONE","DECODE","DISPLAY","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","UNSUPPORTED_FEATURES","unknown","forms","javaScript","smask","shadingPattern","font","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","Number","console","unreachable","base","other","url","absoluteUrl","baseUrl","_isValidProtocol","Object","enumerable","configurable","writable","BaseException","constructor","NullCharactersRegExp","warn","str","assert","bytes","length","MAX_ARGUMENT_COUNT","String","strBuf","i","chunkEnd","Math","chunk","arr","resultLength","arrayByteLength","pos","data","item","stringToBytes","itemLength","value","buffer8","view32","IsLittleEndianCached","shadow","isLittleEndian","IsEvalSupportedCached","isEvalSupported","rgbBuf","m1","m2","xt","p","m","yt","d","p1","Util","p2","r","p3","p4","v","transpose","a","b","c","first","second","sx","sy","rect","orderedX","rect1","rect2","orderedY","result","PDFStringTranslateTable","code","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","element","capability","isSettled","get","resolve","reject","createObjectURL","digits","forceDataSchema","URL","blob","type","buffer","ii","b1","b2","b3","d1","d2","d3","d4","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","createPDFNetworkStream","task","source","isArrayBuffer","src","range","rangeTransport","worker","key","window","pdfBytes","isNaN","NativeImageDecoderValues","apiCompatibilityParams","setVerbosityLevel","workerParams","port","GlobalWorkerOptions","PDFWorker","docId","networkStream","initialData","progressiveDone","disableRange","disableStream","httpHeaders","withCredentials","rangeChunkSize","messageHandler","transport","Promise","pdfDataRangeTransport","apiVersion","password","disableAutoFetch","maxImageSize","disableFontFace","disableCreateObjectURL","postMessageTransfers","docBaseUrl","nativeImageDecoderSupport","ignoreErrors","PDFDocumentLoadingTask","nextDocumentId","destroy","transportDestroyed","then","addRangeListener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","listener","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","abort","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getOpenActionDestination","deprecated","openAction","getAttachments","getJavaScript","getOutline","getPermissions","getMetadata","getData","getDownloadInfo","getStats","cleanup","pdfBug","getViewport","rotation","offsetX","offsetY","dontFlip","arguments","viewBox","getAnnotations","intent","render","enableWebGL","renderInteractiveForms","imageLayer","canvasFactory","background","renderingIntent","intentState","clearTimeout","canvasFactoryInstance","webGLContext","enable","fnArray","argsArray","lastChunk","pageIndex","complete","error","internalRenderTask","reason","callback","objs","commonObjs","operatorList","useRequestAnimationFrame","renderTask","transparency","getOperatorList","opListTask","streamTextContent","normalizeWhitespace","disableCombineTextItems","TEXT_CONTENT_CHUNK_SIZE","combineTextItems","highWaterMark","size","textContent","getTextContent","readableStream","reader","pump","items","styles","_destroy","waitOn","force","renderCompleted","resetStats","_tryCleanup","_startRenderPage","_renderPageChunk","operatorListChunk","_pumpOperatorList","args","_abortOperatorList","defer","postMessage","cloned","transferable","transfers","Array","desc","cloneValue","e","addEventListener","removeEventListener","terminate","pdfWorkerPorts","isWorkerDisabled","nextFakeWorkerId","isNodeJS","fallbackWorkerSrc","pdfjsFilePath","document","mainWorkerMessageHandler","globalThis","fakeWorkerCapability","loader","getMainThreadWorkerMessageHandler","eval","getWorkerSrc","loadScript","wrapper","name","_initializeFromPort","_initialize","workerSrc","isSameOrigin","createCDNWrapper","terminateEarly","onWorkerError","sendTest","testObj","info","_setupFakeWorker","setupFakeWorkerGlobal","WorkerMessageHandler","id","workerHandler","loadingTask","onUnsupportedFeature","isCompressed","page","terminated","setupMessageHandler","evt","loaded","total","sink","headersCapability","fullReader","isStreamingSupported","isRangeSupported","contentLength","rangeReader","pdfInfo","ex","exception","updatePassword","exportedError","exportedData","fontRegistry","registerFont","pageProxy","img","releaseImageResources","MAX_IMAGE_SIZE_TO_STORE","imageData","components","width","rgbaLength","buf","tmpCanvas","tmpCtx","j","fetched","builtInCMap","_onUnsupportedFeature","pageNumber","promise","pageInfo","results","metadata","contentDispositionFilename","startCleanup","cleanupSuccessful","_ensureObj","resolved","obj","has","clear","cancel","InternalRenderTask","canvasInRendering","initializeGraphics","operatorListChanged","_continue","_scheduleNext","version","build","DEFAULT_LINK_REL","SVG_NS","create","height","canvas","context","reset","canvasAndContext","compressionType","isFetchSupported","isValidFetchUrl","response","cMapData","request","XMLHttpRequest","svg","createElement","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","clone","scale","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","LinkTarget","SELF","BLANK","PARENT","TOP","enabled","urlNullRemoved","removeNullCharacters","link","targetStr","anchor","query","end","time","Date","timeEnd","start","toString","outBuf","longest","duration","Response","protocol","script","isString","pdfDateStringRegex","matches","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","addNativeFontFace","insertRule","styleElement","styleSheet","nativeFontFace","featureId","rule","_queueLoadingCallback","supported","_prepareFontLoadEvent","FontLoader","requests","nextRequestId","navigator","otherRequest","setTimeout","done","getLoadTestFont","atob","offset","chunk1","s","chunk2","ctx","called","isFontReady","loadTestFontId","COMMENT_OFFSET","spliceString","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","int32","string32","btoa","names","fonts","div","span","translatedData","createNativeFontFace","createFontFaceRule","bytesToString","getPathGenerator","cmds","js","current","compatibilityParams","userAgent","isIE","isIOSChrome","process","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","MIN_WIDTH_FACTOR","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","f","ad_bc","bc_ad","old","prev","cosValue","sinValue","CachedCanvases","getCanvas","canvasEntry","addContextCurrentTransform","POINT_TO_PROCESS_LIMIT","imgData","width1","points","POINT_TYPES","lineSize","data0","mask","elem","count","j0","sum","steps","outlines","coords","p0","step","pp","drawOutline","o","jj","CanvasExtraState","setCurrentPoint","CanvasGraphics","EXECUTION_TIME","EXECUTION_STEPS","partialChunkHeight","fullChunks","totalChunks","chunkImgData","srcPos","dest","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","thisChunkHeight","destPos","srcDiff","k","kEnd","kEndUnrolled","srcByte","elemsInThisChunk","properties","property","sourceCtx","destCtx","alpha","alpha_","r0","g0","b0","maskData","transferMap","layerData","y","hasBackdrop","backdrop","subtype","composeFn","PIXELS_TO_PROCESS","chunkSize","row","chunkHeight","maskCtx","layerCtx","composeSMaskBackdrop","composed","layer","genericComposeSMask","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","beginDrawing","transparentCanvas","resetCtxToDefault","viewport","executeOperatorList","executionStartIdx","argsArrayLen","chunkOperations","endTime","stepper","fnId","objsPool","depObjId","continueCallback","endDrawing","states","state","beginSMaskGroup","activeSMask","drawnWidth","drawnHeight","cacheId","scratchCanvas","currentCtx","currentTransform","groupCtx","copyCtxState","suspendSMaskGroup","composeSMask","deltaTransform","resumeSMaskGroup","endSMaskGroup","x","ops","xw","yh","consumePath","strokeColor","fillColor","isPatternFill","needRestore","paths","path","fontObj","bold","italic","typeface","browserFontSize","paintChar","textRenderingMode","fontSize","fillStrokeMode","isAddToPathSet","patternFill","addToPath","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","glyphs","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","patternTransform","lineWidth","glyph","isNum","restoreNeeded","spacing","character","accent","vmetric","vx","vy","scaledX","scaledY","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","showType3Text","fontMatrix","isTextInvisible","spacingLength","transformed","urx","ury","getColorN_Pattern","IR","color","baseTransform","canvasGraphicsFactory","createCanvasGraphics","getShadingPatternFromIR","inv","bl","br","ul","ur","x0","y0","x1","y1","matrix","bbox","group","bounds","canvasBounds","scaleX","scaleY","startTransformInverse","domImage","position","left","top","w","h","maskCanvas","putBinaryImageMask","positions","images","image","map","widthScale","heightScale","imgToPaint","putBinaryImageData","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","entry","getSinglePixelWidth","inverse","getCanvasPosition","ShadingIRs","region","fromIR","raw","colorStops","r1","getPattern","applyBoundingBox","grad","createMeshCanvas","colors","rowSize","tmp","c1","c2","c3","x2","y2","x3","y3","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","ps","figure","cs","verticesPerRow","rows","cols","q","drawTriangle","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","combinesScale","paddedWidth","paddedHeight","cachedCanvases","backgroundColor","figures","drawFigure","owner","matrixScale","temporaryPatternCanvas","shadingIR","TilingPattern","PaintType","COLORED","UNCOLORED","createPatternCanvas","xstep","ystep","paintType","tilingType","curMatrixScale","combinedScale","dimx","dimy","graphics","getSizeAndScale","maxSize","clipBbox","bboxWidth","bboxHeight","setFillAndStrokeStyleToContext","cssColor","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","event","callbackId","wrapReason","action","sourceName","targetName","comObj","on","ah","send","sendWithPromise","sendWithStream","streamId","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","stream","cancelCapability","_createStreamSink","self","streamSink","enqueue","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","ready","success","_processStreamMessage","_postMessage","parser","xmlDocument","_repair","chars","_parse","rdf","nodeName","children","getAll","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","ch","isWhitespace","_resolveEntities","entity","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","pi","q2","complexDoctype","doctypeContent","content","text","onResolveEntity","onPi","onComment","onCdata","onDoctype","onText","onBeginElement","onEndElement","onError","childNodes","index","child","hasChildNodes","parseFromString","isWhitespaceString","node","lastElement","_onReceiveData","found","_onProgress","firstReader","_onProgressiveDone","_removeRangeReader","getFullReader","queuedChunks","getRangeReader","cancelAllRequests","readers","_enqueue","requestCapability","requestsCapability","WebGLUtils","drawFigures","shader","gl","compiled","errorMsg","loadShader","program","shaders","linked","texture","currentCanvas","currentGL","premultipliedalpha","smaskVertexShaderCode","smaskFragmentShaderCode","smaskCache","generateGL","vertexShader","createVertexShader","fragmentShader","createFragmentShader","cache","texCoordLocation","texLayerLocation","texMaskLocation","texCoordBuffer","initSmaskGL","createTexture","maskTexture","figuresVertexShaderCode","figuresFragmentShaderCode","figuresCache","initFiguresGL","coordsMap","colorsMap","pIndex","cIndex","col","coordsBuffer","colorsBuffer","tryInitGL","renderTextLayer","MAX_TEXT_DIVS_TO_RENDER","NonWhitespaceRegexp","textDiv","textDivProperties","angle","canvasWidth","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","isAllWhitespace","geom","tx","style","fontHeight","fontAscent","angleCos","angleSin","divWidth","divHeight","right","bottom","textDivs","textDivsLength","expanded","expandBounds","divProperties","ts","t","findPositiveMin","boxScale","box","x1New","x2New","expandBoundsLTR","boxes","fakeBoundary","horizon","boundary","maxXNew","horizonPart","affectedBoundary","xNew","changedHorizon","lastBoundary","useBoundary","used","textContentItemsStr","TextLayerRenderTask","_processItems","len","appendText","_layoutText","fontFamily","_render","styleCache","textItems","textStyles","expandTextDivs","expand","transformBuf","paddingBuf","divProps","renderParameters","textContentStream","container","enhanceTextSelection","parameters","fieldType","isRenderable","ignoreBorder","_createContainer","horizontalRadius","verticalRadius","radius","_createPopup","trigger","popupElement","title","modificationDate","contents","hideWrapper","popup","addLinkAttributes","target","linkService","rel","_bindLink","_bindNamedAction","JSON","TEXT_ALIGNMENT","fieldWidth","combWidth","_setTextStyle","fallbackName","selectElement","optionElement","option","IGNORE_TYPES","selector","parentElement","parentLeft","parseFloat","parentWidth","BACKGROUND_ENLIGHT","g","dateObject","PDFDateString","date","_formatContents","lines","line","_toggle","_show","pin","_hide","unpin","borderWidth","square","circle","coordinate","polyline","getFilenameFromUrl","stringToPDFString","_download","sortedAnnotations","popupAnnotations","downloadManager","imageResourcesPath","svgFactory","SVGGraphics","SVG_DEFAULTS","fontStyle","fontWeight","XML_NS","XLINK_NS","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc","body","crc32","deflateSyncUncompressed","input","Buffer","output","__non_webpack_require__","level","literals","maxBlockLength","deflateBlocks","idat","adler","adler32","colorType","bitDepth","offsetLiterals","offsetBytes","kind","ihdr","deflateSync","pngLength","writePngChunk","encode","opTree","opListElement","fn","pf","clipCount","maskCount","shadingCount","loadDependencies","transformMatrix","getSVG","svgElement","convertOpList","operatorIdMapping","opList","opListToTree","executeOpTree","opTreeElement","lineWidthScale","textMatrix","pm","addFontStyle","details","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeTilingPattern","tilingId","txstep","tystep","tiling","tx1","ty1","_makeShadingPattern","shadingId","point0","point1","gradient","focalPoint","circlePoint","focalRadius","circleRadius","stop","colorStop","op","clipId","clipPath","clipElement","_setStrokeAttributes","dashArray","imgObj","imgEl","imgSrc","cliprect","definitions","rootGroup","_ensureClipGroup","clipGroup","_ensureTransformGroup","fs","http","https","fileUriRegex","parsedUrl","parseUrl","_error","_setReadableStream","auth","host","method","handleResponse","getResponseHeader","isHttp","suggestedLength","extractFilenameFromHeader","createRequestOptions","stat","returnValues","allowRangeRequests","contentEncoding","contentDisposition","filename","getFilenameFromContentDispositionHeader","status","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","decoder","fatal","textdecode","iter","n","parts","part","quotindex","encodingend","extvalue","encoding","langvalue","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","array","requestRange","listeners","requestFull","xhrId","pendingRequest","onProgress","onStateChange","xhrStatus","ok_response_on_range_request","getArrayBuffer","rangeHeader","begin","hasPendingRequests","getRequestXhr","isPendingRequest","abortAllRequests","abortRequest","_onRangeRequestReaderClosed","onHeadersReceived","onDone","manager","_onHeadersReceived","fullRequestXhrId","fullRequestXhr","_onDone","_onError","createResponseStatusError","_close","signal","abortController","mode","credentials","redirect","headers","createHeaders","fetch","createFetchOptions","validateResponseStatus"],"mappings":"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","file":"pdf.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __w_pdfjs_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__w_pdfjs_require__.m = modules;\n\n \t// expose the module cache\n \t__w_pdfjs_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__w_pdfjs_require__.d = function(exports, name, getter) {\n \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__w_pdfjs_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__w_pdfjs_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__w_pdfjs_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__w_pdfjs_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__w_pdfjs_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-unused-vars */\n\n\"use strict\";\n\nvar pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\nvar pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nvar pdfjsSharedUtil = require(\"./shared/util.js\");\nvar pdfjsDisplayAPI = require(\"./display/api.js\");\nvar pdfjsDisplayTextLayer = require(\"./display/text_layer.js\");\nvar pdfjsDisplayAnnotationLayer = require(\"./display/annotation_layer.js\");\nvar pdfjsDisplayDisplayUtils = require(\"./display/display_utils.js\");\nvar pdfjsDisplaySVG = require(\"./display/svg.js\");\nconst pdfjsDisplayWorkerOptions = require(\"./display/worker_options.js\");\nconst pdfjsDisplayAPICompatibility = require(\"./display/api_compatibility.js\");\n\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const { isNodeJS } = require(\"./shared/is_node.js\");\n if (isNodeJS) {\n const PDFNodeStream = require(\"./display/node_stream.js\").PDFNodeStream;\n pdfjsDisplayAPI.setPDFNetworkStreamFactory(params => {\n return new PDFNodeStream(params);\n });\n } else {\n const PDFNetworkStream = require(\"./display/network.js\").PDFNetworkStream;\n let PDFFetchStream;\n if (pdfjsDisplayDisplayUtils.isFetchSupported()) {\n PDFFetchStream = require(\"./display/fetch_stream.js\").PDFFetchStream;\n }\n pdfjsDisplayAPI.setPDFNetworkStreamFactory(params => {\n if (\n PDFFetchStream &&\n pdfjsDisplayDisplayUtils.isValidFetchUrl(params.url)\n ) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n }\n} else if (PDFJSDev.test(\"CHROME\")) {\n const PDFNetworkStream = require(\"./display/network.js\").PDFNetworkStream;\n let PDFFetchStream;\n const isChromeWithFetchCredentials = function() {\n // fetch does not include credentials until Chrome 61.0.3138.0 and later.\n // https://chromium.googlesource.com/chromium/src/+/2e231cf052ca5e68e22baf0008ac9e5e29121707\n try {\n // Indexed properties on window are read-only in Chrome 61.0.3151.0+\n // https://chromium.googlesource.com/chromium/src.git/+/58ab4a971b06dec13e4edf9de8382ca6847f6190\n window[999] = 123; // should throw. Note: JS strict mode MUST be enabled.\n delete window[999];\n return false;\n } catch (e) {\n return true;\n }\n };\n if (\n pdfjsDisplayDisplayUtils.isFetchSupported() &&\n isChromeWithFetchCredentials()\n ) {\n PDFFetchStream = require(\"./display/fetch_stream.js\").PDFFetchStream;\n }\n pdfjsDisplayAPI.setPDFNetworkStreamFactory(params => {\n if (\n PDFFetchStream &&\n pdfjsDisplayDisplayUtils.isValidFetchUrl(params.url)\n ) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n}\n\nexports.build = pdfjsDisplayAPI.build;\nexports.version = pdfjsDisplayAPI.version;\nexports.getDocument = pdfjsDisplayAPI.getDocument;\nexports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;\nexports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;\nexports.PDFWorker = pdfjsDisplayAPI.PDFWorker;\nexports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;\nexports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;\nexports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;\nexports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;\nexports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;\nexports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;\nexports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;\nexports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;\nexports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType;\nexports.PermissionFlag = pdfjsSharedUtil.PermissionFlag;\nexports.UnexpectedResponseException =\n pdfjsSharedUtil.UnexpectedResponseException;\nexports.OPS = pdfjsSharedUtil.OPS;\nexports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel;\nexports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;\nexports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;\nexports.createObjectURL = pdfjsSharedUtil.createObjectURL;\nexports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;\nexports.shadow = pdfjsSharedUtil.shadow;\nexports.Util = pdfjsSharedUtil.Util;\nexports.RenderingCancelledException =\n pdfjsDisplayDisplayUtils.RenderingCancelledException;\nexports.getFilenameFromUrl = pdfjsDisplayDisplayUtils.getFilenameFromUrl;\nexports.LinkTarget = pdfjsDisplayDisplayUtils.LinkTarget;\nexports.addLinkAttributes = pdfjsDisplayDisplayUtils.addLinkAttributes;\nexports.loadScript = pdfjsDisplayDisplayUtils.loadScript;\nexports.PDFDateString = pdfjsDisplayDisplayUtils.PDFDateString;\nexports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions;\nexports.apiCompatibilityParams =\n pdfjsDisplayAPICompatibility.apiCompatibilityParams;\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst NativeImageDecoding = {\n NONE: \"none\",\n DECODE: \"decode\",\n DISPLAY: \"display\",\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n font: \"font\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the whitelisted protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n try {\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\nconst BaseException = (function BaseExceptionClosure() {\n function BaseException(message) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = this.constructor.name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg);\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg);\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {}\n\nclass MissingPDFException extends BaseException {}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg);\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {}\n\nconst NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(\n bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n \"Invalid argument for bytesToString\"\n );\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n assert(arr.byteLength !== undefined);\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array} arr - the array of the arrays (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst rgbBuf = [\"rgb(\", 0, \",\", 0, \",\", 0, \")\"];\n\nclass Util {\n // makeCssRgb() can be called thousands of times. Using ´rgbBuf` avoids\n // creating many intermediate strings.\n static makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join(\"\");\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n}\n\n// prettier-ignore\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n const length = str.length,\n strBuf = [];\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n // UTF16BE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n );\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n // UTF16LE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n );\n }\n } else {\n for (let i = 0; i < length; ++i) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n for (const key in obj) {\n return false;\n }\n return true;\n}\n\nfunction isBool(v) {\n return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n return typeof v === \"number\";\n}\n\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n return arr1.every(function(element, index) {\n return element === arr2[index];\n });\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function(resolve, reject) {\n capability.resolve = function(data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function(reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nconst createObjectURL = (function createObjectURLClosure() {\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n return function createObjectURL(data, contentType, forceDataSchema = false) {\n if (!forceDataSchema && URL.createObjectURL) {\n const blob = new Blob([data], { type: contentType });\n return URL.createObjectURL(blob);\n }\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n})();\n\nexport {\n BaseException,\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n OPS,\n VerbosityLevel,\n UNSUPPORTED_FEATURES,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n FontType,\n ImageKind,\n CMapCompressionType,\n AbortException,\n InvalidPDFException,\n MissingPDFException,\n NativeImageDecoding,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n StreamType,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n Util,\n FormatError,\n arrayByteLength,\n arraysToBytes,\n assert,\n bytesToString,\n createPromiseCapability,\n createObjectURL,\n getVerbosityLevel,\n info,\n isArrayBuffer,\n isArrayEqual,\n isBool,\n isEmptyObj,\n isNum,\n isString,\n isSameOrigin,\n createValidAbsoluteUrl,\n IsLittleEndianCached,\n IsEvalSupportedCached,\n removeNullCharacters,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n utf8StringToString,\n warn,\n unreachable,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\n// Skip compatibility checks for modern builds (unless we're running the\n// unit-tests in Node.js/Travis) and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!SKIP_BABEL || (LIB && TESTING)\")) &&\n (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n // Provides support for globalThis in legacy browsers.\n // Support: IE11/Edge, Opera\n if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n // eslint-disable-next-line no-global-assign\n globalThis = require(\"core-js/es/global-this\");\n }\n globalThis._pdfjsCompatibilityChecked = true;\n\n const { isNodeJS } = require(\"./is_node.js\");\n\n const hasDOM = typeof window === \"object\" && typeof document === \"object\";\n const userAgent =\n (typeof navigator !== \"undefined\" && navigator.userAgent) || \"\";\n const isIE = /Trident/.test(userAgent);\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function(chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function(input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Provides support for ChildNode.remove in legacy browsers.\n // Support: IE.\n (function checkChildNodeRemove() {\n if (!hasDOM) {\n return;\n }\n if (typeof Element.prototype.remove !== \"undefined\") {\n return;\n }\n Element.prototype.remove = function() {\n if (this.parentNode) {\n // eslint-disable-next-line mozilla/avoid-removeChild\n this.parentNode.removeChild(this);\n }\n };\n })();\n\n // Provides support for DOMTokenList.prototype.{add, remove}, with more than\n // one parameter, in legacy browsers.\n // Support: IE\n (function checkDOMTokenListAddRemove() {\n if (!hasDOM || isNodeJS) {\n return;\n }\n const div = document.createElement(\"div\");\n div.classList.add(\"testOne\", \"testTwo\");\n\n if (\n div.classList.contains(\"testOne\") === true &&\n div.classList.contains(\"testTwo\") === true\n ) {\n return;\n }\n const OriginalDOMTokenListAdd = DOMTokenList.prototype.add;\n const OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;\n\n DOMTokenList.prototype.add = function(...tokens) {\n for (const token of tokens) {\n OriginalDOMTokenListAdd.call(this, token);\n }\n };\n DOMTokenList.prototype.remove = function(...tokens) {\n for (const token of tokens) {\n OriginalDOMTokenListRemove.call(this, token);\n }\n };\n })();\n\n // Provides support for DOMTokenList.prototype.toggle, with the optional\n // \"force\" parameter, in legacy browsers.\n // Support: IE\n (function checkDOMTokenListToggle() {\n if (!hasDOM || isNodeJS) {\n return;\n }\n const div = document.createElement(\"div\");\n if (div.classList.toggle(\"test\", 0) === false) {\n return;\n }\n\n DOMTokenList.prototype.toggle = function(token) {\n const force =\n arguments.length > 1 ? !!arguments[1] : !this.contains(token);\n return this[force ? \"add\" : \"remove\"](token), force;\n };\n })();\n\n // Provides support for window.history.{pushState, replaceState}, with the\n // `url` parameter set to `undefined`, without breaking the document URL.\n // Support: IE\n (function checkWindowHistoryPushStateReplaceState() {\n if (!hasDOM || !isIE) {\n return;\n }\n const OriginalPushState = window.history.pushState;\n const OriginalReplaceState = window.history.replaceState;\n\n window.history.pushState = function(state, title, url) {\n const args = url === undefined ? [state, title] : [state, title, url];\n OriginalPushState.apply(this, args);\n };\n window.history.replaceState = function(state, title, url) {\n const args = url === undefined ? [state, title] : [state, title, url];\n OriginalReplaceState.apply(this, args);\n };\n })();\n\n // Provides support for String.prototype.startsWith in legacy browsers.\n // Support: IE, Chrome<41\n (function checkStringStartsWith() {\n if (String.prototype.startsWith) {\n return;\n }\n require(\"core-js/es/string/starts-with.js\");\n })();\n\n // Provides support for String.prototype.endsWith in legacy browsers.\n // Support: IE, Chrome<41\n (function checkStringEndsWith() {\n if (String.prototype.endsWith) {\n return;\n }\n require(\"core-js/es/string/ends-with.js\");\n })();\n\n // Provides support for String.prototype.includes in legacy browsers.\n // Support: IE, Chrome<41\n (function checkStringIncludes() {\n if (String.prototype.includes) {\n return;\n }\n require(\"core-js/es/string/includes.js\");\n })();\n\n // Provides support for Array.prototype.includes in legacy browsers.\n // Support: IE, Chrome<47\n (function checkArrayIncludes() {\n if (Array.prototype.includes) {\n return;\n }\n require(\"core-js/es/array/includes.js\");\n })();\n\n // Provides support for Array.from in legacy browsers.\n // Support: IE\n (function checkArrayFrom() {\n if (Array.from) {\n return;\n }\n require(\"core-js/es/array/from.js\");\n })();\n\n // Provides support for Object.assign in legacy browsers.\n // Support: IE\n (function checkObjectAssign() {\n if (Object.assign) {\n return;\n }\n require(\"core-js/es/object/assign.js\");\n })();\n\n // Provides support for Math.log2 in legacy browsers.\n // Support: IE, Chrome<38\n (function checkMathLog2() {\n if (Math.log2) {\n return;\n }\n Math.log2 = require(\"core-js/es/math/log2.js\");\n })();\n\n // Provides support for Number.isNaN in legacy browsers.\n // Support: IE.\n (function checkNumberIsNaN() {\n if (Number.isNaN) {\n return;\n }\n Number.isNaN = require(\"core-js/es/number/is-nan.js\");\n })();\n\n // Provides support for Number.isInteger in legacy browsers.\n // Support: IE, Chrome<34\n (function checkNumberIsInteger() {\n if (Number.isInteger) {\n return;\n }\n Number.isInteger = require(\"core-js/es/number/is-integer.js\");\n })();\n\n // Support: IE, Safari<11, Chrome<63\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise && globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: IE\n (function checkURL() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders don't use the `URL` constructor, so it\n // doesn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n // The `URL` constructor is assumed to be available in the extension\n // builds.\n return;\n }\n globalThis.URL = require(\"core-js/web/url.js\");\n })();\n\n // Support: IE, Node.js\n (function checkReadableStream() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `ReadableStream`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n let isReadableStreamSupported = false;\n\n if (typeof ReadableStream !== \"undefined\") {\n // MS Edge may say it has ReadableStream but they are not up to spec yet.\n try {\n // eslint-disable-next-line no-new\n new ReadableStream({\n start(controller) {\n controller.close();\n },\n });\n isReadableStreamSupported = true;\n } catch (e) {\n // The ReadableStream constructor cannot be used.\n }\n }\n if (isReadableStreamSupported) {\n return;\n }\n globalThis.ReadableStream = require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n })();\n\n // We want to support Map iteration, but it doesn't seem possible to easily\n // test for that specifically; hence using a similarly unsupported property.\n // Support: IE11\n (function checkMapEntries() {\n if (globalThis.Map && globalThis.Map.prototype.entries) {\n return;\n }\n globalThis.Map = require(\"core-js/es/map/index.js\");\n })();\n\n // We want to support Set iteration, but it doesn't seem possible to easily\n // test for that specifically; hence using a similarly unsupported property.\n // Support: IE11\n (function checkSetEntries() {\n if (globalThis.Set && globalThis.Set.prototype.entries) {\n return;\n }\n globalThis.Set = require(\"core-js/es/set/index.js\");\n })();\n\n // Support: IE<11, Safari<8, Chrome<36\n (function checkWeakMap() {\n if (globalThis.WeakMap) {\n return;\n }\n globalThis.WeakMap = require(\"core-js/es/weak-map/index.js\");\n })();\n\n // Support: IE11\n (function checkWeakSet() {\n if (globalThis.WeakSet) {\n return;\n }\n globalThis.WeakSet = require(\"core-js/es/weak-set/index.js\");\n })();\n\n // Provides support for String.codePointAt in legacy browsers.\n // Support: IE11.\n (function checkStringCodePointAt() {\n if (String.prototype.codePointAt) {\n return;\n }\n require(\"core-js/es/string/code-point-at.js\");\n })();\n\n // Provides support for String.fromCodePoint in legacy browsers.\n // Support: IE11.\n (function checkStringFromCodePoint() {\n if (String.fromCodePoint) {\n return;\n }\n String.fromCodePoint = require(\"core-js/es/string/from-code-point.js\");\n })();\n\n // Support: IE\n (function checkSymbol() {\n if (globalThis.Symbol) {\n return;\n }\n require(\"core-js/es/symbol/index.js\");\n })();\n\n // Provides support for String.prototype.padStart in legacy browsers.\n // Support: IE, Chrome<57\n (function checkStringPadStart() {\n if (String.prototype.padStart) {\n return;\n }\n require(\"core-js/es/string/pad-start.js\");\n })();\n\n // Provides support for String.prototype.padEnd in legacy browsers.\n // Support: IE, Chrome<57\n (function checkStringPadEnd() {\n if (String.prototype.padEnd) {\n return;\n }\n require(\"core-js/es/string/pad-end.js\");\n })();\n\n // Provides support for Object.values in legacy browsers.\n // Support: IE, Chrome<54\n (function checkObjectValues() {\n if (Object.values) {\n return;\n }\n Object.values = require(\"core-js/es/object/values.js\");\n })();\n}\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isSameOrigin,\n MissingPDFException,\n NativeImageDecoding,\n PasswordException,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n loadScript,\n PageViewport,\n releaseImageResources,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport { apiCompatibilityParams } from \"./api_compatibility.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { WebGLContext } from \"./webgl.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {IPDFStream}\n */\n\n/** @type IPDFStreamFactory */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates a IPDFStream as an alternative PDF data\n * transport.\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - the factory function\n * that takes document initialization parameters (including a \"url\") and returns\n * an instance of IPDFStream.\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string} [url] - The URL of the PDF.\n * @property {TypedArray|Array|string} [data] - Binary PDF data. Use typed\n * arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use atob() to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is false.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for\n * progress reports and range requests operations.\n * @property {PDFDataRangeTransport} [range]\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes\n * fetched per range request. The default value is 2^16 = 65536.\n * @property {PDFWorker} [worker] - The worker that will be used for\n * the loading and parsing of the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the\n * constants from {VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document,\n * used when attempting to recover valid absolute URLs for annotations, and\n * outline items, that (incorrectly) only specify relative URLs.\n * @property {string} [nativeImageDecoderSupport] - Strategy for\n * decoding certain (simple) JPEG images in the browser. This is useful for\n * environments without DOM image and canvas support, such as e.g. Node.js.\n * Valid values are 'decode', 'display' or 'none'; where 'decode' is intended\n * for browsers with full image/canvas support, 'display' for environments\n * with limited image support through stubs (useful for SVG conversion),\n * and 'none' where JPEG images will be decoded entirely by PDF.js.\n * The default value is 'decode'.\n * @property {string} [cMapUrl] - The URL where the predefined\n * Adobe CMaps are located. Include trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are\n * binary packed.\n * @property {Object} [CMapReaderFactory] - The factory that will be\n * used when reading built-in CMap files. Providing a custom factory is useful\n * for environments without `XMLHttpRequest` support, such as e.g. Node.js.\n * The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size\n * in total pixels, i.e. width * height. Images above this value will not be\n * rendered. Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can eval\n * strings as JS. Primarily used to improve performance of font rendering,\n * and when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are\n * converted to OpenType fonts and loaded via font face rules. If disabled,\n * fonts will be rendered using a built-in font renderer that constructs the\n * glyphs with primitive path commands. The default value is `false`.\n * @property {boolean} [disableRange] - Disable range request loading\n * of PDF files. When enabled, and if the server supports partial content\n * requests, then the PDF will be fetched in chunks.\n * The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file\n * data. By default PDF.js attempts to load PDFs in chunks.\n * The default value is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF\n * file data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n * NOTE: It is also necessary to disable streaming, see above,\n * in order for disabling of pre-fetching to work correctly.\n * @property {boolean} [disableCreateObjectURL] - Disable the use of\n * `URL.createObjectURL`, for compatibility with older browsers.\n * The default value is `false`.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging\n * PDF.js (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * @typedef {Object} PDFDocumentStats\n * @property {Object} streamTypes - Used stream types in the document (an item\n * is set to true if specific stream ID was used in the document).\n * @property {Object} fontTypes - Used font types in the document (an item\n * is set to true if specific font ID was used in the document).\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)\n * is used, which means it must follow the same origin rules that any XHR does\n * e.g. No cross domain requests without CORS.\n *\n * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src\n * Can be a url to where a PDF is located, a typed array (Uint8Array)\n * already populated with data or parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\") {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either Uint8Array, string or a parameter object\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n if (key === \"url\" && typeof window !== \"undefined\") {\n // The full path is required in the 'url' field.\n params[key] = new URL(source[key], window.location).href;\n continue;\n } else if (key === \"range\") {\n rangeTransport = source[key];\n continue;\n } else if (key === \"worker\") {\n worker = source[key];\n continue;\n } else if (key === \"data\" && !(source[key] instanceof Uint8Array)) {\n // Converting string or array-like data to Uint8Array.\n const pdfBytes = source[key];\n if (typeof pdfBytes === \"string\") {\n params[key] = stringToBytes(pdfBytes);\n } else if (\n typeof pdfBytes === \"object\" &&\n pdfBytes !== null &&\n !isNaN(pdfBytes.length)\n ) {\n params[key] = new Uint8Array(pdfBytes);\n } else if (isArrayBuffer(pdfBytes)) {\n params[key] = new Uint8Array(pdfBytes);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string or array-like object is expected in the \" +\n \"data property.\"\n );\n }\n continue;\n }\n params[key] = source[key];\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory = params.CMapReaderFactory || DOMCMapReaderFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.pdfBug = params.pdfBug === true;\n\n const NativeImageDecoderValues = Object.values(NativeImageDecoding);\n if (\n params.nativeImageDecoderSupport === undefined ||\n !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)\n ) {\n params.nativeImageDecoderSupport =\n apiCompatibilityParams.nativeImageDecoderSupport ||\n NativeImageDecoding.DECODE;\n }\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = apiCompatibilityParams.disableFontFace || false;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n if (typeof params.disableCreateObjectURL !== \"boolean\") {\n params.disableCreateObjectURL =\n apiCompatibilityParams.disableCreateObjectURL || false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function() {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n return _fetchDocument(worker, params, rangeTransport, docId).then(\n function(workerId) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n messageHandler.postMessageTransfers = worker.postMessageTransfers;\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId Unique document id, used as MessageHandler id.\n * @returns {Promise} The promise, which is resolved when worker id of\n * MessageHandler is known.\n * @private\n */\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed\"));\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n }\n return worker.messageHandler\n .sendWithPromise(\"GetDocRequest\", {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n disableCreateObjectURL: source.disableCreateObjectURL,\n postMessageTransfers: worker.postMessageTransfers,\n docBaseUrl: source.docBaseUrl,\n nativeImageDecoderSupport: source.nativeImageDecoderSupport,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n })\n .then(function(workerId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n });\n}\n\nconst PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {\n let nextDocumentId = 0;\n\n /**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\n class PDFDocumentLoadingTask {\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique document loading task id -- used in MessageHandlers.\n * @type {string}\n */\n this.docId = \"d\" + nextDocumentId++;\n\n /**\n * Shows if loading task is destroyed.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if wrong or no password was provided.\n * The callback receives two parameters: function that needs to be called\n * with new password and reason (see {PasswordResponses}).\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar). The callback receives\n * an {Object} with the properties: {number} loaded and {number} total.\n */\n this.onProgress = null;\n\n /**\n * Callback to when unsupported feature is used. The callback receives\n * an {UNSUPPORTED_FEATURES} argument.\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Aborts all network requests and destroys worker.\n * @returns {Promise} A promise that is resolved after destruction activity\n * is completed.\n */\n destroy() {\n this.destroyed = true;\n\n const transportDestroyed = !this._transport\n ? Promise.resolve()\n : this._transport.destroy();\n return transportDestroyed.then(() => {\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n });\n }\n\n /**\n * Registers callbacks to indicate the document loading completion.\n * @ignore\n */\n then(onFulfilled, onRejected) {\n throw new Error(\n \"Removed API method: \" +\n \"PDFDocumentLoadingTask.then, use the `promise` getter instead.\"\n );\n }\n }\n return PDFDocumentLoadingTask;\n})();\n\n/**\n * Abstract class to support range requests file loading.\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} progressiveDone\n */\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a PDFDocument in the worker thread. Also, contains commonly used\n * properties that can be read synchronously.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n\n /**\n * @type {number} Total number of pages the PDF contains.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {string} A (not guaranteed to be) unique ID to identify a PDF.\n */\n get fingerprint() {\n return this._pdfInfo.fingerprint;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with a {@link PDFPageProxy}\n * object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {{num: number, gen: number}} ref - The page reference. Must have\n * the `num` and `gen` properties.\n * @returns {Promise} A promise that is resolved with the page index (starting\n * from zero) that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a lookup table for\n * mapping named destinations to reference numbers.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise} A promise that is resolved with all information\n * of the given named destination.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array} containing\n * the page labels that correspond to the page indexes, or `null` when\n * no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string} containing\n * the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string} containing\n * the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Object} containing\n * the viewer preferences.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Object} containing\n * the currently supported actions, or `null` when no OpenAction exists.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n getOpenActionDestination() {\n deprecated(\"getOpenActionDestination, use getOpenAction instead.\");\n return this.getOpenAction().then(function(openAction) {\n return openAction && openAction.dest ? openAction.dest : null;\n });\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a lookup table for\n * mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array} of all the\n * JavaScript strings in the name tree, or `null` if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array} that is a\n * tree outline (if it has one) of the PDF. The tree is in the format of:\n * [\n * {\n * title: string,\n * bold: boolean,\n * italic: boolean,\n * color: rgb Uint8ClampedArray,\n * count: integer or undefined,\n * dest: dest obj,\n * url: string,\n * items: array of more items like this\n * },\n * ...\n * ]\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array} that contains\n * the permission flags for the PDF document, or `null` when\n * no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Object} that has\n * `info` and `metadata` properties. `info` is an {Object} filled with\n * anything available in the information dictionary and similarly\n * `metadata` is a {Metadata} object with information from the metadata\n * section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {TypedArray} that has\n * the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise} A promise that is resolved when the document's data\n * is loaded. It is resolved with an {Object} that contains the `length`\n * property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * @returns {Promise} A promise this is resolved with current statistics about\n * document structures (see {@link PDFDocumentStats}).\n */\n getStats() {\n return this._transport.getStats();\n }\n\n /**\n * Cleans up resources allocated by the document, on both the main- and\n * worker-threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup() {\n return this._transport.startCleanup();\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {Object} A subset of the current {DocumentInitParameters}, which are\n * either needed in the viewer and/or whose default values may be affected\n * by the `apiCompatibilityParams`.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} normalizeWhitespace - replaces all occurrences of\n * whitespace with standard spaces (0x20). The default value is `false`.\n * @property {boolean} disableCombineTextItems - do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {array} items - array of {@link TextItem}\n * @property {Object} styles - {@link TextStyle} objects, indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - text content.\n * @property {string} dir - text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {array} transform - transformation matrix.\n * @property {number} width - width in device space.\n * @property {number} height - height in device space.\n * @property {string} fontName - font name used by pdf.js for converted font.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - font ascent.\n * @property {number} descent - font descent.\n * @property {boolean} vertical - text is in vertical mode.\n * @property {string} fontFamily - possible font family\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} intent - Determines the annotations that will be fetched,\n * can be either 'display' (viewable annotations) or 'print'\n * (printable annotations).\n * If the parameter is omitted, all annotations are fetched.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by\n * calling the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display' or 'print'\n * (default value is 'display').\n * @property {boolean} [enableWebGL] - Enables WebGL accelerated rendering\n * for some operations. The default value is `false`.\n * @property {boolean} [renderInteractiveForms] - Whether or not\n * interactive form elements are rendered in the display\n * layer. If so, we do not render them on canvas as well.\n * @property {Array} [transform] - Additional transform, applied\n * just before viewport transform.\n * @property {Object} [imageLayer] - An object that has beginLayout,\n * endLayout and appendImage functions.\n * @property {Object} [canvasFactory] - The factory that will be used\n * when creating canvases. The default value is\n * {DOMCanvasFactory}.\n * @property {Object} [background] - Background to use for the canvas.\n * Can use any valid canvas.fillStyle: A DOMString parsed as\n * CSS <color> value, a CanvasGradient object (a linear or\n * radial gradient) or a CanvasPattern object (a repetitive\n * image). The default value is 'rgb(255,255,255)'.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a PDFPage in the worker thread.\n * @alias PDFPageProxy\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this.intentStates = Object.create(null);\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {Object} The reference that points to this page. It has `num` and\n * `gen` properties.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array} An array of the visible portion of the PDF page in user\n * space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n (arguments.length > 1 || typeof arguments[0] === \"number\")\n ) {\n throw new Error(\n \"PDFPageProxy.getViewport is called with obsolete arguments.\"\n );\n }\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise} A promise that is resolved with an {Array} of the\n * annotation objects.\n */\n getAnnotations({ intent = null } = {}) {\n if (!this.annotationsPromise || this.annotationsIntent !== intent) {\n this.annotationsPromise = this._transport.getAnnotations(\n this._pageIndex,\n intent\n );\n this.annotationsIntent = intent;\n }\n return this.annotationsPromise;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n * @param {RenderParameters} params Page render parameters.\n * @returns {RenderTask} An object that contains the promise, which\n * is resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n enableWebGL = false,\n renderInteractiveForms = false,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n }) {\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const renderingIntent = intent === \"print\" ? \"print\" : \"display\";\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n const intentState = this.intentStates[renderingIntent];\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance = canvasFactory || new DOMCanvasFactory();\n const webGLContext = new WebGLContext({\n enable: enableWebGL,\n });\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n renderInteractiveForms: renderInteractiveForms === true,\n });\n }\n\n const complete = error => {\n const i = intentState.renderTasks.indexOf(internalRenderTask);\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || renderingIntent === \"print\") {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error,\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n webGLContext,\n useRequestAnimationFrame: renderingIntent !== \"print\",\n pdfBug: this._pdfBug,\n });\n\n if (!intentState.renderTasks) {\n intentState.renderTasks = [];\n }\n intentState.renderTasks.push(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n intentState.displayReadyCapability.promise\n .then(transparency => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics(transparency);\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @returns {Promise} A promise resolved with an {@link PDFOperatorList}\n * object that represents page's operator list.\n */\n getOperatorList() {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n const i = intentState.renderTasks.indexOf(opListTask);\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n }\n }\n\n const renderingIntent = \"oplist\";\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n const intentState = this.intentStates[renderingIntent];\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = {};\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n intentState.renderTasks = [];\n intentState.renderTasks.push(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n });\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} ReadableStream to read textContent chunks.\n */\n streamTextContent({\n normalizeWhitespace = false,\n disableCombineTextItems = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n normalizeWhitespace: normalizeWhitespace === true,\n combineTextItems: disableCombineTextItems !== true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise} That is resolved a {@link TextContent}\n * object that represent the page text content.\n */\n getTextContent(params = {}) {\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function(resolve, reject) {\n function pump() {\n reader.read().then(function({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n this._transport.pageCache[this._pageIndex] = null;\n\n const waitOn = [];\n Object.keys(this.intentStates).forEach(intent => {\n const intentState = this.intentStates[intent];\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intent === \"oplist\") {\n // Avoid errors below, since the renderTasks are just stubs.\n return;\n }\n intentState.renderTasks.forEach(function(renderTask) {\n const renderCompleted = renderTask.capability.promise.catch(\n function() {}\n ); // ignoring failures\n waitOn.push(renderCompleted);\n renderTask.cancel();\n });\n });\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicating if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (\n !this.pendingCleanup ||\n Object.keys(this.intentStates).some(intent => {\n const intentState = this.intentStates[intent];\n return (\n intentState.renderTasks.length !== 0 ||\n !intentState.operatorList.lastChunk\n );\n })\n ) {\n return false;\n }\n\n Object.keys(this.intentStates).forEach(intent => {\n delete this.intentStates[intent];\n });\n this.objs.clear();\n this.annotationsPromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, intent) {\n const intentState = this.intentStates[intent];\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (let i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList(args) {\n assert(\n args.intent,\n 'PDFPageProxy._pumpOperatorList: Expected \"intent\" argument.'\n );\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n args\n );\n const reader = readableStream.getReader();\n\n const intentState = this.intentStates[args.intent];\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (let i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n assert(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null),\n 'PDFPageProxy._abortOperatorList: Expected \"reason\" argument.'\n );\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.length !== 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader.cancel(\n new AbortException(reason && reason.message)\n );\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n Object.keys(this.intentStates).some(intent => {\n if (this.intentStates[intent] === intentState) {\n delete this.intentStates[intent];\n return true;\n }\n return false;\n });\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor(defer = true) {\n this._listeners = [];\n this._defer = defer;\n this._deferred = Promise.resolve(undefined);\n }\n\n postMessage(obj, transfers) {\n function cloneValue(value) {\n // Trying to perform a structured clone close to the spec, including\n // transfers.\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n if (cloned.has(value)) {\n // already cloned the object\n return cloned.get(value);\n }\n let buffer, result;\n if ((buffer = value.buffer) && isArrayBuffer(buffer)) {\n // We found object with ArrayBuffer (typed array).\n const transferable = transfers && transfers.includes(buffer);\n if (transferable) {\n result = new value.constructor(\n buffer,\n value.byteOffset,\n value.byteLength\n );\n } else {\n result = new value.constructor(value);\n }\n cloned.set(value, result);\n return result;\n }\n result = Array.isArray(value) ? [] : {};\n cloned.set(value, result); // adding to cache now for cyclic references\n // Cloning all value and object properties, however ignoring properties\n // defined via getter.\n for (const i in value) {\n let desc,\n p = value;\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n if (typeof desc.value === \"undefined\") {\n continue;\n }\n if (typeof desc.value === \"function\") {\n if (value.hasOwnProperty && value.hasOwnProperty(i)) {\n throw new Error(\n `LoopbackPort.postMessage - cannot clone: ${value[i]}`\n );\n }\n continue;\n }\n result[i] = cloneValue(desc.value);\n }\n return result;\n }\n\n if (!this._defer) {\n this._listeners.forEach(listener => {\n listener.call(this, { data: obj });\n });\n return;\n }\n\n const cloned = new WeakMap();\n const e = { data: cloneValue(obj) };\n this._deferred.then(() => {\n this._listeners.forEach(listener => {\n listener.call(this, e);\n });\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort`.\n * @property {number} [verbosity] - Controls the logging level; the\n * constants from {VerbosityLevel} should be used.\n */\n\nconst PDFWorker = (function PDFWorkerClosure() {\n const pdfWorkerPorts = new WeakMap();\n let isWorkerDisabled = false;\n let fallbackWorkerSrc;\n let nextFakeWorkerId = 0;\n let fakeWorkerCapability;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n isWorkerDisabled = true;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"LIB\")) {\n fallbackWorkerSrc = \"../pdf.worker.js\";\n } else {\n fallbackWorkerSrc = \"./pdf.worker.js\";\n }\n } else if (typeof document === \"object\" && \"currentScript\" in document) {\n const pdfjsFilePath =\n document.currentScript && document.currentScript.src;\n if (pdfjsFilePath) {\n fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n }\n\n function getWorkerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (typeof fallbackWorkerSrc !== \"undefined\") {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n function getMainThreadWorkerMessageHandler() {\n let mainWorkerMessageHandler;\n try {\n mainWorkerMessageHandler =\n globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler;\n } catch (ex) {\n /* Ignore errors. */\n }\n return mainWorkerMessageHandler || null;\n }\n\n // Loads worker code into main thread.\n function setupFakeWorkerGlobal() {\n if (fakeWorkerCapability) {\n return fakeWorkerCapability.promise;\n }\n fakeWorkerCapability = createPromiseCapability();\n\n const loader = async function() {\n const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `<script>` tag.\n return mainWorkerMessageHandler;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n if (typeof SystemJS !== \"object\") {\n throw new Error(\"SystemJS must be used to load fake worker.\");\n }\n const worker = await SystemJS.import(\"pdfjs/core/worker.js\");\n return worker.WorkerMessageHandler;\n }\n if (\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n // eslint-disable-next-line no-undef\n typeof __non_webpack_require__ === \"function\"\n ) {\n // Since bundlers, such as Webpack, cannot be told to leave `require`\n // statements alone we are thus forced to jump through hoops in order\n // to prevent `Critical dependency: ...` warnings in third-party\n // deployments of the built `pdf.js`/`pdf.worker.js` files; see\n // https://github.com/webpack/webpack/issues/8826\n //\n // The following hack is based on the assumption that code running in\n // Node.js won't ever be affected by e.g. Content Security Policies that\n // prevent the use of `eval`. If that ever occurs, we should revert this\n // to a normal `__non_webpack_require__` statement and simply document\n // the Webpack warnings instead (telling users to ignore them).\n //\n // eslint-disable-next-line no-eval\n const worker = eval(\"require\")(getWorkerSrc());\n return worker.WorkerMessageHandler;\n }\n await loadScript(getWorkerSrc());\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject);\n\n return fakeWorkerCapability.promise;\n }\n\n function createCDNWrapper(url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = \"importScripts('\" + url + \"');\";\n return URL.createObjectURL(new Blob([wrapper]));\n }\n\n /**\n * PDF.js web worker abstraction, which controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n */\n class PDFWorker {\n /**\n * @param {PDFWorkerParameters} params - Worker initialization parameters.\n */\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && pdfWorkerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.postMessageTransfers = true;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n pdfWorkerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n get promise() {\n return this._readyCapability.promise;\n }\n\n get port() {\n return this._port;\n }\n\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function() {\n // Ignoring 'ready' event -- MessageHandler shall be already initialized\n // and ready to accept the messages.\n });\n this._readyCapability.resolve();\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n typeof Worker !== \"undefined\" &&\n !isWorkerDisabled &&\n !getMainThreadWorkerMessageHandler()\n ) {\n let workerSrc = getWorkerSrc();\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n const worker = new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n // supportTypedArray\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n if (!data.supportTransfers) {\n this.postMessageTransfers = false;\n }\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array([\n this.postMessageTransfers ? 255 : 0,\n ]);\n // Some versions of Opera throw a DATA_CLONE_ERR on serializing the\n // typed array. Also, checking if we can use transfers.\n try {\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n } catch (ex) {\n warn(\"Cannot use postMessage transfers.\");\n testObj[0] = 0;\n messageHandler.send(\"test\", testObj);\n }\n };\n\n // It might take time for worker to initialize (especially when AMD\n // loader is used). We will try to send test immediately, and then\n // when 'ready' message will arrive. The worker shall process only\n // first received 'test'.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n isWorkerDisabled = true;\n }\n\n setupFakeWorkerGlobal()\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = \"fake\" + nextFakeWorkerId++;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n pdfWorkerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization\n * parameters.\n */\n static fromPort(params) {\n if (!params || !params.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (pdfWorkerPorts.has(params.port)) {\n return pdfWorkerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n static getWorkerSrc() {\n return getWorkerSrc();\n }\n }\n return PDFWorker;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n });\n this._params = params;\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked,\n });\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n\n this.pageCache = [];\n this.pagePromises = [];\n this.downloadInfoCapability = createPromiseCapability();\n\n this.setupMessageHandler();\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = createPromiseCapability();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(\n new Error(\"Worker was destroyed during onPassword callback\")\n );\n }\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n this.pageCache.forEach(function(page) {\n if (page) {\n waitOn.push(page._destroy());\n }\n });\n this.pageCache.length = 0;\n this.pagePromises.length = 0;\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.fontLoader.clear();\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(\n new AbortException(\"Worker was terminated.\")\n );\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const { messageHandler, loadingTask } = this;\n\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream);\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader\n .read()\n .then(function({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(isArrayBuffer(value));\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n };\n });\n\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = createPromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress && loadingTask.onProgress) {\n loadingTask.onProgress(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: evt.loaded,\n total: evt.total,\n });\n }\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n });\n\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream);\n const rangeReader = this._networkStream.getRangeReader(\n data.begin,\n data.end\n );\n\n // When streaming is enabled, it's possible that the data requested here\n // has already been fetched via the `_fullRequestReader` implementation.\n // However, given that the PDF data is loaded asynchronously on the\n // main-thread and then sent via `postMessage` to the worker-thread,\n // it may not have been available during parsing (hence the attempt to\n // use range requests here).\n //\n // To avoid wasting time and resources here, we'll thus *not* dispatch\n // range requests if the data was already loaded but has not been sent to\n // the worker-thread yet (which will happen via the `_fullRequestReader`).\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader\n .read()\n .then(function({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(isArrayBuffer(value));\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n };\n });\n\n messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n this._numPages = pdfInfo.numPages;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n\n messageHandler.on(\"DocException\", function(ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n }\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(reason instanceof Error, \"DocException: expected an Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = createPromiseCapability();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n this._passwordCapability.resolve({\n password,\n });\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(\n new PasswordException(exception.message, exception.code)\n );\n }\n return this._passwordCapability.promise;\n });\n\n messageHandler.on(\"DataLoaded\", data => {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.length,\n total: data.length,\n });\n }\n this.downloadInfoCapability.resolve(data);\n });\n\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.pageCache[data.pageIndex];\n page._startRenderPage(data.transparency, data.intent);\n });\n\n messageHandler.on(\"commonobj\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const [id, type, exportedData] = data;\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n if (\n params.pdfBug &&\n globalThis.FontInspector &&\n globalThis.FontInspector.enabled\n ) {\n fontRegistry = {\n registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n },\n };\n }\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry,\n });\n\n this.fontLoader.bind(font).then(\n () => {\n this.commonObjs.resolve(id, font);\n },\n reason => {\n messageHandler\n .sendWithPromise(\"FontFallback\", {\n id,\n })\n .finally(() => {\n this.commonObjs.resolve(id, font);\n });\n }\n );\n break;\n case \"FontPath\":\n case \"FontType3Res\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n\n messageHandler.on(\"obj\", data => {\n if (this.destroyed) {\n // Ignore any pending requests if the worker was terminated.\n return undefined;\n }\n\n const [id, pageIndex, type, imageData] = data;\n const pageProxy = this.pageCache[pageIndex];\n if (pageProxy.objs.has(id)) {\n return undefined;\n }\n\n switch (type) {\n case \"JpegStream\":\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = function() {\n resolve(img);\n };\n img.onerror = function() {\n // Note that when the browser image loading/decoding fails,\n // we'll fallback to the built-in PDF.js JPEG decoder; see\n // `PartialEvaluator.buildPaintImageXObject` in the\n // `src/core/evaluator.js` file.\n reject(new Error(\"Error during JPEG image loading\"));\n\n // Always remember to release the image data if errors occurred.\n releaseImageResources(img);\n };\n img.src = imageData;\n }).then(img => {\n pageProxy.objs.resolve(id, img);\n });\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n if (\n imageData &&\n \"data\" in imageData &&\n imageData.data.length > MAX_IMAGE_SIZE_TO_STORE\n ) {\n pageProxy.cleanupAfterRender = true;\n }\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n return undefined;\n });\n\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.loaded,\n total: data.total,\n });\n }\n });\n\n messageHandler.on(\n \"UnsupportedFeature\",\n this._onUnsupportedFeature.bind(this)\n );\n\n messageHandler.on(\"JpegDecode\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed\"));\n }\n\n if (typeof document === \"undefined\") {\n // Make sure that this code is not executing in node.js, as\n // it's using DOM image, and there is no library to support that.\n return Promise.reject(new Error('\"document\" is not defined.'));\n }\n\n const [imageUrl, components] = data;\n if (components !== 3 && components !== 1) {\n return Promise.reject(\n new Error(\"Only 3 components or 1 component can be returned\")\n );\n }\n\n return new Promise(function(resolve, reject) {\n const img = new Image();\n img.onload = function() {\n const { width, height } = img;\n const size = width * height;\n const rgbaLength = size * 4;\n const buf = new Uint8ClampedArray(size * components);\n let tmpCanvas = document.createElement(\"canvas\");\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n let tmpCtx = tmpCanvas.getContext(\"2d\");\n tmpCtx.drawImage(img, 0, 0);\n const data = tmpCtx.getImageData(0, 0, width, height).data;\n\n if (components === 3) {\n for (let i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {\n buf[j] = data[i];\n buf[j + 1] = data[i + 1];\n buf[j + 2] = data[i + 2];\n }\n } else if (components === 1) {\n for (let i = 0, j = 0; i < rgbaLength; i += 4, j++) {\n buf[j] = data[i];\n }\n }\n resolve({ data: buf, width, height });\n\n // Immediately release the image data once decoding has finished.\n releaseImageResources(img);\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n tmpCanvas.width = 0;\n tmpCanvas.height = 0;\n tmpCanvas = null;\n tmpCtx = null;\n };\n img.onerror = function() {\n reject(new Error(\"JpegDecode failed to load image\"));\n\n // Always remember to release the image data if errors occurred.\n releaseImageResources(img);\n };\n img.src = imageUrl;\n });\n });\n\n messageHandler.on(\"FetchBuiltInCMap\", (data, sink) => {\n if (this.destroyed) {\n sink.error(new Error(\"Worker was destroyed\"));\n return;\n }\n let fetched = false;\n\n sink.onPull = () => {\n if (fetched) {\n sink.close();\n return;\n }\n fetched = true;\n\n this.CMapReaderFactory.fetch(data)\n .then(function(builtInCMap) {\n sink.enqueue(builtInCMap, 1, [builtInCMap.cMapData.buffer]);\n })\n .catch(function(reason) {\n sink.error(reason);\n });\n };\n });\n }\n\n _onUnsupportedFeature({ featureId }) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (this.loadingTask.onUnsupportedFeature) {\n this.loadingTask.onUnsupportedFeature(featureId);\n }\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n getPage(pageNumber) {\n if (\n !Number.isInteger(pageNumber) ||\n pageNumber <= 0 ||\n pageNumber > this._numPages\n ) {\n return Promise.reject(new Error(\"Invalid page request\"));\n }\n\n const pageIndex = pageNumber - 1;\n if (pageIndex in this.pagePromises) {\n return this.pagePromises[pageIndex];\n }\n const promise = this.messageHandler\n .sendWithPromise(\"GetPage\", {\n pageIndex,\n })\n .then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(\n pageIndex,\n pageInfo,\n this,\n this._params.pdfBug\n );\n this.pageCache[pageIndex] = page;\n return page;\n });\n this.pagePromises[pageIndex] = promise;\n return promise;\n }\n\n getPageIndex(ref) {\n return this.messageHandler\n .sendWithPromise(\"GetPageIndex\", {\n ref,\n })\n .catch(function(reason) {\n return Promise.reject(new Error(reason));\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent,\n });\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id,\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n return this.messageHandler\n .sendWithPromise(\"GetMetadata\", null)\n .then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader\n ? this._fullReader.filename\n : null,\n };\n });\n }\n\n getStats() {\n return this.messageHandler.sendWithPromise(\"GetStats\", null);\n }\n\n startCleanup() {\n return this.messageHandler.sendWithPromise(\"Cleanup\", null).then(() => {\n for (let i = 0, ii = this.pageCache.length; i < ii; i++) {\n const page = this.pageCache[i];\n if (page) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\n `startCleanup: Page ${i + 1} is currently rendering.`\n );\n }\n }\n }\n this.commonObjs.clear();\n this.fontLoader.clear();\n });\n }\n\n get loadingParams() {\n const params = this._params;\n return shadow(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n disableCreateObjectURL: params.disableCreateObjectURL,\n disableFontFace: params.disableFontFace,\n nativeImageDecoderSupport: params.nativeImageDecoderSupport,\n });\n }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n * @ignore\n */\nclass PDFObjects {\n constructor() {\n this._objs = Object.create(null);\n }\n\n /**\n * Ensures there is an object defined for `objId`.\n * @private\n */\n _ensureObj(objId) {\n if (this._objs[objId]) {\n return this._objs[objId];\n }\n return (this._objs[objId] = {\n capability: createPromiseCapability(),\n data: null,\n resolved: false,\n });\n }\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this method throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this method\n * and the object is already resolved, the callback gets called right away.\n */\n get(objId, callback = null) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now.\n if (callback) {\n this._ensureObj(objId).capability.promise.then(callback);\n return null;\n }\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n const obj = this._objs[objId];\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj || !obj.resolved) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n\n has(objId) {\n const obj = this._objs[objId];\n return obj ? obj.resolved : false;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n */\n resolve(objId, data) {\n const obj = this._ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n }\n\n clear() {\n for (const objId in this._objs) {\n const { data } = this._objs[objId];\n\n if (typeof Image !== \"undefined\" && data instanceof Image) {\n // Always release the image data when clearing out the cached objects.\n releaseImageResources(data);\n }\n }\n this._objs = Object.create(null);\n }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n * @alias RenderTask\n */\nclass RenderTask {\n constructor(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n /**\n * Promise for rendering task completion.\n * @type {Promise}\n */\n get promise() {\n return this._internalRenderTask.capability.promise;\n }\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n */\n cancel() {\n this._internalRenderTask.cancel();\n }\n\n /**\n * Registers callbacks to indicate the rendering task completion.\n * @ignore\n */\n then(onFulfilled, onRejected) {\n throw new Error(\n \"Removed API method: \" +\n \"RenderTask.then, use the `promise` getter instead.\"\n );\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nconst InternalRenderTask = (function InternalRenderTaskClosure() {\n const canvasInRendering = new WeakSet();\n\n class InternalRenderTask {\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n operatorList,\n pageIndex,\n canvasFactory,\n webGLContext,\n useRequestAnimationFrame = false,\n pdfBug = false,\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.webGLContext = webGLContext;\n this._pdfBug = pdfBug;\n\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame =\n useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = createPromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n initializeGraphics(transparency = false) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (canvasInRendering.has(this._canvas)) {\n throw new Error(\n \"Cannot use the same canvas during multiple render() operations. \" +\n \"Use different canvas or ensure previous operations were \" +\n \"cancelled or completed.\"\n );\n }\n canvasInRendering.add(this._canvas);\n }\n\n if (\n this._pdfBug &&\n globalThis.StepperManager &&\n globalThis.StepperManager.enabled\n ) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n } = this.params;\n\n this.gfx = new CanvasGraphics(\n canvasContext,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n this.webGLContext,\n imageLayer\n );\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n\n cancel(error = null) {\n this.running = false;\n this.cancelled = true;\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n this.callback(\n error ||\n new RenderingCancelledException(\n `Rendering cancelled, page ${this._pageIndex + 1}`,\n \"canvas\"\n )\n );\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n this._continue();\n }\n\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this.cancel.bind(this));\n });\n } else {\n Promise.resolve()\n .then(this._nextBound)\n .catch(this.cancel.bind(this));\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(\n this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper\n );\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n this.callback();\n }\n }\n }\n }\n return InternalRenderTask;\n})();\n\nconst version =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\nconst build =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n PDFDocumentProxy,\n PDFPageProxy,\n setPDFNetworkStreamFactory,\n version,\n build,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n assert,\n BaseException,\n CMapCompressionType,\n isString,\n removeNullCharacters,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass DOMCanvasFactory {\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n canvas.width = width;\n canvas.height = height;\n return {\n canvas,\n context,\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n}\n\nclass DOMCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (isFetchSupported() && isValidFetchUrl(url, document.baseURI))\n ) {\n return fetch(url)\n .then(async response => {\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n let cMapData;\n if (this.isCompressed) {\n cMapData = new Uint8Array(await response.arrayBuffer());\n } else {\n cMapData = stringToBytes(await response.text());\n }\n return { cMapData, compressionType };\n })\n .catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}` +\n `CMap at: ${url}`\n );\n });\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n\n if (this.isCompressed) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let cMapData;\n if (this.isCompressed && request.response) {\n cMapData = new Uint8Array(request.response);\n } else if (!this.isCompressed && request.responseText) {\n cMapData = stringToBytes(request.responseText);\n }\n if (cMapData) {\n resolve({ cMapData, compressionType });\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n }).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}` +\n `CMap at: ${url}`\n );\n });\n }\n}\n\nclass DOMSVGFactory {\n create(width, height) {\n assert(width > 0 && height > 0, \"Invalid SVG dimensions\");\n\n const svg = document.createElementNS(SVG_NS, \"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", width + \"px\");\n svg.setAttribute(\"height\", height + \"px\");\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n\n return svg;\n }\n\n createElement(type) {\n assert(typeof type === \"string\", \"Invalid SVG element type\");\n\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array} viewBox - The xMin, yMin, xMax and yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n // case 0:\n default:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\n */\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, type) {\n super(msg);\n this.type = type;\n }\n}\n\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} [target] - The link target. The default value is\n * `LinkTarget.NONE`.\n * @property {string} [rel] - The link relationship. The default value is\n * `DEFAULT_LINK_REL`.\n * @property {boolean} [enabled] - Whether the link should be enabled. The\n * default value is true.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLLinkElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, enabled = true } = {}) {\n assert(\n url && typeof url === \"string\",\n 'addLinkAttributes: A valid \"url\" parameter must provided.'\n );\n\n const urlNullRemoved = removeNullCharacters(url);\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\"; // LinkTarget.NONE\n switch (target) {\n case LinkTarget.NONE:\n break;\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n link.target = targetStr;\n\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\n// Gets the file name from a given URL.\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length\n );\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const time of this.times) {\n const name = time.name;\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isFetchSupported() {\n return (\n typeof fetch !== \"undefined\" &&\n typeof Response !== \"undefined\" &&\n \"body\" in Response.prototype &&\n typeof ReadableStream !== \"undefined\"\n );\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\nfunction loadScript(src) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = resolve;\n script.onerror = function() {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nfunction releaseImageResources(img) {\n assert(img instanceof Image, \"Invalid `img` parameter.\");\n\n const url = img.src;\n if (\n typeof url === \"string\" &&\n url.startsWith(\"blob:\") &&\n URL.revokeObjectURL\n ) {\n URL.revokeObjectURL(url);\n }\n img.removeAttribute(\"src\");\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || !isString(input)) {\n return null;\n }\n\n // Lazily initialize the regular expression.\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n }\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\nexport {\n PageViewport,\n RenderingCancelledException,\n addLinkAttributes,\n getFilenameFromUrl,\n LinkTarget,\n DEFAULT_LINK_REL,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMSVGFactory,\n StatTimer,\n isFetchSupported,\n isValidFetchUrl,\n loadScript,\n deprecated,\n releaseImageResources,\n PDFDateString,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n IsEvalSupportedCached,\n shadow,\n string32,\n unreachable,\n UNSUPPORTED_FEATURES,\n warn,\n} from \"../shared/util.js\";\n\nclass BaseFontLoader {\n constructor({ docId, onUnsupportedFeature }) {\n if (this.constructor === BaseFontLoader) {\n unreachable(\"Cannot initialize BaseFontLoader.\");\n }\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n\n this.nativeFontFaces = [];\n this.styleElement = null;\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n if (!styleElement) {\n styleElement = this.styleElement = document.createElement(\"style\");\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n document.documentElement\n .getElementsByTagName(\"head\")[0]\n .appendChild(styleElement);\n }\n\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n this.nativeFontFaces.forEach(function(nativeFontFace) {\n document.fonts.delete(nativeFontFace);\n });\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async bind(font) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || font.missingFile) {\n return;\n }\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n this._onUnsupportedFeature({ featureId: UNSUPPORTED_FEATURES.font });\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n // When font loading failed, fall back to the built-in font renderer.\n font.disableFontFace = true;\n throw ex;\n }\n }\n return; // The font was, asynchronously, loaded.\n }\n\n // !this.isFontLoadingAPISupported\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return; // The font was, synchronously, loaded.\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent([rule], [font], request);\n });\n // The font was, asynchronously, loaded.\n }\n }\n\n _queueLoadingCallback(callback) {\n unreachable(\"Abstract method `_queueLoadingCallback`.\");\n }\n\n get isFontLoadingAPISupported() {\n const supported = typeof document !== \"undefined\" && !!document.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", supported);\n }\n\n // eslint-disable-next-line getter-return\n get isSyncFontLoadingSupported() {\n unreachable(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n\n // eslint-disable-next-line getter-return\n get _loadTestFont() {\n unreachable(\"Abstract method `_loadTestFont`.\");\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n unreachable(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n}\n\nlet FontLoader;\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n FontLoader = class MozcentralFontLoader extends BaseFontLoader {\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", true);\n }\n };\n} else {\n // PDFJSDev.test('CHROME || GENERIC')\n\n FontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(docId) {\n super(docId);\n this.loadingContext = {\n requests: [],\n nextRequestId: 0,\n };\n this.loadTestFontId = 0;\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n if (typeof navigator === \"undefined\") {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else {\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(\n navigator.userAgent\n );\n if (m && m[1] >= 14) {\n supported = true;\n }\n // TODO - other browsers...\n }\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback,\n };\n context.requests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function() {\n // This is a CFF font with 1 glyph for '.' that fills its entire width\n // and height.\n return atob(\n \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n );\n };\n return shadow(this, \"_loadTestFont\", getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, request) {\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (\n (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff)\n );\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n const canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n\n let called = 0;\n function isFontReady(name, callback) {\n called++;\n // With setTimeout clamping this gives the font ~100ms to load.\n if (called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(\n data,\n COMMENT_OFFSET,\n loadTestFontId.length,\n loadTestFontId\n );\n // CFF checksum is important for IE, adjusting it\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) {\n // align to 4 bytes boundary\n checksum =\n (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n\n const names = [];\n for (i = 0, ii = fonts.length; i < ii; i++) {\n names.push(fonts[i].loadedName);\n }\n names.push(loadTestFontId);\n\n const div = document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (i = 0, ii = names.length; i < ii; ++i) {\n const span = document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = names[i];\n div.appendChild(span);\n }\n document.body.appendChild(div);\n\n isFontReady(loadTestFontId, function() {\n document.body.removeChild(div);\n request.complete();\n });\n /** Hack end */\n }\n };\n} // End of PDFJSDev.test('CHROME || GENERIC')\n\nclass FontFaceObject {\n constructor(\n translatedData,\n {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature = null,\n fontRegistry = null,\n }\n ) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const nativeFontFace = new FontFace(this.loadedName, this.data, {});\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(new Uint8Array(this.data));\n // Add the @font-face rule to the document.\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds, current;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n if (this._onUnsupportedFeature) {\n this._onUnsupportedFeature({ featureId: UNSUPPORTED_FEATURES.font });\n }\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return (this.compiledGlyphs[character] = function(c, size) {\n // No-op function, to allow rendering to continue.\n });\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && IsEvalSupportedCached.value) {\n let args,\n js = \"\";\n for (let i = 0, ii = cmds.length; i < ii; i++) {\n current = cmds[i];\n\n if (current.args !== undefined) {\n args = current.args.join(\",\");\n } else {\n args = \"\";\n }\n js += \"c.\" + current.cmd + \"(\" + args + \");\\n\";\n }\n // eslint-disable-next-line no-new-func\n return (this.compiledGlyphs[character] = new Function(\"c\", \"size\", js));\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return (this.compiledGlyphs[character] = function(c, size) {\n for (let i = 0, ii = cmds.length; i < ii; i++) {\n current = cmds[i];\n\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n c[current.cmd].apply(c, current.args);\n }\n });\n }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const { isNodeJS } = require(\"../shared/is_node.js\");\n\n const userAgent =\n (typeof navigator !== \"undefined\" && navigator.userAgent) || \"\";\n const isIE = /Trident/.test(userAgent);\n const isIOSChrome = /CriOS/.test(userAgent);\n\n // Checks if possible to use URL.createObjectURL()\n // Support: IE, Chrome on iOS\n (function checkOnBlobSupport() {\n // Sometimes IE and Chrome on iOS losing the data created with\n // createObjectURL(), see issues #3977 and #8081.\n if (isIE || isIOSChrome) {\n compatibilityParams.disableCreateObjectURL = true;\n }\n })();\n\n // Support: Node.js\n (function checkFontFaceAndImage() {\n // Node.js is missing native support for `@font-face` and `Image`.\n if (isNodeJS) {\n compatibilityParams.disableFontFace = true;\n compatibilityParams.nativeImageDecoderSupport = \"none\";\n }\n })();\n}\n\nexports.apiCompatibilityParams = Object.freeze(compatibilityParams);\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://electronjs.org/docs/api/process#processversionselectron\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions[\"nw\"] &&\n !process.versions[\"electron\"];\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n IsLittleEndianCached,\n isNum,\n OPS,\n shadow,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { getShadingPatternFromIR, TilingPattern } from \"./pattern_helper.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n\n// Minimal font size that would be used during canvas fillText operations.\nvar MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\n\n// Heuristic value used when enforcing minimum line widths.\nvar MIN_WIDTH_FACTOR = 0.65;\n\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\n\nvar FULL_CHUNK_HEIGHT = 16;\n\nfunction addContextCurrentTransform(ctx) {\n // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.\n if (!ctx.mozCurrentTransform) {\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n },\n });\n\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n // Calculation done using WolframAlpha:\n // http://www.wolframalpha.com/input/?\n // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}\n\n var m = this._transformMatrix;\n var a = m[0],\n b = m[1],\n c = m[2],\n d = m[3],\n e = m[4],\n f = m[5];\n\n var ad_bc = a * d - b * c;\n var bc_ad = b * c - a * d;\n\n return [\n d / ad_bc,\n b / bc_ad,\n c / bc_ad,\n a / ad_bc,\n (d * e - c * f) / bc_ad,\n (b * e - a * f) / ad_bc,\n ];\n },\n });\n\n ctx.save = function ctxSave() {\n var old = this._transformMatrix;\n this._transformStack.push(old);\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n var prev = this._transformStack.pop();\n if (prev) {\n this._transformMatrix = prev;\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n var m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n var m = this._transformMatrix;\n m[0] = m[0] * x;\n m[1] = m[1] * x;\n m[2] = m[2] * y;\n m[3] = m[3] * y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n var m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * a + m[2] * b,\n m[1] * a + m[3] * b,\n m[0] * c + m[2] * d,\n m[1] * c + m[3] * d,\n m[0] * e + m[2] * f + m[4],\n m[1] * e + m[3] * f + m[5],\n ];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.rotate = function ctxRotate(angle) {\n var cosValue = Math.cos(angle);\n var sinValue = Math.sin(angle);\n\n var m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * -sinValue + m[2] * cosValue,\n m[1] * -sinValue + m[3] * cosValue,\n m[4],\n m[5],\n ];\n\n this._originalRotate(angle);\n };\n }\n}\n\nvar CachedCanvases = (function CachedCanvasesClosure() {\n function CachedCanvases(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n CachedCanvases.prototype = {\n getCanvas: function CachedCanvases_getCanvas(\n id,\n width,\n height,\n trackTransform\n ) {\n var canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n // reset canvas transform for emulated mozCurrentTransform, if needed\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n return canvasEntry;\n },\n clear() {\n for (var id in this.cache) {\n var canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n },\n };\n return CachedCanvases;\n})();\n\nfunction compileType3Glyph(imgData) {\n var POINT_TO_PROCESS_LIMIT = 1000;\n\n var width = imgData.width,\n height = imgData.height;\n var i,\n j,\n j0,\n width1 = width + 1;\n var points = new Uint8Array(width1 * (height + 1));\n // prettier-ignore\n var POINT_TYPES =\n new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n\n // decodes bit-packed mask data\n var lineSize = (width + 7) & ~7,\n data0 = imgData.data;\n var data = new Uint8Array(lineSize * height),\n pos = 0,\n ii;\n for (i = 0, ii = data0.length; i < ii; i++) {\n var mask = 128,\n elem = data0[i];\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n var count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum =\n (sum >> 2) +\n (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n var outlines = [];\n for (i = 0; count && i <= height; i++) {\n var p = i * width1;\n var end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n var coords = [p % width1, i];\n\n var type = points[p],\n p0 = p,\n pp;\n do {\n var step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else {\n // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2) | (type << 2);\n }\n\n coords.push(p % width1);\n coords.push((p / width1) | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n outlines.push(coords);\n --i;\n }\n\n var drawOutline = function(c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n for (var i = 0, ii = outlines.length; i < ii; i++) {\n var o = outlines[i];\n c.moveTo(o[0], o[1]);\n for (var j = 2, jj = o.length; j < jj; j += 2) {\n c.lineTo(o[j], o[j + 1]);\n }\n }\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nvar CanvasExtraState = (function CanvasExtraStateClosure() {\n function CanvasExtraState() {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.resumeSMaskCtx = null; // nonclonable field (see the save method below)\n }\n\n CanvasExtraState.prototype = {\n clone: function CanvasExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n },\n };\n return CanvasExtraState;\n})();\n\nvar CanvasGraphics = (function CanvasGraphicsClosure() {\n // Defines the time the executeOperatorList is going to be executing\n // before it stops and shedules a continue of execution.\n var EXECUTION_TIME = 15;\n // Defines the number of steps before checking the execution time\n var EXECUTION_STEPS = 10;\n\n function CanvasGraphics(\n canvasCtx,\n commonObjs,\n objs,\n canvasFactory,\n webGLContext,\n imageLayer\n ) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState();\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.webGLContext = webGLContext;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see pdf\n // spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n if (canvasCtx) {\n // NOTE: if mozCurrentTransform is polyfilled, then the current state of\n // the transformation must already be set in canvasCtx._transformMatrix.\n addContextCurrentTransform(canvasCtx);\n }\n this._cachedGetSinglePixelWidth = null;\n }\n\n function putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n var height = imgData.height,\n width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0,\n destPos;\n var src = imgData.data;\n var dest = chunkImgData.data;\n var i, j, thisChunkHeight, elemsInThisChunk;\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n var srcLength = src.byteLength;\n var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n var dest32DataLength = dest32.length;\n var fullSrcDiff = (width + 7) >> 3;\n var white = 0xffffffff;\n var black = IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n var srcDiff = srcLength - srcPos;\n var k = 0;\n var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n var kEndUnrolled = kEnd & ~7;\n var mask = 0;\n var srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--; ) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n }\n\n function putBinaryImageMask(ctx, imgData) {\n var height = imgData.height,\n width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0;\n var src = imgData.data;\n var dest = chunkImgData.data;\n\n for (var i = 0; i < totalChunks; i++) {\n var thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n var destPos = 3; // alpha component offset\n for (var j = 0; j < thisChunkHeight; j++) {\n var mask = 0;\n for (var k = 0; k < width; k++) {\n if (!mask) {\n var elem = src[srcPos++];\n mask = 128;\n }\n dest[destPos] = elem & mask ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n }\n\n function copyCtxState(sourceCtx, destCtx) {\n var properties = [\n \"strokeStyle\",\n \"fillStyle\",\n \"fillRule\",\n \"globalAlpha\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"miterLimit\",\n \"globalCompositeOperation\",\n \"font\",\n ];\n for (var i = 0, ii = properties.length; i < ii; i++) {\n var property = properties[i];\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n }\n\n function resetCtxToDefault(ctx) {\n ctx.strokeStyle = \"#000000\";\n ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n }\n\n function composeSMaskBackdrop(bytes, r0, g0, b0) {\n var length = bytes.length;\n for (var i = 3; i < length; i += 4) {\n var alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n var alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n }\n\n function composeSMaskAlpha(maskData, layerData, transferMap) {\n var length = maskData.length;\n var scale = 1 / 255;\n for (var i = 3; i < length; i += 4) {\n var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n }\n\n function composeSMaskLuminosity(maskData, layerData, transferMap) {\n var length = maskData.length;\n for (var i = 3; i < length; i += 4) {\n var y =\n maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n maskData[i - 2] * 152 + // * 0.59 ....\n maskData[i - 1] * 28; // * 0.11 ....\n layerData[i] = transferMap\n ? (layerData[i] * transferMap[y >> 8]) >> 8\n : (layerData[i] * y) >> 16;\n }\n }\n\n function genericComposeSMask(\n maskCtx,\n layerCtx,\n width,\n height,\n subtype,\n backdrop,\n transferMap\n ) {\n var hasBackdrop = !!backdrop;\n var r0 = hasBackdrop ? backdrop[0] : 0;\n var g0 = hasBackdrop ? backdrop[1] : 0;\n var b0 = hasBackdrop ? backdrop[2] : 0;\n\n var composeFn;\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n var PIXELS_TO_PROCESS = 1048576;\n var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (var row = 0; row < height; row += chunkSize) {\n var chunkHeight = Math.min(chunkSize, height - row);\n var maskData = maskCtx.getImageData(0, row, width, chunkHeight);\n var layerData = layerCtx.getImageData(0, row, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n maskCtx.putImageData(layerData, 0, row);\n }\n }\n\n function composeSMask(ctx, smask, layerCtx, webGLContext) {\n var mask = smask.canvas;\n var maskCtx = smask.context;\n\n ctx.setTransform(\n smask.scaleX,\n 0,\n 0,\n smask.scaleY,\n smask.offsetX,\n smask.offsetY\n );\n\n var backdrop = smask.backdrop || null;\n if (!smask.transferMap && webGLContext.isEnabled) {\n const composed = webGLContext.composeSMask({\n layer: layerCtx.canvas,\n mask,\n properties: {\n subtype: smask.subtype,\n backdrop,\n },\n });\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(composed, smask.offsetX, smask.offsetY);\n return;\n }\n genericComposeSMask(\n maskCtx,\n layerCtx,\n mask.width,\n mask.height,\n smask.subtype,\n backdrop,\n smask.transferMap\n );\n ctx.drawImage(mask, 0, 0);\n }\n\n var LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n var LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n var NORMAL_CLIP = {};\n var EO_CLIP = {};\n\n CanvasGraphics.prototype = {\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null,\n }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n var width = this.ctx.canvas.width;\n var height = this.ctx.canvas.height;\n\n this.ctx.save();\n this.ctx.fillStyle = background || \"rgb(255, 255, 255)\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n var transparentCanvas = this.cachedCanvases.getCanvas(\n \"transparent\",\n width,\n height,\n true\n );\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform.apply(\n this.ctx,\n this.compositeCtx.mozCurrentTransform\n );\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n }\n this.ctx.transform.apply(this.ctx, viewport.transform);\n\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n },\n\n executeOperatorList: function CanvasGraphics_executeOperatorList(\n operatorList,\n executionStartIdx,\n continueCallback,\n stepper\n ) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var i = executionStartIdx || 0;\n var argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n var chunkOperations =\n argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === \"function\";\n var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n var steps = 0;\n\n var commonObjs = this.commonObjs;\n var objs = this.objs;\n var fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n },\n\n endDrawing: function CanvasGraphics_endDrawing() {\n // Finishing all opened operations such as SMask group painting.\n if (this.current.activeSMask !== null) {\n this.endSMaskGroup();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.webGLContext.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n },\n\n // Graphics state\n setLineWidth: function CanvasGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n },\n setLineCap: function CanvasGraphics_setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function CanvasGraphics_setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n },\n setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {\n var ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n },\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n },\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n },\n setGState: function CanvasGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n if (this.current.activeSMask) {\n // If SMask is currrenly used, it needs to be suspended or\n // finished. Suspend only makes sense when at least one save()\n // was performed and state needs to be reverted on restore().\n if (\n this.stateStack.length > 0 &&\n this.stateStack[this.stateStack.length - 1].activeSMask ===\n this.current.activeSMask\n ) {\n this.suspendSMaskGroup();\n } else {\n this.endSMaskGroup();\n }\n }\n this.current.activeSMask = value ? this.tempSMask : null;\n if (this.current.activeSMask) {\n this.beginSMaskGroup();\n }\n this.tempSMask = null;\n break;\n }\n }\n },\n beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {\n var activeSMask = this.current.activeSMask;\n var drawnWidth = activeSMask.canvas.width;\n var drawnHeight = activeSMask.canvas.height;\n var cacheId = \"smaskGroupAt\" + this.groupLevel;\n var scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n true\n );\n\n var currentCtx = this.ctx;\n var currentTransform = currentCtx.mozCurrentTransform;\n this.ctx.save();\n\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);\n groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;\n\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n // Similar to endSMaskGroup, the intermediate canvas has to be composed\n // and future ctx state restored.\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n\n composeSMask(\n this.ctx,\n this.current.activeSMask,\n groupCtx,\n this.webGLContext\n );\n this.ctx.restore();\n this.ctx.save(); // save is needed since SMask will be resumed.\n copyCtxState(groupCtx, this.ctx);\n\n // Saving state for resuming.\n this.current.resumeSMaskCtx = groupCtx;\n // Transform was changed in the SMask canvas, reflecting this change on\n // this.ctx.\n var deltaTransform = Util.transform(\n this.current.activeSMask.startTransformInverse,\n groupCtx.mozCurrentTransform\n );\n this.ctx.transform.apply(this.ctx, deltaTransform);\n\n // SMask was composed, the results at the groupCtx can be cleared.\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n groupCtx.restore();\n },\n resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n // Resuming state saved by suspendSMaskGroup. We don't need to restore\n // any groupCtx state since restore() command (the only caller) will do\n // that for us. See also beginSMaskGroup.\n var groupCtx = this.current.resumeSMaskCtx;\n var currentCtx = this.ctx;\n this.ctx = groupCtx;\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n endSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n\n composeSMask(\n this.ctx,\n this.current.activeSMask,\n groupCtx,\n this.webGLContext\n );\n this.ctx.restore();\n copyCtxState(groupCtx, this.ctx);\n // Transform was changed in the SMask canvas, reflecting this change on\n // this.ctx.\n var deltaTransform = Util.transform(\n this.current.activeSMask.startTransformInverse,\n groupCtx.mozCurrentTransform\n );\n this.ctx.transform.apply(this.ctx, deltaTransform);\n },\n save: function CanvasGraphics_save() {\n this.ctx.save();\n var old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.current.resumeSMaskCtx = null;\n },\n restore: function CanvasGraphics_restore() {\n // SMask was suspended, we just need to resume it.\n if (this.current.resumeSMaskCtx) {\n this.resumeSMaskGroup();\n }\n // SMask has to be finished once there is no states that are using the\n // same SMask.\n if (\n this.current.activeSMask !== null &&\n (this.stateStack.length === 0 ||\n this.stateStack[this.stateStack.length - 1].activeSMask !==\n this.current.activeSMask)\n ) {\n this.endSMaskGroup();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedGetSinglePixelWidth = null;\n }\n },\n transform: function CanvasGraphics_transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedGetSinglePixelWidth = null;\n },\n\n // Path\n constructPath: function CanvasGraphics_constructPath(ops, args) {\n var ctx = this.ctx;\n var current = this.current;\n var x = current.x,\n y = current.y;\n for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n if (width === 0) {\n width = this.getSinglePixelWidth();\n }\n if (height === 0) {\n height = this.getSinglePixelWidth();\n }\n var xw = x + width;\n var yh = y + height;\n this.ctx.moveTo(x, y);\n this.ctx.lineTo(xw, y);\n this.ctx.lineTo(xw, yh);\n this.ctx.lineTo(x, yh);\n this.ctx.lineTo(x, y);\n this.ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n j += 6;\n break;\n case OPS.curveTo2:\n ctx.bezierCurveTo(\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n current.setCurrentPoint(x, y);\n },\n closePath: function CanvasGraphics_closePath() {\n this.ctx.closePath();\n },\n stroke: function CanvasGraphics_stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n var ctx = this.ctx;\n var strokeColor = this.current.strokeColor;\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (\n strokeColor &&\n strokeColor.hasOwnProperty(\"type\") &&\n strokeColor.type === \"Pattern\"\n ) {\n // for patterns, we transform to pattern space, calculate\n // the pattern, call stroke, and restore to user space\n ctx.save();\n // The current transform will be replaced while building the pattern,\n // but the line width needs to be adjusted by the current transform, so\n // we must scale it. To properly fix this we should be using a pattern\n // transform instead (see #10955).\n const transform = ctx.mozCurrentTransform;\n const scale = Util.singularValueDecompose2dScale(transform)[0];\n ctx.strokeStyle = strokeColor.getPattern(ctx, this);\n ctx.lineWidth = Math.max(\n this.getSinglePixelWidth() * MIN_WIDTH_FACTOR,\n this.current.lineWidth * scale\n );\n ctx.stroke();\n ctx.restore();\n } else {\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(\n this.getSinglePixelWidth() * MIN_WIDTH_FACTOR,\n this.current.lineWidth\n );\n ctx.stroke();\n }\n if (consumePath) {\n this.consumePath();\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n },\n closeStroke: function CanvasGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n fill: function CanvasGraphics_fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n if (this.baseTransform) {\n ctx.setTransform.apply(ctx, this.baseTransform);\n }\n ctx.fillStyle = fillColor.getPattern(ctx, this);\n needRestore = true;\n }\n\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath();\n }\n },\n eoFill: function CanvasGraphics_eoFill() {\n this.pendingEOFill = true;\n this.fill();\n },\n fillStroke: function CanvasGraphics_fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n },\n eoFillStroke: function CanvasGraphics_eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n },\n closeFillStroke: function CanvasGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n },\n endPath: function CanvasGraphics_endPath() {\n this.consumePath();\n },\n\n // Clipping\n clip: function CanvasGraphics_clip() {\n this.pendingClip = NORMAL_CLIP;\n },\n eoClip: function CanvasGraphics_eoClip() {\n this.pendingClip = EO_CLIP;\n },\n\n // Text\n beginText: function CanvasGraphics_beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n endText: function CanvasGraphics_endText() {\n var paths = this.pendingTextPaths;\n var ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (var i = 0; i < paths.length; i++) {\n var path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n },\n setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n },\n setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n },\n setHScale: function CanvasGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n setLeading: function CanvasGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n setFont: function CanvasGraphics_setFont(fontRefName, size) {\n var fontObj = this.commonObjs.get(fontRefName);\n var current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n\n current.fontMatrix = fontObj.fontMatrix\n ? fontObj.fontMatrix\n : FONT_IDENTITY_MATRIX;\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n var name = fontObj.loadedName || \"sans-serif\";\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n var italic = fontObj.italic ? \"italic\" : \"normal\";\n var typeface = `\"${name}\", ${fontObj.fallbackName}`;\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n },\n setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n },\n setTextRise: function CanvasGraphics_setTextRise(rise) {\n this.current.textRise = rise;\n },\n moveText: function CanvasGraphics_moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n },\n setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.sqrt(a * a + b * b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n nextLine: function CanvasGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n paintChar(character, x, y, patternTransform) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var textRenderingMode = current.textRenderingMode;\n var fontSize = current.fontSize / current.fontSizeScale;\n var fillStrokeMode =\n textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n var isAddToPathSet = !!(\n textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n const patternFill = current.patternFill && font.data;\n\n var addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fill();\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fillText(character, x, y);\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n var paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n },\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n const { context: ctx } = this.cachedCanvases.getCanvas(\n \"isFontSubpixelAAEnabled\",\n 10,\n 10\n );\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n var data = ctx.getImageData(0, 0, 10, 10).data;\n var enabled = false;\n for (var i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n },\n\n showText: function CanvasGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n var fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n\n var ctx = this.ctx;\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n var simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace &&\n !current.patternFill;\n\n ctx.save();\n let patternTransform;\n if (current.patternFill) {\n // TODO: Patterns are not applied correctly to text if a non-embedded\n // font is used. E.g. issue 8111 and ShowText-ShadingPattern.pdf.\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this);\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n var lineWidth = current.lineWidth;\n var scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n var fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n this._cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n var x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n if (isNum(glyph)) {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n var restoreNeeded = false;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var accent = glyph.accent;\n var scaledX, scaledY, scaledAccentX, scaledAccentY;\n var width = glyph.width;\n if (vertical) {\n var vmetric, vx, vy;\n vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n var measuredWidth =\n ((ctx.measureText(character).width * 1000) / fontSize) *\n fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n var characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX +=\n (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (glyph.isInFont || font.missingFile) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n scaledAccentX = scaledX + accent.offset.x / fontSizeScale;\n scaledAccentY = scaledY - accent.offset.y / fontSizeScale;\n this.paintChar(\n accent.fontChar,\n scaledAccentX,\n scaledAccentY,\n patternTransform\n );\n }\n }\n }\n\n var charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n },\n\n showType3Text: function CanvasGraphics_showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n var fontDirection = current.fontDirection;\n var spacingDir = font.vertical ? 1 : -1;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var textHScale = current.textHScale * fontDirection;\n var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n var glyphsLength = glyphs.length;\n var isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n var i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (isNum(glyph)) {\n spacingLength = (spacingDir * glyph * fontSize) / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n\n var transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n },\n\n // Type3 fonts\n setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n },\n setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(\n xWidth,\n yWidth,\n llx,\n lly,\n urx,\n ury\n ) {\n // TODO According to the spec we're also suppose to ignore any operators\n // that set color or include images while processing this type3 font.\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n },\n\n // Color\n getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {\n var pattern;\n if (IR[0] === \"TilingPattern\") {\n var color = IR[1];\n var baseTransform =\n this.baseTransform || this.ctx.mozCurrentTransform.slice();\n var canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(\n ctx,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n this.webGLContext\n );\n },\n };\n pattern = new TilingPattern(\n IR,\n color,\n this.ctx,\n canvasGraphicsFactory,\n baseTransform\n );\n } else {\n pattern = getShadingPatternFromIR(IR);\n }\n return pattern;\n },\n setStrokeColorN: function CanvasGraphics_setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n },\n setFillColorN: function CanvasGraphics_setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n },\n setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n },\n setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n },\n\n shadingFill: function CanvasGraphics_shadingFill(patternIR) {\n var ctx = this.ctx;\n\n this.save();\n var pattern = getShadingPatternFromIR(patternIR);\n ctx.fillStyle = pattern.getPattern(ctx, this, true);\n\n var inv = ctx.mozCurrentTransformInverse;\n if (inv) {\n var canvas = ctx.canvas;\n var width = canvas.width;\n var height = canvas.height;\n\n var bl = Util.applyTransform([0, 0], inv);\n var br = Util.applyTransform([0, height], inv);\n var ul = Util.applyTransform([width, 0], inv);\n var ur = Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.restore();\n },\n\n // Images\n beginInlineImage: function CanvasGraphics_beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n },\n beginImageData: function CanvasGraphics_beginImageData() {\n unreachable(\"Should not call beginImageData\");\n },\n\n paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(\n matrix,\n bbox\n ) {\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.clip();\n this.endPath();\n }\n },\n\n paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n },\n\n beginGroup: function CanvasGraphics_beginGroup(group) {\n this.save();\n var currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n\n var currentTransform = currentCtx.mozCurrentTransform;\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n var bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n currentCtx.mozCurrentTransform\n );\n // Clip the bounding box to the current canvas.\n var canvasBounds = [\n 0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height,\n ];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n var scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n var cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n }\n var scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n true\n );\n var groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n\n // Reseting mask state, masks will be applied on restore of the group.\n this.current.activeSMask = null;\n },\n\n endGroup: function CanvasGraphics_endGroup(group) {\n this.groupLevel--;\n var groupCtx = this.ctx;\n this.ctx = this.groupStack.pop();\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n if (this.ctx.imageSmoothingEnabled !== undefined) {\n this.ctx.imageSmoothingEnabled = false;\n } else {\n this.ctx.mozImageSmoothingEnabled = false;\n }\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n } else {\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n }\n this.restore();\n },\n\n beginAnnotations: function CanvasGraphics_beginAnnotations() {\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n },\n\n endAnnotations: function CanvasGraphics_endAnnotations() {\n this.restore();\n },\n\n beginAnnotation: function CanvasGraphics_beginAnnotation(\n rect,\n transform,\n matrix\n ) {\n this.save();\n resetCtxToDefault(this.ctx);\n this.current = new CanvasExtraState();\n\n if (Array.isArray(rect) && rect.length === 4) {\n var width = rect[2] - rect[0];\n var height = rect[3] - rect[1];\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n },\n\n endAnnotation: function CanvasGraphics_endAnnotation() {\n this.restore();\n },\n\n paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {\n const domImage = this.processingType3\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!domImage) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.save();\n\n var ctx = this.ctx;\n // scale the image to the unit square\n ctx.scale(1 / w, -1 / h);\n\n ctx.drawImage(\n domImage,\n 0,\n 0,\n domImage.width,\n domImage.height,\n 0,\n -h,\n w,\n h\n );\n if (this.imageLayer) {\n var currentTransform = ctx.mozCurrentTransformInverse;\n var position = this.getCanvasPosition(0, 0);\n this.imageLayer.appendImage({\n objId,\n left: position[0],\n top: position[1],\n width: w / currentTransform[0],\n height: h / currentTransform[3],\n });\n }\n this.restore();\n },\n\n paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {\n var ctx = this.ctx;\n var width = img.width,\n height = img.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n var glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled = compileType3Glyph({ data: img.data, width, height });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph && glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n\n var maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, img);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(maskCtx, this)\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n this.paintInlineImageXObject(maskCanvas.canvas);\n },\n\n paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(\n imgData,\n scaleX,\n scaleY,\n positions\n ) {\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n var maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, imgData);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(maskCtx, this)\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n var ctx = this.ctx;\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n ctx.save();\n ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(\n images\n ) {\n var ctx = this.ctx;\n\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n for (var i = 0, ii = images.length; i < ii; i++) {\n var image = images[i];\n var width = image.width,\n height = image.height;\n\n var maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, image);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(maskCtx, this)\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {\n const imgData = this.processingType3\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n },\n\n paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(\n objId,\n scaleX,\n scaleY,\n positions\n ) {\n const imgData = this.processingType3\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var map = [];\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height,\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n },\n\n paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(\n imgData\n ) {\n var width = imgData.width;\n var height = imgData.height;\n var ctx = this.ctx;\n\n this.save();\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n var currentTransform = ctx.mozCurrentTransformInverse;\n var a = currentTransform[0],\n b = currentTransform[1];\n var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);\n var c = currentTransform[2],\n d = currentTransform[3];\n var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);\n\n var imgToPaint, tmpCanvas;\n // typeof check is needed due to node.js support, see issue #8489\n if (\n (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n !imgData.data\n ) {\n imgToPaint = imgData;\n } else {\n tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = tmpCanvas.canvas;\n }\n\n var paintWidth = width,\n paintHeight = height;\n var tmpCanvasId = \"prescale1\";\n // Vertial or horizontal scaling shall not be more than 2 to not loose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size\n while (\n (widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)\n ) {\n var newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(\n tmpCanvasId,\n newWidth,\n newHeight\n );\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(\n imgToPaint,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n imgToPaint = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n ctx.drawImage(\n imgToPaint,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n -height,\n width,\n height\n );\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / currentTransform[0],\n height: height / currentTransform[3],\n });\n }\n this.restore();\n },\n\n paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(\n imgData,\n map\n ) {\n var ctx = this.ctx;\n var w = imgData.width;\n var h = imgData.height;\n\n var tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n\n for (var i = 0, ii = map.length; i < ii; i++) {\n var entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(\n tmpCanvas.canvas,\n entry.x,\n entry.y,\n entry.w,\n entry.h,\n 0,\n -1,\n 1,\n 1\n );\n if (this.imageLayer) {\n var position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h,\n });\n }\n ctx.restore();\n }\n },\n\n paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {\n this.ctx.fillRect(0, 0, 1, 1);\n },\n\n paintXObject: function CanvasGraphics_paintXObject() {\n warn(\"Unsupported 'paintXObject' command.\");\n },\n\n // Marked content\n\n markPoint: function CanvasGraphics_markPoint(tag) {\n // TODO Marked content.\n },\n markPointProps: function CanvasGraphics_markPointProps(tag, properties) {\n // TODO Marked content.\n },\n beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {\n // TODO Marked content.\n },\n beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(\n tag,\n properties\n ) {\n // TODO Marked content.\n },\n endMarkedContent: function CanvasGraphics_endMarkedContent() {\n // TODO Marked content.\n },\n\n // Compatibility\n\n beginCompat: function CanvasGraphics_beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n },\n endCompat: function CanvasGraphics_endCompat() {\n // TODO stop ignoring undefined operators\n },\n\n // Helper functions\n\n consumePath: function CanvasGraphics_consumePath() {\n var ctx = this.ctx;\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n this.pendingClip = null;\n }\n ctx.beginPath();\n },\n getSinglePixelWidth(scale) {\n if (this._cachedGetSinglePixelWidth === null) {\n const inverse = this.ctx.mozCurrentTransformInverse;\n // max of the current horizontal and vertical scale\n this._cachedGetSinglePixelWidth = Math.sqrt(\n Math.max(\n inverse[0] * inverse[0] + inverse[1] * inverse[1],\n inverse[2] * inverse[2] + inverse[3] * inverse[3]\n )\n );\n }\n return this._cachedGetSinglePixelWidth;\n },\n getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {\n var transform = this.ctx.mozCurrentTransform;\n return [\n transform[0] * x + transform[2] * y + transform[4],\n transform[1] * x + transform[3] * y + transform[5],\n ];\n },\n };\n\n for (var op in OPS) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n\n return CanvasGraphics;\n})();\n\nexport { CanvasGraphics };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, Util } from \"../shared/util.js\";\n\nvar ShadingIRs = {};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || typeof Path2D === \"undefined\") {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nShadingIRs.RadialAxial = {\n fromIR: function RadialAxial_fromIR(raw) {\n var type = raw[1];\n var bbox = raw[2];\n var colorStops = raw[3];\n var p0 = raw[4];\n var p1 = raw[5];\n var r0 = raw[6];\n var r1 = raw[7];\n return {\n type: \"Pattern\",\n getPattern: function RadialAxial_getPattern(ctx) {\n applyBoundingBox(ctx, bbox);\n var grad;\n if (type === \"axial\") {\n grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n } else if (type === \"radial\") {\n grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);\n }\n\n for (var i = 0, ii = colorStops.length; i < ii; ++i) {\n var c = colorStops[i];\n grad.addColorStop(c[0], c[1]);\n }\n return grad;\n },\n };\n },\n};\n\nvar createMeshCanvas = (function createMeshCanvasClosure() {\n function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n var coords = context.coords,\n colors = context.colors;\n var bytes = data.data,\n rowSize = data.width * 4;\n var tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n var c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n var c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n var c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n\n var minY = Math.round(y1),\n maxY = Math.round(y3);\n var xa, car, cag, cab;\n var xb, cbr, cbg, cbb;\n for (var y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n if (y < y1) {\n k = 0;\n } else if (y1 === y2) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n var x1_ = Math.round(Math.min(xa, xb));\n var x2_ = Math.round(Math.max(xa, xb));\n var j = rowSize * y + x1_ * 4;\n for (var x = x1_; x <= x2_; x++) {\n let k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n }\n\n function drawFigure(data, figure, context) {\n var ps = figure.coords;\n var cs = figure.colors;\n var i, ii;\n switch (figure.type) {\n case \"lattice\":\n var verticesPerRow = figure.verticesPerRow;\n var rows = Math.floor(ps.length / verticesPerRow) - 1;\n var cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n var q = i * verticesPerRow;\n for (var j = 0; j < cols; j++, q++) {\n drawTriangle(\n data,\n context,\n ps[q],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n drawTriangle(\n data,\n context,\n ps[q + verticesPerRow + 1],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(\n data,\n context,\n ps[i],\n ps[i + 1],\n ps[i + 2],\n cs[i],\n cs[i + 1],\n cs[i + 2]\n );\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n }\n\n function createMeshCanvas(\n bounds,\n combinesScale,\n coords,\n colors,\n figures,\n backgroundColor,\n cachedCanvases,\n webGLContext\n ) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n var EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n var BORDER_SIZE = 2;\n\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var boundsWidth = Math.ceil(bounds[2]) - offsetX;\n var boundsHeight = Math.ceil(bounds[3]) - offsetY;\n\n var width = Math.min(\n Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n var height = Math.min(\n Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n var scaleX = boundsWidth / width;\n var scaleY = boundsHeight / height;\n\n var context = {\n coords,\n colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n var paddedWidth = width + BORDER_SIZE * 2;\n var paddedHeight = height + BORDER_SIZE * 2;\n\n var canvas, tmpCanvas, i, ii;\n if (webGLContext.isEnabled) {\n canvas = webGLContext.drawFigures({\n width,\n height,\n backgroundColor,\n figures,\n context,\n });\n // https://bugzilla.mozilla.org/show_bug.cgi?id=972126\n tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n } else {\n tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n var tmpCtx = tmpCanvas.context;\n\n var data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n var bytes = data.data;\n for (i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (i = 0; i < figures.length; i++) {\n drawFigure(data, figures[i], context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n }\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n return createMeshCanvas;\n})();\n\nShadingIRs.Mesh = {\n fromIR: function Mesh_fromIR(raw) {\n // var type = raw[1];\n var coords = raw[2];\n var colors = raw[3];\n var figures = raw[4];\n var bounds = raw[5];\n var matrix = raw[6];\n var bbox = raw[7];\n var background = raw[8];\n return {\n type: \"Pattern\",\n getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {\n applyBoundingBox(ctx, bbox);\n var scale;\n if (shadingFill) {\n scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (matrix) {\n var matrixScale = Util.singularValueDecompose2dScale(matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n var temporaryPatternCanvas = createMeshCanvas(\n bounds,\n scale,\n coords,\n colors,\n figures,\n shadingFill ? null : background,\n owner.cachedCanvases,\n owner.webGLContext\n );\n\n if (!shadingFill) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n if (matrix) {\n ctx.transform.apply(ctx, matrix);\n }\n }\n\n ctx.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n },\n };\n },\n};\n\nShadingIRs.Dummy = {\n fromIR: function Dummy_fromIR() {\n return {\n type: \"Pattern\",\n getPattern: function Dummy_fromIR_getPattern() {\n return \"hotpink\";\n },\n };\n },\n};\n\nfunction getShadingPatternFromIR(raw) {\n var shadingIR = ShadingIRs[raw[0]];\n if (!shadingIR) {\n throw new Error(`Unknown IR type: ${raw[0]}`);\n }\n return shadingIR.fromIR(raw);\n}\n\nvar TilingPattern = (function TilingPatternClosure() {\n var PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n };\n\n var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n\n function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.type = \"Pattern\";\n this.ctx = ctx;\n }\n\n TilingPattern.prototype = {\n createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {\n var operatorList = this.operatorList;\n var bbox = this.bbox;\n var xstep = this.xstep;\n var ystep = this.ystep;\n var paintType = this.paintType;\n var tilingType = this.tilingType;\n var color = this.color;\n var canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info(\"TilingType: \" + tilingType);\n\n // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n // described by bbox, and may repeat regularly by shifting the cell by\n // xstep and ystep.\n // Because the HTML5 canvas API does not support pattern repetition with\n // gaps in between, we use the xstep/ystep instead of the bbox's size.\n //\n // This has the following consequences (similarly for ystep):\n //\n // - If xstep is the same as bbox, then there is no observable difference.\n //\n // - If xstep is larger than bbox, then the pattern canvas is partially\n // empty: the area bounded by bbox is painted, the outside area is void.\n //\n // - If xstep is smaller than bbox, then the pixels between xstep and the\n // bbox boundary will be missing. This is INCORRECT behavior.\n // \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n // but overlapping cells without common pixels are still valid.\n // TODO: Fix the implementation, to allow this scenario to be painted\n // correctly.\n\n var x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n // Obtain scale from matrix and current transformation matrix.\n var matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n var curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform\n );\n var combinedScale = [\n matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1],\n ];\n\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n var dimx = this.getSizeAndScale(\n xstep,\n this.ctx.canvas.width,\n combinedScale[0]\n );\n var dimy = this.getSizeAndScale(\n ystep,\n this.ctx.canvas.height,\n combinedScale[1]\n );\n\n var tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n dimx.size,\n dimy.size,\n true\n );\n var tmpCtx = tmpCanvas.context;\n var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n // transform coordinates to pattern space\n graphics.transform(1, 0, 0, 1, -x0, -y0);\n\n this.clipBbox(graphics, bbox, x0, y0, x1, y1);\n\n graphics.executeOperatorList(operatorList);\n\n this.ctx.transform(1, 0, 0, 1, x0, y0);\n\n // Rescale canvas so that the ctx.createPattern call generates a pattern\n // with the desired size.\n this.ctx.scale(1 / dimx.scale, 1 / dimy.scale);\n return tmpCanvas.canvas;\n },\n\n getSizeAndScale: function TilingPattern_getSizeAndScale(\n step,\n realOutputSize,\n scale\n ) {\n // xstep / ystep may be negative -- normalize.\n step = Math.abs(step);\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use the destination canvas's size if it is bigger than the hard-coded\n // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n // whole canvas.\n var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);\n var size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return { scale, size };\n },\n\n clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {\n if (Array.isArray(bbox) && bbox.length === 4) {\n var bboxWidth = x1 - x0;\n var bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n },\n\n setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(\n graphics,\n paintType,\n color\n ) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n var ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n var cssColor = Util.makeCssRgb(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n },\n\n getPattern: function TilingPattern_getPattern(ctx, owner) {\n ctx = this.ctx;\n // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n ctx.setTransform.apply(ctx, this.baseTransform);\n ctx.transform.apply(ctx, this.matrix);\n\n var temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n return ctx.createPattern(temporaryPatternCanvas, \"repeat\");\n },\n };\n\n return TilingPattern;\n})();\n\nexport { getShadingPatternFromIR, TilingPattern };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst GlobalWorkerOptions = Object.create(null);\n\n/**\n * Defines global port for worker process. Overrides the `workerSrc` option.\n * @var {Object}\n */\nGlobalWorkerOptions.workerPort =\n GlobalWorkerOptions.workerPort === undefined\n ? null\n : GlobalWorkerOptions.workerPort;\n\n/**\n * A string containing the path and filename of the worker file.\n *\n * NOTE: The `workerSrc` option should always be set, in order to prevent any\n * issues when using the PDF.js library.\n * @var {string}\n */\nGlobalWorkerOptions.workerSrc =\n GlobalWorkerOptions.workerSrc === undefined\n ? \"\"\n : GlobalWorkerOptions.workerSrc;\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error, prefer-const: error */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n UnexpectedResponseException,\n UnknownErrorException,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null),\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n } else {\n if (typeof reason !== \"object\" || reason === null) {\n return reason;\n }\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName;\n const targetName = data.sourceName;\n new Promise(function(resolve) {\n resolve(action(data.data));\n }).then(\n function(result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function(reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this._postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this._postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++;\n const sourceName = this.sourceName;\n const targetName = this.targetName;\n const comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n this._postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const self = this;\n const action = this.actionHandler[data.action];\n const streamId = data.streamId;\n const sourceName = this.sourceName;\n const targetName = data.sourceName;\n const comObj = this.comObj;\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n self._postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function(resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function() {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function(reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId;\n const sourceName = this.sourceName;\n const targetName = data.sourceName;\n const comObj = this.comObj;\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].startCall.resolve();\n } else {\n this.streamControllers[streamId].startCall.reject(\n wrapReason(data.reason)\n );\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].pullCall.resolve();\n } else {\n this.streamControllers[streamId].pullCall.reject(\n wrapReason(data.reason)\n );\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!this.streamSinks[streamId]) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink,\n // so when it changes from negative to positive,\n // set ready property as resolved promise.\n if (\n this.streamSinks[streamId].desiredSize <= 0 &&\n data.desiredSize > 0\n ) {\n this.streamSinks[streamId].sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n this.streamSinks[streamId].desiredSize = data.desiredSize;\n const { onPull } = this.streamSinks[data.streamId];\n new Promise(function(resolve) {\n resolve(onPull && onPull());\n }).then(\n function() {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function(reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(\n this.streamControllers[streamId],\n \"enqueue should have stream controller\"\n );\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n this.streamControllers[streamId].controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(\n this.streamControllers[streamId],\n \"close should have stream controller\"\n );\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n this.streamControllers[streamId].isClosed = true;\n this.streamControllers[streamId].controller.close();\n this._deleteStreamController(streamId);\n break;\n case StreamKind.ERROR:\n assert(\n this.streamControllers[streamId],\n \"error should have stream controller\"\n );\n this.streamControllers[streamId].controller.error(\n wrapReason(data.reason)\n );\n this._deleteStreamController(streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].cancelCall.resolve();\n } else {\n this.streamControllers[streamId].cancelCall.reject(\n wrapReason(data.reason)\n );\n }\n this._deleteStreamController(streamId);\n break;\n case StreamKind.CANCEL:\n if (!this.streamSinks[streamId]) {\n break;\n }\n const { onCancel } = this.streamSinks[data.streamId];\n new Promise(function(resolve) {\n resolve(onCancel && onCancel(wrapReason(data.reason)));\n }).then(\n function() {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function(reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n this.streamSinks[streamId].sinkCapability.reject(\n wrapReason(data.reason)\n );\n this.streamSinks[streamId].isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled(\n [\n this.streamControllers[streamId].startCall,\n this.streamControllers[streamId].pullCall,\n this.streamControllers[streamId].cancelCall,\n ].map(function(capability) {\n return capability && capability.promise;\n })\n );\n delete this.streamControllers[streamId];\n }\n\n /**\n * Sends raw message to the comObj.\n * @param {Object} message - Raw message.\n * @param transfers List of transfers/ArrayBuffers, or undefined.\n * @private\n */\n _postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from \"../shared/util.js\";\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nclass Metadata {\n constructor(data) {\n assert(typeof data === \"string\", \"Metadata: input is not a string\");\n\n // Ghostscript may produce invalid metadata, so try to repair that first.\n data = this._repair(data);\n\n // Convert the string to an XML document.\n const parser = new SimpleXMLParser();\n const xmlDocument = parser.parseFromString(data);\n\n this._metadataMap = new Map();\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n // Start by removing any \"junk\" before the first tag (see issue 10395).\n return data\n .replace(/^[^<]+/, \"\")\n .replace(/>\\\\376\\\\377([^<]+)/g, function(all, codes) {\n const bytes = codes\n .replace(/\\\\([0-3])([0-7])([0-7])/g, function(code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n })\n .replace(/&(amp|apos|gt|lt|quot);/g, function(str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"quot\":\n return '\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n\n let chars = \"\";\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (\n code >= /* Space = */ 32 &&\n code < /* Delete = */ 127 &&\n code !== /* '<' = */ 60 &&\n code !== /* '>' = */ 62 &&\n code !== /* '&' = */ 38\n ) {\n chars += String.fromCharCode(code);\n } else {\n chars += \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\";\n }\n }\n\n return \">\" + chars;\n });\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName.toLowerCase() !== \"rdf:rdf\") {\n // Wrapped in <xmpmeta>\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName.toLowerCase() !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n const nodeName = rdf ? rdf.nodeName.toLowerCase() : null;\n if (!rdf || nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n const children = rdf.childNodes;\n for (let i = 0, ii = children.length; i < ii; i++) {\n const desc = children[i];\n if (desc.nodeName.toLowerCase() !== \"rdf:description\") {\n continue;\n }\n\n for (let j = 0, jj = desc.childNodes.length; j < jj; j++) {\n if (desc.childNodes[j].nodeName.toLowerCase() !== \"#text\") {\n const entry = desc.childNodes[j];\n const name = entry.nodeName.toLowerCase();\n\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n }\n\n get(name) {\n return this._metadataMap.has(name) ? this._metadataMap.get(name) : null;\n }\n\n getAll() {\n const obj = Object.create(null);\n for (const [key, value] of this._metadataMap) {\n obj[key] = value;\n }\n return obj;\n }\n\n has(name) {\n return this._metadataMap.has(name);\n }\n}\n\nexport { Metadata };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, (all, entity) => {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCharCode(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCharCode(parseInt(entity.substring(1), 10));\n }\n switch (entity) {\n case \"lt\":\n return \"<\";\n case \"gt\":\n return \">\";\n case \"amp\":\n return \"&\";\n case \"quot\":\n return '\"';\n }\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (\n pos < s.length &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\" &&\n s[pos] !== \"?\"\n ) {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== \"=\") {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue),\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start,\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start,\n };\n }\n\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case \"?\":\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n if (q < 0) {\n this.onError(\n XMLParserErrorCode.UnterminatedDoctypeDeclaration\n );\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(\n j + 8,\n q + (complexDoctype ? 1 : 0)\n );\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (\n s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\"\n ) {\n isClosed = true;\n } else if (\n s.substring(j + content.parsed, j + content.parsed + 1) !== \">\"\n ) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n\n Object.defineProperty(this, \"parentNode\", { value: null, writable: true });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n if (!childNodes) {\n return undefined;\n }\n const index = childNodes.indexOf(this);\n if (index === -1) {\n return undefined;\n }\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n return this.childNodes\n .map(function(child) {\n return child.textContent;\n })\n .join(\"\");\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor() {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined; // return undefined on error\n }\n\n // We should only have one root.\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined; // Return undefined if no root was found.\n }\n return { documentElement };\n }\n\n onResolveEntity(name) {\n switch (name) {\n case \"apos\":\n return \"'\";\n }\n return super.onResolveEntity(name);\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n if (!lastElement) {\n return;\n }\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { SimpleXMLParser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport { assert, createPromiseCapability } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n assert(pdfDataRangeTransport);\n\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n\n const initialData = params.initialData;\n if (initialData && initialData.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({ loaded, total });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({ chunk });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function(rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found);\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n // Reporting to first range reader, if it exists.\n const firstReader = this._rangeReaders[0];\n if (firstReader && firstReader.onProgress) {\n firstReader.onProgress({ loaded: evt.loaded });\n }\n } else {\n const fullReader = this._fullRequestReader;\n if (fullReader && fullReader.onProgress) {\n fullReader.onProgress({ loaded: evt.loaded, total: evt.total });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(!this._fullRequestReader);\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(\n this,\n queuedChunks,\n this._progressiveDone\n );\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n const readers = this._rangeReaders.slice(0);\n readers.forEach(function(rangeReader) {\n rangeReader.cancel(reason);\n });\n this._pdfDataRangeTransport.abort();\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // Ignore new data.\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._requests.forEach(function(requestCapability) {\n requestCapability.resolve({ value: undefined, done: true });\n });\n this._requests = [];\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false });\n this._requests.forEach(function(requestCapability) {\n requestCapability.resolve({ value: undefined, done: true });\n });\n this._requests = [];\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._requests.forEach(function(requestCapability) {\n requestCapability.resolve({ value: undefined, done: true });\n });\n this._requests = [];\n this._stream._removeRangeReader(this);\n }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-multi-str */\n\nimport { shadow } from \"../shared/util.js\";\n\nclass WebGLContext {\n constructor({ enable = false }) {\n this._enabled = enable === true;\n }\n\n get isEnabled() {\n let enabled = this._enabled;\n if (enabled) {\n enabled = WebGLUtils.tryInitGL();\n }\n return shadow(this, \"isEnabled\", enabled);\n }\n\n composeSMask({ layer, mask, properties }) {\n return WebGLUtils.composeSMask(layer, mask, properties);\n }\n\n drawFigures({ width, height, backgroundColor, figures, context }) {\n return WebGLUtils.drawFigures(\n width,\n height,\n backgroundColor,\n figures,\n context\n );\n }\n\n clear() {\n WebGLUtils.cleanup();\n }\n}\n\nvar WebGLUtils = (function WebGLUtilsClosure() {\n function loadShader(gl, code, shaderType) {\n var shader = gl.createShader(shaderType);\n gl.shaderSource(shader, code);\n gl.compileShader(shader);\n var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n if (!compiled) {\n var errorMsg = gl.getShaderInfoLog(shader);\n throw new Error(\"Error during shader compilation: \" + errorMsg);\n }\n return shader;\n }\n function createVertexShader(gl, code) {\n return loadShader(gl, code, gl.VERTEX_SHADER);\n }\n function createFragmentShader(gl, code) {\n return loadShader(gl, code, gl.FRAGMENT_SHADER);\n }\n function createProgram(gl, shaders) {\n var program = gl.createProgram();\n for (var i = 0, ii = shaders.length; i < ii; ++i) {\n gl.attachShader(program, shaders[i]);\n }\n gl.linkProgram(program);\n var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n if (!linked) {\n var errorMsg = gl.getProgramInfoLog(program);\n throw new Error(\"Error during program linking: \" + errorMsg);\n }\n return program;\n }\n function createTexture(gl, image, textureId) {\n gl.activeTexture(textureId);\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n // Set the parameters so we can render any size image.\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\n // Upload the image into the texture.\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n return texture;\n }\n\n var currentGL, currentCanvas;\n function generateGL() {\n if (currentGL) {\n return;\n }\n\n // The temporary canvas is used in the WebGL context.\n currentCanvas = document.createElement(\"canvas\");\n currentGL = currentCanvas.getContext(\"webgl\", {\n premultipliedalpha: false,\n });\n }\n\n var smaskVertexShaderCode =\n \"\\\n attribute vec2 a_position; \\\n attribute vec2 a_texCoord; \\\n \\\n uniform vec2 u_resolution; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_texCoord = a_texCoord; \\\n } \";\n\n var smaskFragmentShaderCode =\n \"\\\n precision mediump float; \\\n \\\n uniform vec4 u_backdrop; \\\n uniform int u_subtype; \\\n uniform sampler2D u_image; \\\n uniform sampler2D u_mask; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec4 imageColor = texture2D(u_image, v_texCoord); \\\n vec4 maskColor = texture2D(u_mask, v_texCoord); \\\n if (u_backdrop.a > 0.0) { \\\n maskColor.rgb = maskColor.rgb * maskColor.a + \\\n u_backdrop.rgb * (1.0 - maskColor.a); \\\n } \\\n float lum; \\\n if (u_subtype == 0) { \\\n lum = maskColor.a; \\\n } else { \\\n lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \\\n maskColor.b * 0.11; \\\n } \\\n imageColor.a *= lum; \\\n imageColor.rgb *= imageColor.a; \\\n gl_FragColor = imageColor; \\\n } \";\n\n var smaskCache = null;\n\n function initSmaskGL() {\n var canvas, gl;\n\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n\n // setup a GLSL program\n var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, \"u_resolution\");\n cache.positionLocation = gl.getAttribLocation(program, \"a_position\");\n cache.backdropLocation = gl.getUniformLocation(program, \"u_backdrop\");\n cache.subtypeLocation = gl.getUniformLocation(program, \"u_subtype\");\n\n var texCoordLocation = gl.getAttribLocation(program, \"a_texCoord\");\n var texLayerLocation = gl.getUniformLocation(program, \"u_image\");\n var texMaskLocation = gl.getUniformLocation(program, \"u_mask\");\n\n // provide texture coordinates for the rectangle.\n var texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n // prettier-ignore\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n 0.0, 0.0,\n 1.0, 0.0,\n 0.0, 1.0,\n 0.0, 1.0,\n 1.0, 0.0,\n 1.0, 1.0]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(texCoordLocation);\n gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n\n gl.uniform1i(texLayerLocation, 0);\n gl.uniform1i(texMaskLocation, 1);\n\n smaskCache = cache;\n }\n\n function composeSMask(layer, mask, properties) {\n var width = layer.width,\n height = layer.height;\n\n if (!smaskCache) {\n initSmaskGL();\n }\n var cache = smaskCache,\n canvas = cache.canvas,\n gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n if (properties.backdrop) {\n gl.uniform4f(\n cache.resolutionLocation,\n properties.backdrop[0],\n properties.backdrop[1],\n properties.backdrop[2],\n 1\n );\n } else {\n gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n }\n gl.uniform1i(\n cache.subtypeLocation,\n properties.subtype === \"Luminosity\" ? 1 : 0\n );\n\n // Create a textures\n var texture = createTexture(gl, layer, gl.TEXTURE0);\n var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n\n // Create a buffer and put a single clipspace rectangle in\n // it (2 triangles)\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n // prettier-ignore\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n 0, 0,\n width, 0,\n 0, height,\n 0, height,\n width, 0,\n width, height]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n // draw\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n\n gl.flush();\n\n gl.deleteTexture(texture);\n gl.deleteTexture(maskTexture);\n gl.deleteBuffer(buffer);\n\n return canvas;\n }\n\n var figuresVertexShaderCode =\n \"\\\n attribute vec2 a_position; \\\n attribute vec3 a_color; \\\n \\\n uniform vec2 u_resolution; \\\n uniform vec2 u_scale; \\\n uniform vec2 u_offset; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n vec2 position = (a_position + u_offset) * u_scale; \\\n vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_color = vec4(a_color / 255.0, 1.0); \\\n } \";\n\n var figuresFragmentShaderCode =\n \"\\\n precision mediump float; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n gl_FragColor = v_color; \\\n } \";\n\n var figuresCache = null;\n\n function initFiguresGL() {\n var canvas, gl;\n\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n\n // setup a GLSL program\n var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, \"u_resolution\");\n cache.scaleLocation = gl.getUniformLocation(program, \"u_scale\");\n cache.offsetLocation = gl.getUniformLocation(program, \"u_offset\");\n cache.positionLocation = gl.getAttribLocation(program, \"a_position\");\n cache.colorLocation = gl.getAttribLocation(program, \"a_color\");\n\n figuresCache = cache;\n }\n\n function drawFigures(width, height, backgroundColor, figures, context) {\n if (!figuresCache) {\n initFiguresGL();\n }\n var cache = figuresCache,\n canvas = cache.canvas,\n gl = cache.gl;\n\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n // count triangle points\n var count = 0;\n var i, ii, rows;\n for (i = 0, ii = figures.length; i < ii; i++) {\n switch (figures[i].type) {\n case \"lattice\":\n rows = (figures[i].coords.length / figures[i].verticesPerRow) | 0;\n count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n break;\n case \"triangles\":\n count += figures[i].coords.length;\n break;\n }\n }\n // transfer data\n var coords = new Float32Array(count * 2);\n var colors = new Uint8Array(count * 3);\n var coordsMap = context.coords,\n colorsMap = context.colors;\n var pIndex = 0,\n cIndex = 0;\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n switch (figure.type) {\n case \"lattice\":\n var cols = figure.verticesPerRow;\n rows = (ps.length / cols) | 0;\n for (var row = 1; row < rows; row++) {\n var offset = row * cols + 1;\n for (var col = 1; col < cols; col++, offset++) {\n coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n\n coords[pIndex + 6] = coords[pIndex + 2];\n coords[pIndex + 7] = coords[pIndex + 3];\n coords[pIndex + 8] = coords[pIndex + 4];\n coords[pIndex + 9] = coords[pIndex + 5];\n coords[pIndex + 10] = coordsMap[ps[offset]];\n coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n colors[cIndex + 9] = colors[cIndex + 3];\n colors[cIndex + 10] = colors[cIndex + 4];\n colors[cIndex + 11] = colors[cIndex + 5];\n colors[cIndex + 12] = colors[cIndex + 6];\n colors[cIndex + 13] = colors[cIndex + 7];\n colors[cIndex + 14] = colors[cIndex + 8];\n colors[cIndex + 15] = colorsMap[cs[offset]];\n colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n pIndex += 12;\n cIndex += 18;\n }\n }\n break;\n case \"triangles\":\n for (var j = 0, jj = ps.length; j < jj; j++) {\n coords[pIndex] = coordsMap[ps[j]];\n coords[pIndex + 1] = coordsMap[ps[j] + 1];\n colors[cIndex] = colorsMap[cs[j]];\n colors[cIndex + 1] = colorsMap[cs[j] + 1];\n colors[cIndex + 2] = colorsMap[cs[j] + 2];\n pIndex += 2;\n cIndex += 3;\n }\n break;\n }\n }\n\n // draw\n if (backgroundColor) {\n gl.clearColor(\n backgroundColor[0] / 255,\n backgroundColor[1] / 255,\n backgroundColor[2] / 255,\n 1.0\n );\n } else {\n gl.clearColor(0, 0, 0, 0);\n }\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n var coordsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n var colorsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.colorLocation);\n gl.vertexAttribPointer(\n cache.colorLocation,\n 3,\n gl.UNSIGNED_BYTE,\n false,\n 0,\n 0\n );\n\n gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n\n gl.drawArrays(gl.TRIANGLES, 0, count);\n\n gl.flush();\n\n gl.deleteBuffer(coordsBuffer);\n gl.deleteBuffer(colorsBuffer);\n\n return canvas;\n }\n\n return {\n tryInitGL() {\n try {\n generateGL();\n return !!currentGL;\n } catch (ex) {}\n return false;\n },\n\n composeSMask,\n\n drawFigures,\n\n cleanup() {\n if (smaskCache && smaskCache.canvas) {\n smaskCache.canvas.width = 0;\n smaskCache.canvas.height = 0;\n }\n if (figuresCache && figuresCache.canvas) {\n figuresCache.canvas.width = 0;\n figuresCache.canvas.height = 0;\n }\n smaskCache = null;\n figuresCache = null;\n },\n };\n})();\n\nexport { WebGLContext };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n createPromiseCapability,\n Util,\n} from \"../shared/util.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {TextContent} [textContent] - Text content to render (the object\n * is returned by the page's `getTextContent` method).\n * @property {ReadableStream} [textContentStream] - Text content stream to\n * render (the stream is returned by the page's `streamTextContent` method).\n * @property {HTMLElement} container - HTML element that will contain text runs.\n * @property {PageViewport} viewport - The target viewport to properly\n * layout the text runs.\n * @property {Array} [textDivs] - HTML elements that are correspond to the\n * text items of the textContent input. This is output and shall be\n * initially be set to empty array.\n * @property {Array} [textContentItemsStr] - Strings that correspond to the\n * `str` property of the text items of textContent input. This is output\n * and shall be initially be set to empty array.\n * @property {number} [timeout] - Delay in milliseconds before rendering of the\n * text runs occurs.\n * @property {boolean} [enhanceTextSelection] - Whether to turn on the text\n * selection enhancement.\n */\nvar renderTextLayer = (function renderTextLayerClosure() {\n var MAX_TEXT_DIVS_TO_RENDER = 100000;\n\n var NonWhitespaceRegexp = /\\S/;\n\n function isAllWhitespace(str) {\n return !NonWhitespaceRegexp.test(str);\n }\n\n function appendText(task, geom, styles) {\n // Initialize all used properties to keep the caches monomorphic.\n var textDiv = document.createElement(\"span\");\n var textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n isWhitespace: false,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n };\n\n task._textDivs.push(textDiv);\n if (isAllWhitespace(geom.str)) {\n textDivProperties.isWhitespace = true;\n task._textDivProperties.set(textDiv, textDivProperties);\n return;\n }\n\n var tx = Util.transform(task._viewport.transform, geom.transform);\n var angle = Math.atan2(tx[1], tx[0]);\n var style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);\n var fontAscent = fontHeight;\n if (style.ascent) {\n fontAscent = style.ascent * fontAscent;\n } else if (style.descent) {\n fontAscent = (1 + style.descent) * fontAscent;\n }\n\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n // Setting the style properties individually, rather than all at once,\n // should be OK since the `textDiv` isn't appended to the document yet.\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n\n textDiv.textContent = geom.str;\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n if (geom.str.length > 1) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection) {\n var angleCos = 1,\n angleSin = 0;\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n var divWidth =\n (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n var divHeight = fontHeight;\n\n var m, b;\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m,\n });\n }\n }\n\n function render(task) {\n if (task._canceled) {\n return;\n }\n var textDivs = task._textDivs;\n var capability = task._capability;\n var textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (var i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n }\n\n function expand(task) {\n var bounds = task._bounds;\n var viewport = task._viewport;\n\n var expanded = expandBounds(viewport.width, viewport.height, bounds);\n for (var i = 0; i < expanded.length; i++) {\n var div = bounds[i].div;\n var divProperties = task._textDivProperties.get(div);\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n task._textDivProperties.set(div, divProperties);\n continue;\n }\n // Box is rotated -- trying to find padding so rotated div will not\n // exceed its expanded bounds.\n var e = expanded[i],\n b = bounds[i];\n var m = b.m,\n c = m[0],\n s = m[1];\n // Finding intersections with expanded box.\n var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n var ts = new Float64Array(64);\n points.forEach(function(p, i) {\n var t = Util.applyTransform(p, m);\n ts[i + 0] = c && (e.left - t[0]) / c;\n ts[i + 4] = s && (e.top - t[1]) / s;\n ts[i + 8] = c && (e.right - t[0]) / c;\n ts[i + 12] = s && (e.bottom - t[1]) / s;\n\n ts[i + 16] = s && (e.left - t[0]) / -s;\n ts[i + 20] = c && (e.top - t[1]) / c;\n ts[i + 24] = s && (e.right - t[0]) / -s;\n ts[i + 28] = c && (e.bottom - t[1]) / c;\n\n ts[i + 32] = c && (e.left - t[0]) / -c;\n ts[i + 36] = s && (e.top - t[1]) / -s;\n ts[i + 40] = c && (e.right - t[0]) / -c;\n ts[i + 44] = s && (e.bottom - t[1]) / -s;\n\n ts[i + 48] = s && (e.left - t[0]) / s;\n ts[i + 52] = c && (e.top - t[1]) / -c;\n ts[i + 56] = s && (e.right - t[0]) / s;\n ts[i + 60] = c && (e.bottom - t[1]) / -c;\n });\n var findPositiveMin = function(ts, offset, count) {\n var result = 0;\n for (var i = 0; i < count; i++) {\n var t = ts[offset++];\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n return result;\n };\n // Not based on math, but to simplify calculations, using cos and sin\n // absolute values to not exceed the box (it can but insignificantly).\n var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n task._textDivProperties.set(div, divProperties);\n }\n }\n\n function expandBounds(width, height, boxes) {\n var bounds = boxes.map(function(box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined,\n };\n });\n expandBoundsLTR(width, bounds);\n var expanded = new Array(boxes.length);\n bounds.forEach(function(b) {\n var i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0,\n };\n });\n\n // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n // array and objects.\n boxes.map(function(box, i) {\n var e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n bounds.forEach(function(b) {\n var i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n });\n return expanded;\n }\n\n function expandBoundsLTR(width, bounds) {\n // Sorting by x1 coordinate and walk by the bounds in the same order.\n bounds.sort(function(a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n\n // First we see on the horizon is a fake boundary.\n var fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0,\n };\n var horizon = [\n {\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary,\n },\n ];\n\n bounds.forEach(function(boundary) {\n // Searching for the affected part of horizon.\n // TODO red-black tree or simple binary search\n var i = 0;\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n var j = horizon.length - 1;\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n var horizonPart, affectedBoundary;\n var q,\n k,\n maxXNew = -Infinity;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var xNew;\n if (affectedBoundary.x2 > boundary.x1) {\n // In the middle of the previous element, new x shall be at the\n // boundary start. Extending if further if the affected boundary\n // placed on top of the current one.\n xNew =\n affectedBoundary.index > boundary.index\n ? affectedBoundary.x1New\n : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n // We have some space in between, new x in middle will be a fair\n // choice.\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n // Affected boundary has x2new set, using it as new x.\n xNew = affectedBoundary.x2New;\n }\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n // Set new x1 for current boundary.\n boundary.x1New = maxXNew;\n\n // Adjusts new x2 for the affected boundaries.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n // Was not set yet, choosing new x if possible.\n if (affectedBoundary.x2 > boundary.x1) {\n // Current and affected boundaries intersect. If affected boundary\n // is placed on top of the current, shrinking the affected.\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n // Affected boundary is touching new x, pushing it back.\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n // Fixing the horizon.\n var changedHorizon = [],\n lastBoundary = null;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n // Checking which boundary will be visible.\n var useBoundary =\n affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n if (lastBoundary === useBoundary) {\n // Merging with previous.\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary,\n });\n lastBoundary = useBoundary;\n }\n }\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary,\n });\n }\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary,\n });\n }\n\n // Set x2 new of boundary that is no longer visible (see overlapping case\n // above).\n // TODO more efficient, e.g. via reference counting.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n var used = false;\n for (\n k = i - 1;\n !used && k >= 0 && horizon[k].start >= affectedBoundary.y1;\n k--\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (\n k = j + 1;\n !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2;\n k++\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(\n horizon,\n [i, j - i + 1].concat(changedHorizon)\n );\n });\n\n // Set new x2 for all unset boundaries.\n horizon.forEach(function(horizonPart) {\n var affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n });\n }\n\n /**\n * Text layer rendering task.\n *\n * @param {TextContent} textContent\n * @param {HTMLElement} container\n * @param {PageViewport} viewport\n * @param {Array} textDivs\n * @param {boolean} enhanceTextSelection\n * @private\n */\n function TextLayerRenderTask({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection,\n }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!(\n globalThis.FontInspector && globalThis.FontInspector.enabled\n );\n\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = createPromiseCapability();\n this._renderTimer = null;\n this._bounds = [];\n\n // Always clean-up the temporary canvas once rendering is no longer pending.\n this._capability.promise\n .finally(() => {\n if (this._layoutTextCtx) {\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n })\n .catch(() => {\n /* Avoid \"Uncaught promise\" messages in the console. */\n });\n }\n TextLayerRenderTask.prototype = {\n get promise() {\n return this._capability.promise;\n },\n\n cancel: function TextLayer_cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader.cancel(new AbortException(\"TextLayer task cancelled.\"));\n this._reader = null;\n }\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n },\n\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n this._textContentItemsStr.push(items[i].str);\n appendText(this, items[i], styleCache);\n }\n },\n\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n if (textDivProperties.isWhitespace) {\n return;\n }\n\n let transform = \"\";\n if (textDivProperties.canvasWidth !== 0) {\n const { fontSize, fontFamily } = textDiv.style;\n\n // Only build font string and set to context if different from last.\n if (\n fontSize !== this._layoutTextLastFontSize ||\n fontFamily !== this._layoutTextLastFontFamily\n ) {\n this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n // Only measure the width for multi-char text divs, see `appendText`.\n const { width } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n textDivProperties.scale = textDivProperties.canvasWidth / width;\n transform = `scaleX(${textDivProperties.scale})`;\n }\n }\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n textDiv.style.transform = transform;\n }\n this._textDivProperties.set(textDiv, textDivProperties);\n this._container.appendChild(textDiv);\n },\n\n _render: function TextLayer_render(timeout) {\n const capability = createPromiseCapability();\n let styleCache = Object.create(null);\n\n // The temporary canvas is used to measure text length in the DOM.\n const canvas = document.createElement(\"canvas\");\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n this._layoutTextCtx = canvas.getContext(\"2d\", { alpha: false });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n this._processItems(textItems, textStyles);\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({ value, done }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error(\n 'Neither \"textContent\" nor \"textContentStream\"' +\n \" parameters specified.\"\n );\n }\n\n capability.promise.then(() => {\n styleCache = null;\n if (!timeout) {\n // Render right away\n render(this);\n } else {\n // Schedule\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n },\n\n expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n const transformBuf = [],\n paddingBuf = [];\n\n for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n const divProps = this._textDivProperties.get(div);\n\n if (divProps.isWhitespace) {\n continue;\n }\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(\n `translateX(${-divProps.paddingLeft / divProps.scale}px)`\n );\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n },\n };\n\n /**\n * Starts rendering of the text layer.\n *\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\n function renderTextLayer(renderParameters) {\n var task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection,\n });\n task._render(renderParameters.timeout);\n return task;\n }\n\n return renderTextLayer;\n})();\n\nexport { renderTextLayer };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n addLinkAttributes,\n DOMSVGFactory,\n getFilenameFromUrl,\n LinkTarget,\n PDFDateString,\n} from \"./display_utils.js\";\nimport {\n AnnotationBorderStyleType,\n AnnotationType,\n stringToPDFString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPage} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {DownloadManager} downloadManager\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderInteractiveForms\n * @property {Object} svgFactory\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n constructor(parameters, isRenderable = false, ignoreBorder = false) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderInteractiveForms = parameters.renderInteractiveForms;\n this.svgFactory = parameters.svgFactory;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement}\n */\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n\n container.setAttribute(\"data-annotation-id\", data.id);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n container.style.transform = `matrix(${viewport.transform.join(\",\")})`;\n container.style.transformOrigin = `-${rect[0]}px -${rect[1]}px`;\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {\n // Underline styles only have a bottom border, so we do not need\n // to adjust for all borders. This yields a similar result as\n // Adobe Acrobat/Reader.\n width = width - 2 * data.borderStyle.width;\n height = height - 2 * data.borderStyle.width;\n }\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `${horizontalRadius}px / ${verticalRadius}px`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n if (data.color) {\n container.style.borderColor = Util.makeCssRgb(\n data.color[0] | 0,\n data.color[1] | 0,\n data.color[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${rect[0]}px`;\n container.style.top = `${rect[1]}px`;\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n return container;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @param {HTMLSectionElement} container\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup(container, trigger, data) {\n // If no trigger element is specified, create it.\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n title: data.title,\n modificationDate: data.modificationDate,\n contents: data.contents,\n hideWrapper: true,\n });\n const popup = popupElement.render();\n\n // Position the popup next to the annotation's container.\n popup.style.left = container.style.width;\n\n container.appendChild(popup);\n }\n\n /**\n * Render the annotation's HTML element in the empty container.\n *\n * @public\n * @memberof AnnotationElement\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.url ||\n parameters.data.dest ||\n parameters.data.action\n );\n super(parameters, isRenderable);\n }\n\n /**\n * Render the link annotation's HTML element in the empty container.\n *\n * @public\n * @memberof LinkAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"linkAnnotation\";\n\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n\n if (data.url) {\n addLinkAttributes(link, {\n url: data.url,\n target: data.newWindow\n ? LinkTarget.BLANK\n : linkService.externalLinkTarget,\n rel: linkService.externalLinkRel,\n enabled: linkService.externalLinkEnabled,\n });\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else {\n this._bindLink(link, data.dest);\n }\n\n this.container.appendChild(link);\n return this.container;\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.navigateTo(destination);\n }\n return false;\n };\n if (destination) {\n link.className = \"internalLink\";\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n link.className = \"internalLink\";\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable);\n }\n\n /**\n * Render the text annotation's HTML element in the empty container.\n *\n * @public\n * @memberof TextAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"textAnnotation\";\n\n const image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n /**\n * Render the widget annotation's HTML element in the empty container.\n *\n * @public\n * @memberof WidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n // Show only the container for unsupported field types.\n return this.container;\n }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderInteractiveForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, isRenderable);\n }\n\n /**\n * Render the text widget annotation's HTML element in the empty container.\n *\n * @public\n * @memberof TextWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n\n this.container.className = \"textWidgetAnnotation\";\n\n let element = null;\n if (this.renderInteractiveForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = this.data.fieldValue;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", this.data.fieldValue);\n }\n\n element.disabled = this.data.readOnly;\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / this.data.maxLen;\n\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n\n let font = null;\n if (\n this.data.fontRefName &&\n this.page.commonObjs.has(this.data.fontRefName)\n ) {\n font = this.page.commonObjs.get(this.data.fontRefName);\n }\n this._setTextStyle(element, font);\n }\n\n if (this.data.textAlignment !== null) {\n element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @param {Object} font\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element, font) {\n // TODO: This duplicates some of the logic in CanvasGraphics.setFont().\n const style = element.style;\n style.fontSize = `${this.data.fontSize}px`;\n style.direction = this.data.fontDirection < 0 ? \"rtl\" : \"ltr\";\n\n if (!font) {\n return;\n }\n\n let bold = \"normal\";\n if (font.black) {\n bold = \"900\";\n } else if (font.bold) {\n bold = \"bold\";\n }\n style.fontWeight = bold;\n style.fontStyle = font.italic ? \"italic\" : \"normal\";\n\n // Use a reasonable default font if the font doesn't specify a fallback.\n const fontFamily = font.loadedName ? `\"${font.loadedName}\", ` : \"\";\n const fallbackName = font.fallbackName || \"Helvetica, sans-serif\";\n style.fontFamily = fontFamily + fallbackName;\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n /**\n * Render the checkbox widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof CheckboxWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n\n const element = document.createElement(\"input\");\n element.disabled = this.data.readOnly;\n element.type = \"checkbox\";\n if (this.data.fieldValue && this.data.fieldValue !== \"Off\") {\n element.setAttribute(\"checked\", true);\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n /**\n * Render the radio button widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof RadioButtonWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n\n const element = document.createElement(\"input\");\n element.disabled = this.data.readOnly;\n element.type = \"radio\";\n element.name = this.data.fieldName;\n if (this.data.fieldValue === this.data.buttonValue) {\n element.setAttribute(\"checked\", true);\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n /**\n * Render the push button widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof PushButtonWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n /**\n * Render the choice widget annotation's HTML element in the empty\n * container.\n *\n * @public\n * @memberof ChoiceWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"choiceWidgetAnnotation\";\n\n const selectElement = document.createElement(\"select\");\n selectElement.disabled = this.data.readOnly;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n // Insert the options into the choice field.\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (this.data.fieldValue.includes(option.displayValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n selectElement.appendChild(optionElement);\n }\n\n this.container.appendChild(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable);\n }\n\n /**\n * Render the popup annotation's HTML element in the empty container.\n *\n * @public\n * @memberof PopupAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n // Do not render popup annotations for parent elements with these types as\n // they create the popups themselves (because of custom trigger divs).\n const IGNORE_TYPES = [\n \"Line\",\n \"Square\",\n \"Circle\",\n \"PolyLine\",\n \"Polygon\",\n \"Ink\",\n ];\n\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElement = this.layer.querySelector(selector);\n if (!parentElement) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: parentElement,\n color: this.data.color,\n title: this.data.title,\n modificationDate: this.data.modificationDate,\n contents: this.data.contents,\n });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n const parentLeft = parseFloat(parentElement.style.left);\n const parentWidth = parseFloat(parentElement.style.width);\n this.container.style.transformOrigin = `-${parentLeft + parentWidth}px -${\n parentElement.style.top\n }`;\n this.container.style.left = `${parentLeft + parentWidth}px`;\n\n this.container.appendChild(popup.render());\n return this.container;\n }\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.title = parameters.title;\n this.modificationDate = parameters.modificationDate;\n this.contents = parameters.contents;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n /**\n * Render the popup's HTML element.\n *\n * @public\n * @memberof PopupElement\n * @returns {HTMLSectionElement}\n */\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n\n // For Popup annotations we hide the entire section because it contains\n // only the popup. However, for Text annotations without a separate Popup\n // annotation, we cannot hide the entire container as the image would\n // disappear too. In that special case, hiding the wrapper suffices.\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.setAttribute(\"hidden\", true);\n\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n\n const color = this.color;\n if (color) {\n // Enlighten the color.\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.textContent = this.title;\n popup.appendChild(title);\n\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n const dateObject = PDFDateString.toDateObject(this.modificationDate);\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n popup.appendChild(modificationDate);\n }\n\n const contents = this._formatContents(this.contents);\n popup.appendChild(contents);\n\n // Attach the event listeners to the trigger element.\n this.trigger.addEventListener(\"click\", this._toggle.bind(this));\n this.trigger.addEventListener(\"mouseover\", this._show.bind(this, false));\n this.trigger.addEventListener(\"mouseout\", this._hide.bind(this, false));\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n\n wrapper.appendChild(popup);\n return wrapper;\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {string} contents\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents(contents) {\n const p = document.createElement(\"p\");\n const lines = contents.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.appendChild(document.createTextNode(line));\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n return p;\n }\n\n /**\n * Toggle the visibility of the popup.\n *\n * @private\n * @memberof PopupElement\n */\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n /**\n * Show the popup.\n *\n * @private\n * @param {boolean} pin\n * @memberof PopupElement\n */\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hasAttribute(\"hidden\")) {\n this.hideElement.removeAttribute(\"hidden\");\n this.container.style.zIndex += 1;\n }\n }\n\n /**\n * Hide the popup.\n *\n * @private\n * @param {boolean} unpin\n * @memberof PopupElement\n */\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hasAttribute(\"hidden\") && !this.pinned) {\n this.hideElement.setAttribute(\"hidden\", true);\n this.container.style.zIndex -= 1;\n }\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the free text annotation's HTML element in the empty container.\n *\n * @public\n * @memberof FreeTextAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the line annotation's HTML element in the empty container.\n *\n * @public\n * @memberof LineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"lineAnnotation\";\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n\n svg.appendChild(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n this._createPopup(this.container, line, data);\n\n return this.container;\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the square annotation's HTML element in the empty container.\n *\n * @public\n * @memberof SquareAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"squareAnnotation\";\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"none\");\n\n svg.appendChild(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n this._createPopup(this.container, square, data);\n\n return this.container;\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the circle annotation's HTML element in the empty container.\n *\n * @public\n * @memberof CircleAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"circleAnnotation\";\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"none\");\n\n svg.appendChild(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n this._createPopup(this.container, circle, data);\n\n return this.container;\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n /**\n * Render the polyline annotation's HTML element in the empty container.\n *\n * @public\n * @memberof PolylineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"none\");\n\n svg.appendChild(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(this.container, polyline, data);\n\n return this.container;\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the caret annotation's HTML element in the empty container.\n *\n * @public\n * @memberof CaretAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n }\n\n /**\n * Render the ink annotation's HTML element in the empty container.\n *\n * @public\n * @memberof InkAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"none\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(this.container, polyline, data);\n\n svg.appendChild(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the highlight annotation's HTML element in the empty container.\n *\n * @public\n * @memberof HighlightAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"highlightAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the underline annotation's HTML element in the empty container.\n *\n * @public\n * @memberof UnderlineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"underlineAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the squiggly annotation's HTML element in the empty container.\n *\n * @public\n * @memberof SquigglyAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"squigglyAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the strikeout annotation's HTML element in the empty container.\n *\n * @public\n * @memberof StrikeOutAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"strikeoutAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.title ||\n parameters.data.contents\n );\n super(parameters, isRenderable, /* ignoreBorder = */ true);\n }\n\n /**\n * Render the stamp annotation's HTML element in the empty container.\n *\n * @public\n * @memberof StampAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, /* isRenderable = */ true);\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename);\n this.content = content;\n\n if (this.linkService.eventBus) {\n this.linkService.eventBus.dispatch(\"fileattachmentannotation\", {\n source: this,\n id: stringToPDFString(filename),\n filename,\n content,\n });\n }\n }\n\n /**\n * Render the file attachment annotation's HTML element in the empty\n * container.\n *\n * @public\n * @memberof FileAttachmentAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n\n const trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n this._createPopup(this.container, trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download() {\n if (!this.downloadManager) {\n warn(\"Download cannot be started due to unavailable download manager\");\n return;\n }\n this.downloadManager.downloadData(this.content, this.filename, \"\");\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPage} page\n * @property {IPDFLinkService} linkService\n * @property {DownloadManager} downloadManager\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderInteractiveForms\n */\n\nclass AnnotationLayer {\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static render(parameters) {\n const sortedAnnotations = [],\n popupAnnotations = [];\n // Ensure that Popup annotations are handled last, since they're dependant\n // upon the parent annotation having already been rendered (please refer to\n // the `PopupAnnotationElement.render` method); fixes issue 11362.\n for (const data of parameters.annotations) {\n if (!data) {\n continue;\n }\n if (data.annotationType === AnnotationType.POPUP) {\n popupAnnotations.push(data);\n continue;\n }\n sortedAnnotations.push(data);\n }\n if (popupAnnotations.length) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n for (const data of sortedAnnotations) {\n const element = AnnotationElementFactory.create({\n data,\n layer: parameters.div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderInteractiveForms: parameters.renderInteractiveForms || false,\n svgFactory: new DOMSVGFactory(),\n });\n if (element.isRenderable) {\n parameters.div.appendChild(element.render());\n }\n }\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static update(parameters) {\n for (const data of parameters.annotations) {\n const element = parameters.div.querySelector(\n `[data-annotation-id=\"${data.id}\"]`\n );\n if (element) {\n element.style.transform = `matrix(${parameters.viewport.transform.join(\n \",\"\n )})`;\n }\n }\n parameters.div.removeAttribute(\"hidden\");\n }\n}\n\nexport { AnnotationLayer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n/* eslint no-var: error */\n\nimport {\n createObjectURL,\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n isNum,\n OPS,\n TextRenderingMode,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { DOMSVGFactory } from \"./display_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\nlet SVGGraphics = function() {\n throw new Error(\"Not implemented: SVGGraphics\");\n};\n\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\",\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const convertImgDataToPng = (function() {\n const PNG_HEADER = new Uint8Array([\n 0x89,\n 0x50,\n 0x4e,\n 0x47,\n 0x0d,\n 0x0a,\n 0x1a,\n 0x0a,\n ]);\n const CHUNK_WRAPPER_SIZE = 12;\n\n const crcTable = new Int32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ ((c >> 1) & 0x7fffffff);\n } else {\n c = (c >> 1) & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n\n data[p] = (len >> 24) & 0xff;\n data[p + 1] = (len >> 16) & 0xff;\n data[p + 2] = (len >> 8) & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n const crc = crc32(data, offset + 4, p);\n data[p] = (crc >> 24) & 0xff;\n data[p + 1] = (crc >> 16) & 0xff;\n data[p + 2] = (crc >> 8) & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the\n // canvas API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n let input;\n // eslint-disable-next-line no-undef\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n // eslint-disable-next-line no-undef\n input = Buffer.from(literals);\n }\n const output = __non_webpack_require__(\"zlib\").deflateSync(input, {\n level: 9,\n });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn(\n \"Not compressing PNG because zlib.deflateSync is unavailable: \" + e\n );\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n let pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = (len >> 8) & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = ((~len & 0xffff) >> 8) & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n const adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = (adler >> 24) & 0xff;\n idat[pi++] = (adler >> 16) & 0xff;\n idat[pi++] = (adler >> 8) & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n\n // prefix every row with predictor 0\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(\n bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals\n );\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n // inverting for image masks\n offsetLiterals = 0;\n for (let y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([\n (width >> 24) & 0xff,\n (width >> 16) & 0xff,\n (width >> 8) & 0xff,\n width & 0xff,\n (height >> 24) & 0xff,\n (height >> 16) & 0xff,\n (height >> 8) & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00, // interlace method\n ]);\n const idat = deflateSync(literals);\n\n // PNG consists of: header, IHDR+data, IDAT+data, and IEND.\n const pngLength =\n PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind =\n imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n })();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }\n\n // eslint-disable-next-line no-inner-declarations\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({ fnId: 92, fn: \"group\", items: [] });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n return opTree;\n }\n\n /**\n * Format a float number as a string.\n *\n * @param value {number} - The float number to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const s = value.toFixed(10);\n let i = s.length - 1;\n if (s[i] !== \"0\") {\n return s;\n }\n\n // Remove trailing zeros.\n do {\n i--;\n } while (s[i] === \"0\");\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n /**\n * Format a transform matrix as a string. The standard rotation, scale and\n * translation matrices are replaced by their shorter forms, and for\n * identity matrices an empty string is returned to save memory.\n *\n * @param m {Array} - The transform matrix to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = (Math.acos(m[0]) * 180) / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n return (\n `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` +\n `${pf(m[5])})`\n );\n }\n\n // The counts below are relevant for all pages, so they have to be global\n // instead of being members of `SVGGraphics` (which is recreated for\n // each page).\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n\n SVGGraphics = class SVGGraphics {\n constructor(commonObjs, objs, forceDataSchema) {\n this.svgFactory = new DOMSVGFactory();\n\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n\n // In `src/shared/util.js` the operator names are mapped to IDs.\n // The list below represents the reverse of that, i.e., it maps IDs\n // to operator names.\n this._operatorIdMapping = [];\n for (const op in OPS) {\n this._operatorIdMapping[OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(\n this.transformMatrix,\n transformMatrix\n );\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i],\n });\n }\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.dependency:\n // Handled in `loadDependencies`, so no warning should be shown.\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n case OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n case OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n case OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip(\"nonzero\");\n break;\n case OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintJpegXObject:\n this.paintJpegXObject(args[0], args[1], args[2]);\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTreeElement.items);\n break;\n default:\n warn(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.sqrt(a * a + b * b);\n\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n\n current.xcoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = IDENTITY_MATRIX;\n current.lineMatrix = IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n\n current.xcoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n let x = 0;\n for (const glyph of glyphs) {\n if (glyph === null) {\n // Word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (isNum(glyph)) {\n x += -glyph * fontSize * 0.001;\n continue;\n }\n\n const width = glyph.width;\n const character = glyph.fontChar;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const charWidth = width * widthAdvanceScale + spacing * fontDirection;\n\n if (!glyph.isInFont && !font.missingFile) {\n x += charWidth;\n // TODO: To assist with text selection, we should replace the missing\n // character with a space character if charWidth is not zero.\n // But we cannot just do \"character = ' '\", because the ' ' character\n // might actually map to a different glyph.\n continue;\n }\n current.xcoords.push(current.x + x);\n current.tspan.textContent += character;\n x += charWidth;\n }\n if (vertical) {\n current.y -= x * textHScale;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(\n null,\n \"x\",\n current.xcoords.map(pf).join(\" \")\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n // Workaround for Firefox: We must set fill=\"transparent\" because\n // fill=\"none\" would generate an empty clipping path.\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n // Include the text rise in the text matrix since the `pm` function\n // creates the SVG element's `translate` entry (work on a copy to avoid\n // altering the original text matrix).\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(\n null,\n \"transform\",\n `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`\n );\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n const url = createObjectURL(\n fontObj.data,\n fontObj.mimetype,\n this.forceDataSchema\n );\n this.cssStyle.textContent +=\n `@font-face { font-family: \"${fontObj.loadedName}\";` +\n ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (\n this.embedFonts &&\n fontObj.data &&\n !this.embeddedFonts[fontObj.loadedName]\n ) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = fontObj.fontMatrix\n ? fontObj.fontMatrix\n : FONT_IDENTITY_MATRIX;\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n }\n\n endText() {\n const current = this.current;\n if (\n current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG &&\n current.txtElement &&\n current.txtElement.hasChildNodes()\n ) {\n // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n // Path properties\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = Util.makeCssRgb(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = Util.makeCssRgb(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n const inv = Util.inverseTransform(this.transformMatrix);\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n this._ensureTransformGroup().appendChild(rect);\n }\n\n /**\n * @private\n */\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n return this._makeShadingPattern(args);\n }\n\n /**\n * @private\n */\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n\n const tilingId = `shading${shadingCount++}`;\n const [tx0, ty0] = Util.applyTransform([x0, y0], matrix);\n const [tx1, ty1] = Util.applyTransform([x1, y1], matrix);\n const [xscale, yscale] = Util.singularValueDecompose2dScale(matrix);\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n\n // Save current state.\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n if (paintType === 2) {\n const cssColor = Util.makeCssRgb(...color);\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n this.executeOpTree(this.convertOpList(operatorList));\n\n // Restore saved state.\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return `url(#${tilingId})`;\n }\n\n /**\n * @private\n */\n _makeShadingPattern(args) {\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n this.defs.appendChild(gradient);\n return `url(#${shadingId})`;\n case \"Mesh\":\n warn(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\n \"M\",\n pf(x),\n pf(y),\n \"L\",\n pf(xw),\n pf(y),\n \"L\",\n pf(xw),\n pf(yh),\n \"L\",\n pf(x),\n pf(yh),\n \"Z\"\n );\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3]),\n pf(x),\n pf(y)\n );\n j += 6;\n break;\n case OPS.curveTo2:\n d.push(\n \"C\",\n pf(x),\n pf(y),\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3])\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(x),\n pf(y),\n pf(x),\n pf(y)\n );\n j += 4;\n break;\n case OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (\n current.path &&\n ops.length > 0 &&\n ops[0] !== OPS.rectangle &&\n ops[0] !== OPS.moveTo\n ) {\n // If a path does not start with an OPS.rectangle or OPS.moveTo, it has\n // probably been divided into two OPS.constructPath operators by\n // OperatorList. Append the commands to the previous path element.\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n\n // Painting operators end a path.\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n // Add the current path to a clipping path.\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n // A deep clone is needed when text is used as a clipping path.\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n this.extraStack.forEach(function(prev) {\n prev.clipGroup = null;\n });\n // Intersect with the previous clipping path.\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n current.activeClipUrl = `url(#${clipId})`;\n\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value);\n break;\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n case \"ca\":\n this.setFillAlpha(value);\n break;\n default:\n warn(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n if (current.element) {\n this._setStrokeAttributes(current.element);\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n /**\n * @private\n */\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function(value) {\n return lineWidthScale * value;\n });\n }\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(\n null,\n \"stroke-width\",\n pf(lineWidthScale * current.lineWidth) + \"px\"\n );\n element.setAttributeNS(\n null,\n \"stroke-dasharray\",\n dashArray.map(pf).join(\" \")\n );\n element.setAttributeNS(\n null,\n \"stroke-dashoffset\",\n pf(lineWidthScale * current.dashPhase) + \"px\"\n );\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fill();\n }\n\n fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n paintJpegXObject(objId, w, h) {\n const imgObj = this.objs.get(objId);\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgObj.src);\n imgEl.setAttributeNS(null, \"width\", pf(w));\n imgEl.setAttributeNS(null, \"height\", pf(h));\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-h));\n imgEl.setAttributeNS(\n null,\n \"transform\",\n `scale(${pf(1 / w)} ${pf(-1 / h)})`\n );\n\n this._ensureTransformGroup().appendChild(imgEl);\n }\n\n paintImageXObject(objId) {\n const imgData = this.objs.get(objId);\n if (!imgData) {\n warn(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(\n null,\n \"transform\",\n `scale(${pf(1 / width)} ${pf(-1 / height)})`\n );\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n\n this.defs.appendChild(mask);\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(\n matrix[0],\n matrix[1],\n matrix[2],\n matrix[3],\n matrix[4],\n matrix[5]\n );\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n /**\n * @private\n */\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n\n // Create the definitions element.\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n }\n\n /**\n * @private\n */\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n }\n\n /**\n * @private\n */\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n return this.tgrp;\n }\n };\n}\n\nexport { SVGGraphics };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nconst fs = __non_webpack_require__(\"fs\");\nconst http = __non_webpack_require__(\"http\");\nconst https = __non_webpack_require__(\"https\");\nconst url = __non_webpack_require__(\"url\");\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n} from \"../shared/util.js\";\nimport {\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp =\n this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n getFullReader() {\n assert(!this._fullRequestReader);\n this._fullRequestReader = this.isFsUrl\n ? new PDFNodeStreamFsFullReader(this)\n : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl\n ? new PDFNodeStreamFsRangeReader(this, start, end)\n : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n readers.forEach(function(reader) {\n reader.cancel(reason);\n });\n }\n}\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n this._headersCapability = createPromiseCapability();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nfunction createRequestOptions(url, headers) {\n return {\n protocol: url.protocol,\n auth: url.auth,\n host: url.hostname,\n port: url.port,\n path: url.path,\n method: \"GET\",\n headers,\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n return this._readableStream.headers[name.toLowerCase()];\n };\n const {\n allowRangeRequests,\n suggestedLength,\n } = validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders[\"Range\"] = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n MissingPDFException,\n UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange,\n}) {\n assert(rangeChunkSize > 0, \"Range chunk size must be larger than zero\");\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n if (/\\.pdf$/i.test(filename)) {\n return filename;\n }\n }\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(\n \"Unexpected server response (\" +\n status +\n ') while retrieving PDF \"' +\n url +\n '\".',\n status\n );\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Support UTF-8 decoding when TextDecoder is unsupported.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n \"(?:^|;)\\\\s*\" +\n attributePattern +\n \"\\\\s*=\\\\s*\" +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n \"(\" +\n '[^\";\\\\s][^;\\\\s]*' +\n \"|\" +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n \")\",\n flags\n );\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const bytes = Array.from(value, function(ch) {\n return ch.charCodeAt(0) & 0xff;\n });\n value = decoder.decode(new Uint8Array(bytes));\n needsEncodingFixup = false;\n } catch (e) {\n // TextDecoder constructor threw - unrecognized encoding.\n // Or TextDecoder API is not available (in IE / Edge).\n if (/^utf-?8$/i.test(encoding)) {\n // UTF-8 is commonly used, try to support it in another way:\n try {\n value = decodeURIComponent(escape(value));\n needsEncodingFixup = false;\n } catch (err) {}\n }\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDisposition) {\n const matches = [];\n let match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDisposition)) !== null) {\n let [, n, quot, part] = match; // eslint-disable-line prefer-const\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n // Find the first unescaped \" and terminate there.\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replace(\n /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function(_, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n // RFC 2047 section 4.2.\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function(_, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch (e) {}\n return textdecode(charset, text);\n }\n );\n }\n\n return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n assert,\n createPromiseCapability,\n stringToBytes,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n const array = stringToBytes(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args) {\n this.url = url;\n args = args || {};\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || {};\n this.withCredentials = args.withCredentials || false;\n this.getXhr =\n args.getXhr ||\n function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end,\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = (this.pendingRequests[xhrId] = {\n xhr,\n });\n\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function(evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n // Maybe abortRequest was called...\n return;\n }\n\n if (pendingRequest.onProgress) {\n pendingRequest.onProgress(evt);\n }\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n // Maybe abortRequest was called...\n return;\n }\n\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request.\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // Success status == 0 can be on ftp, file and other protocols.\n if (xhr.status === 0 && this.isHttp) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n const ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (\n !ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus\n ) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk,\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n }\n\n hasPendingRequests() {\n for (const xhrId in this.pendingRequests) {\n return true;\n }\n return false;\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortAllRequests() {\n for (const xhrId in this.pendingRequests) {\n this.abortRequest(xhrId | 0);\n }\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(!this._fullRequestReader);\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n this._manager,\n this._source\n );\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(\n this._manager,\n begin,\n end\n );\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n const readers = this._rangeRequestReaders.slice(0);\n readers.forEach(function(reader) {\n reader.cancel(reason);\n });\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // Optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const {\n allowRangeRequests,\n suggestedLength,\n } = validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range requests.\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(args) {\n if (args) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: args.chunk, done: false });\n } else {\n this._cachedChunks.push(args.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n this._requests.forEach(function(requestCapability) {\n requestCapability.resolve({ value: undefined, done: true });\n });\n this._requests = [];\n }\n\n _onError(status) {\n const url = this._url;\n const exception = createResponseStatusError(status, url);\n this._storedError = exception;\n this._headersReceivedCapability.reject(exception);\n this._requests.forEach(function(requestCapability) {\n requestCapability.reject(exception);\n });\n this._requests = [];\n this._cachedChunks = [];\n }\n\n _onProgress(data) {\n if (this.onProgress) {\n this.onProgress({\n loaded: data.loaded,\n total: data.lengthComputable ? data.total : this._contentLength,\n });\n }\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n this._requests.forEach(function(requestCapability) {\n requestCapability.resolve({ value: undefined, done: true });\n });\n this._requests = [];\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n if (this.onClosed) {\n this.onClosed(this);\n }\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n this._requests.forEach(function(requestCapability) {\n requestCapability.resolve({ value: undefined, done: true });\n });\n this._requests = [];\n this._close();\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported && this.onProgress) {\n this.onProgress({\n loaded: evt.loaded,\n });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._requests.forEach(function(requestCapability) {\n requestCapability.resolve({ value: undefined, done: true });\n });\n this._requests = [];\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\nexport { PDFNetworkStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-var: error */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n} from \"./network_utils.js\";\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController && abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\",\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n getFullReader() {\n assert(!this._fullRequestReader);\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n const readers = this._rangeRequestReaders.slice(0);\n readers.forEach(function(reader) {\n reader.cancel(reason);\n });\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const {\n allowRangeRequests,\n suggestedLength,\n } = validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n })\n .catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = createPromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n ).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n });\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\nexport { PDFFetchStream };\n"],"sourceRoot":""}