swh.web 0.14.2__py3-none-any.whl → 0.15.0__py3-none-any.whl
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.
- swh/web/alter/forms.py +16 -16
- swh/web/alter/templates/admin_alteration.html +5 -5
- swh/web/alter/templates/alteration_details.html +2 -2
- swh/web/alter/templates/assistant_category.html +21 -19
- swh/web/alter/templates/assistant_email.html +3 -4
- swh/web/alter/templates/assistant_origins.html +1 -2
- swh/web/alter/templates/assistant_reasons.html +1 -2
- swh/web/alter/templates/assistant_summary.html +3 -4
- swh/web/alter/templates/content_policies.html +8 -15
- swh/web/alter/templates/includes/swh_legal.html +1 -1
- swh/web/alter/tests/test_views.py +2 -2
- swh/web/alter/urls.py +1 -1
- swh/web/alter/views.py +2 -2
- swh/web/browse/assets/browse/browse.css +10 -0
- swh/web/browse/assets/browse/sidetabs.js +22 -2
- swh/web/browse/templates/includes/sidetabs.html +20 -16
- swh/web/browse/templates/includes/snapshot-context.html +3 -1
- swh/web/save_code_now/templates/includes/take-new-snapshot.html +1 -1
- swh/web/static/css/browse.0a250d3b07ce628588a5.css +2 -0
- swh/web/static/css/browse.0a250d3b07ce628588a5.css.map +1 -0
- swh/web/static/js/add_forge_now.f8fa8235350a7875b4b2.js.map +1 -1
- swh/web/static/js/archive_coverage.71f6961fbdc0d76c313b.js +3 -0
- swh/web/static/js/{archive_coverage.b37e2158e800bc69180b.js.LICENSE.txt → archive_coverage.71f6961fbdc0d76c313b.js.LICENSE.txt} +1 -1
- swh/web/static/js/archive_coverage.71f6961fbdc0d76c313b.js.map +1 -0
- swh/web/static/js/auth.971392ebe3f22c222189.js.map +1 -1
- swh/web/static/js/{browse.b150f8992236375f2e9b.js → browse.d5014e5cae44a2cd3e6e.js} +3 -3
- swh/web/static/js/browse.d5014e5cae44a2cd3e6e.js.map +1 -0
- swh/web/static/js/deposit.060ba94288f399dfe89e.js.map +1 -1
- swh/web/static/js/guided_tour.3a7a41181c43663f866b.js.map +1 -1
- swh/web/static/js/highlightjs.19cb5fa8879fdc8357d7.js.map +1 -1
- swh/web/static/js/mailmap.5dc62b52b8eb18e2e8b0.js.map +1 -1
- swh/web/static/js/origin_visits.679992a2a951f67a08bc.js.map +1 -1
- swh/web/static/js/pdf.worker.min.js +1 -1
- swh/web/static/js/pdfjs.97ecbde9d93314dba75a.js +3 -0
- swh/web/static/js/pdfjs.97ecbde9d93314dba75a.js.map +1 -0
- swh/web/static/js/revision.c5f4750ef7caee355fd9.js.map +1 -1
- swh/web/static/js/save_code_now.3db9c75765eb44fe774a.js.map +1 -1
- swh/web/static/js/showdown.8be01722fe56f5a7c2db.js.map +1 -1
- swh/web/static/js/vault.8c6e8e445d128eb30488.js.map +1 -1
- swh/web/static/js/{vendors.076b42bbe0326fc632ae.js → vendors.532425b092b95d43a1d6.js} +3 -3
- swh/web/static/js/vendors.532425b092b95d43a1d6.js.map +1 -0
- swh/web/static/js/webapp.5427bd8b32cec7de0951.js +3 -0
- swh/web/static/js/{webapp.ec7025df24c9f358f1cc.js.LICENSE.txt → webapp.5427bd8b32cec7de0951.js.LICENSE.txt} +1 -1
- swh/web/static/js/webapp.5427bd8b32cec7de0951.js.map +1 -0
- swh/web/static/jssources/@iframe-resizer/child/index.umd.js +2 -2
- swh/web/static/jssources/@iframe-resizer/parent/index.umd.js +2 -2
- swh/web/static/jssources/core-js/internals/array-to-reversed.js +2 -2
- swh/web/static/jssources/core-js/internals/array-with.js +2 -2
- swh/web/static/jssources/core-js/internals/async-iterator-iteration.js +6 -1
- swh/web/static/jssources/core-js/internals/flatten-into-array.js +1 -1
- swh/web/static/jssources/core-js/internals/get-iterator-direct.js +1 -1
- swh/web/static/jssources/core-js/internals/install-error-cause.js +1 -1
- swh/web/static/jssources/core-js/internals/iterator-create-proxy.js +1 -1
- swh/web/static/jssources/core-js/internals/set-difference.js +1 -1
- swh/web/static/jssources/core-js/internals/set-intersection.js +1 -1
- swh/web/static/jssources/core-js/internals/set-is-disjoint-from.js +1 -1
- swh/web/static/jssources/core-js/internals/set-is-subset-of.js +1 -1
- swh/web/static/jssources/core-js/internals/set-is-superset-of.js +1 -1
- swh/web/static/jssources/core-js/internals/set-method-get-keys-before-cloning-detection.js +1 -1
- swh/web/static/jssources/core-js/internals/set-symmetric-difference.js +1 -1
- swh/web/static/jssources/core-js/internals/set-union.js +1 -1
- swh/web/static/jssources/core-js/internals/shared-store.js +2 -2
- swh/web/static/jssources/core-js/internals/string-pad.js +0 -1
- swh/web/static/jssources/core-js/modules/es.array-buffer.transfer-to-fixed-length.js +1 -1
- swh/web/static/jssources/core-js/modules/es.array-buffer.transfer.js +1 -1
- swh/web/static/jssources/core-js/modules/es.error.is-error.js +1 -1
- swh/web/static/jssources/core-js/modules/es.symbol.constructor.js +1 -1
- swh/web/static/jssources/jslicenses.json +1 -1
- swh/web/static/jssources/pdfjs-dist/build/pdf.worker.mjs +299 -13
- swh/web/static/jssources/pdfjs-dist/legacy/build/pdf.mjs +492 -113
- swh/web/static/jssources/swh/web/browse/assets/browse/sidetabs.js +22 -2
- swh/web/static/jssources/swh/web/webapp/assets/webapp/webapp-utils.js +10 -0
- swh/web/static/webpack-stats.json +73 -73
- swh/web/utils/archive.py +12 -0
- swh/web/utils/tests/test_archive.py +32 -15
- swh/web/vault/templates/includes/vault-common.html +1 -1
- swh/web/vault/templates/includes/vault-create-tasks.html +5 -5
- swh/web/webapp/assets/webapp/webapp-utils.js +10 -0
- swh/web/webapp/templates/includes/footer.html +1 -1
- swh/web/webapp/templates/includes/global-modals.html +3 -3
- {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/METADATA +1 -1
- {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/RECORD +89 -89
- swh/web/static/css/browse.5775e0a313f4ccb8aef5.css +0 -2
- swh/web/static/css/browse.5775e0a313f4ccb8aef5.css.map +0 -1
- swh/web/static/js/archive_coverage.b37e2158e800bc69180b.js +0 -3
- swh/web/static/js/archive_coverage.b37e2158e800bc69180b.js.map +0 -1
- swh/web/static/js/browse.b150f8992236375f2e9b.js.map +0 -1
- swh/web/static/js/pdfjs.ca88359f90430972e38c.js +0 -3
- swh/web/static/js/pdfjs.ca88359f90430972e38c.js.map +0 -1
- swh/web/static/js/vendors.076b42bbe0326fc632ae.js.map +0 -1
- swh/web/static/js/webapp.ec7025df24c9f358f1cc.js +0 -3
- swh/web/static/js/webapp.ec7025df24c9f358f1cc.js.map +0 -1
- /swh/web/static/js/{browse.b150f8992236375f2e9b.js.LICENSE.txt → browse.d5014e5cae44a2cd3e6e.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{pdfjs.ca88359f90430972e38c.js.LICENSE.txt → pdfjs.97ecbde9d93314dba75a.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{vendors.076b42bbe0326fc632ae.js.LICENSE.txt → vendors.532425b092b95d43a1d6.js.LICENSE.txt} +0 -0
- {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/WHEEL +0 -0
- {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/licenses/AUTHORS +0 -0
- {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/licenses/LICENSE +0 -0
- {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/top_level.txt +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/pdfjs.ca88359f90430972e38c.js","mappings":"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","sources":["webpack://swh/./node_modules/pdfjs-dist/legacy/build/pdf.mjs"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 5.3.31\n * pdfjsBuild = 47ad820d9\n */\n/******/ var __webpack_modules__ = ({\n\n/***/ 34:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n/***/ }),\n\n/***/ 81:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar tryToString = __webpack_require__(6823);\nvar getIteratorMethod = __webpack_require__(851);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n/***/ }),\n\n/***/ 283:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\nvar hasOwn = __webpack_require__(9297);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(350).CONFIGURABLE);\nvar inspectSource = __webpack_require__(3706);\nvar InternalStateModule = __webpack_require__(1181);\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n\n\n/***/ }),\n\n/***/ 350:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar hasOwn = __webpack_require__(9297);\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n/***/ }),\n\n/***/ 397:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ 421:\n/***/ ((module) => {\n\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 507:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n var next = record.next;\n var step, result;\n while (!(step = call(next, iterator)).done) {\n result = fn(step.value);\n if (result !== undefined) return result;\n }\n};\n\n\n/***/ }),\n\n/***/ 531:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar getIteratorFlattenable = __webpack_require__(8646);\nvar createIteratorProxy = __webpack_require__(9462);\nvar iteratorClose = __webpack_require__(9539);\nvar IS_PURE = __webpack_require__(6395);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar flatMapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var mapper = this.mapper;\n var result, inner;\n\n while (true) {\n if (inner = this.inner) try {\n result = anObject(call(inner.next, inner.iterator));\n if (!result.done) return result.value;\n this.inner = null;\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n result = anObject(call(this.next, iterator));\n\n if (this.done = !!result.done) return;\n\n try {\n this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || flatMapWithoutClosingOnEarlyError }, {\n flatMap: function flatMap(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\n\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper,\n inner: null\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 616:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n/***/ }),\n\n/***/ 655:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n/***/ }),\n\n/***/ 679:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isPrototypeOf = __webpack_require__(1625);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n\n\n/***/ }),\n\n/***/ 741:\n/***/ ((module) => {\n\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n/***/ }),\n\n/***/ 757:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\nvar isCallable = __webpack_require__(4901);\nvar isPrototypeOf = __webpack_require__(1625);\nvar USE_SYMBOL_AS_UID = __webpack_require__(7040);\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n/***/ }),\n\n/***/ 851:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\nvar getMethod = __webpack_require__(5966);\nvar isNullOrUndefined = __webpack_require__(4117);\nvar Iterators = __webpack_require__(6269);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ 944:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (options) {\n var alphabet = options && options.alphabet;\n if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\n throw new $TypeError('Incorrect `alphabet` option');\n};\n\n\n/***/ }),\n\n/***/ 1072:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar internalObjectKeys = __webpack_require__(1828);\nvar enumBugKeys = __webpack_require__(8727);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 1103:\n/***/ ((module) => {\n\n\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n/***/ }),\n\n/***/ 1148:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\n\n// `Iterator.prototype.every` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.every\n$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\n every: function every(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return !iterate(record, function (value, stop) {\n if (!predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n\n\n/***/ }),\n\n/***/ 1181:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_WEAK_MAP = __webpack_require__(8622);\nvar globalThis = __webpack_require__(4576);\nvar isObject = __webpack_require__(34);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar hasOwn = __webpack_require__(9297);\nvar shared = __webpack_require__(7629);\nvar sharedKey = __webpack_require__(6119);\nvar hiddenKeys = __webpack_require__(421);\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ 1291:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar trunc = __webpack_require__(741);\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n/***/ }),\n\n/***/ 1548:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar fails = __webpack_require__(9039);\nvar V8 = __webpack_require__(9519);\nvar ENVIRONMENT = __webpack_require__(4215);\n\nvar structuredClone = globalThis.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n\n\n/***/ }),\n\n/***/ 1549:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar $fromBase64 = __webpack_require__(9143);\nvar anUint8Array = __webpack_require__(4154);\n\nvar Uint8Array = globalThis.Uint8Array;\n\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !(function () {\n var target = new Uint8Array([255, 255, 255, 255, 255]);\n try {\n target.setFromBase64('MjYyZg===');\n } catch (error) {\n return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\n }\n})();\n\n// `Uint8Array.prototype.setFromBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n setFromBase64: function setFromBase64(string /* , options */) {\n anUint8Array(this);\n\n var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);\n\n return { read: result.read, written: result.written };\n }\n});\n\n\n/***/ }),\n\n/***/ 1625:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n/***/ }),\n\n/***/ 1689:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar apply = __webpack_require__(8745);\nvar slice = __webpack_require__(7680);\nvar newPromiseCapabilityModule = __webpack_require__(6043);\nvar aCallable = __webpack_require__(9306);\nvar perform = __webpack_require__(1103);\n\nvar Promise = globalThis.Promise;\n\nvar ACCEPT_ARGUMENTS = false;\n// Avoiding the use of polyfills of the previous iteration of this proposal\n// that does not accept arguments of the callback\nvar FORCED = !Promise || !Promise['try'] || perform(function () {\n Promise['try'](function (argument) {\n ACCEPT_ARGUMENTS = argument === 8;\n }, 8);\n}).error || !ACCEPT_ARGUMENTS;\n\n// `Promise.try` method\n// https://tc39.es/ecma262/#sec-promise.try\n$({ target: 'Promise', stat: true, forced: FORCED }, {\n 'try': function (callbackfn /* , ...args */) {\n var args = arguments.length > 1 ? slice(arguments, 1) : [];\n var promiseCapability = newPromiseCapabilityModule.f(this);\n var result = perform(function () {\n return apply(aCallable(callbackfn), undefined, args);\n });\n (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n return promiseCapability.promise;\n }\n});\n\n\n/***/ }),\n\n/***/ 1698:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar union = __webpack_require__(4204);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\n// `Set.prototype.union` method\n// https://tc39.es/ecma262/#sec-set.prototype.union\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n union: union\n});\n\n\n/***/ }),\n\n/***/ 1701:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar createIteratorProxy = __webpack_require__(9462);\nvar callWithSafeIterationClosing = __webpack_require__(6319);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\nvar IS_PURE = __webpack_require__(6395);\n\nvar mapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.map\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || mapWithoutClosingOnEarlyError }, {\n map: function map(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\n\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 1767:\n/***/ ((module) => {\n\n\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n\n\n/***/ }),\n\n/***/ 1828:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar hasOwn = __webpack_require__(9297);\nvar toIndexedObject = __webpack_require__(5397);\nvar indexOf = (__webpack_require__(9617).indexOf);\nvar hiddenKeys = __webpack_require__(421);\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 2106:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar makeBuiltIn = __webpack_require__(283);\nvar defineProperty = __webpack_require__(4913);\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n\n\n/***/ }),\n\n/***/ 2140:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ 2195:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n/***/ }),\n\n/***/ 2211:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ 2303:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\n\nvar Uint8Array = globalThis.Uint8Array;\nvar SyntaxError = globalThis.SyntaxError;\nvar parseInt = globalThis.parseInt;\nvar min = Math.min;\nvar NOT_HEX = /[^\\da-f]/i;\nvar exec = uncurryThis(NOT_HEX.exec);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (string, into) {\n var stringLength = string.length;\n if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');\n var maxLength = into ? min(into.length, stringLength / 2) : stringLength / 2;\n var bytes = into || new Uint8Array(maxLength);\n var read = 0;\n var written = 0;\n while (written < maxLength) {\n var hexits = stringSlice(string, read, read += 2);\n if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');\n bytes[written++] = parseInt(hexits, 16);\n }\n return { bytes: bytes, read: read };\n};\n\n\n/***/ }),\n\n/***/ 2360:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(8551);\nvar definePropertiesModule = __webpack_require__(6801);\nvar enumBugKeys = __webpack_require__(8727);\nvar hiddenKeys = __webpack_require__(421);\nvar html = __webpack_require__(397);\nvar documentCreateElement = __webpack_require__(4055);\nvar sharedKey = __webpack_require__(6119);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ 2475:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isSupersetOf = __webpack_require__(8527);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\n return !result;\n});\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issupersetof\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n isSupersetOf: isSupersetOf\n});\n\n\n/***/ }),\n\n/***/ 2489:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar createIteratorProxy = __webpack_require__(9462);\nvar callWithSafeIterationClosing = __webpack_require__(6319);\nvar IS_PURE = __webpack_require__(6395);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar filterWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var predicate = this.predicate;\n var next = this.next;\n var result, done, value;\n while (true) {\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n value = result.value;\n if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n }\n});\n\n// `Iterator.prototype.filter` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.filter\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || filterWithoutClosingOnEarlyError }, {\n filter: function filter(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\n\n return new IteratorProxy(getIteratorDirect(this), {\n predicate: predicate\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 2529:\n/***/ ((module) => {\n\n\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n\n\n/***/ }),\n\n/***/ 2603:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toString = __webpack_require__(655);\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n/***/ }),\n\n/***/ 2652:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar bind = __webpack_require__(6080);\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar tryToString = __webpack_require__(6823);\nvar isArrayIteratorMethod = __webpack_require__(4209);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar isPrototypeOf = __webpack_require__(1625);\nvar getIterator = __webpack_require__(81);\nvar getIteratorMethod = __webpack_require__(851);\nvar iteratorClose = __webpack_require__(9539);\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n/***/ }),\n\n/***/ 2777:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar isObject = __webpack_require__(34);\nvar isSymbol = __webpack_require__(757);\nvar getMethod = __webpack_require__(5966);\nvar ordinaryToPrimitive = __webpack_require__(4270);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n/***/ }),\n\n/***/ 2787:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar hasOwn = __webpack_require__(9297);\nvar isCallable = __webpack_require__(4901);\nvar toObject = __webpack_require__(8981);\nvar sharedKey = __webpack_require__(6119);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(2211);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ 2796:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ 2804:\n/***/ ((module) => {\n\n\nvar commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\nvar base64Alphabet = commonAlphabet + '+/';\nvar base64UrlAlphabet = commonAlphabet + '-_';\n\nvar inverse = function (characters) {\n // TODO: use `Object.create(null)` in `core-js@4`\n var result = {};\n var index = 0;\n for (; index < 64; index++) result[characters.charAt(index)] = index;\n return result;\n};\n\nmodule.exports = {\n i2c: base64Alphabet,\n c2i: inverse(base64Alphabet),\n i2cUrl: base64UrlAlphabet,\n c2iUrl: inverse(base64UrlAlphabet)\n};\n\n\n/***/ }),\n\n/***/ 2812:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n\n\n/***/ }),\n\n/***/ 2839:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n\n\n/***/ }),\n\n/***/ 2967:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar isObject = __webpack_require__(34);\nvar requireObjectCoercible = __webpack_require__(7750);\nvar aPossiblePrototype = __webpack_require__(3506);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ 3167:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar setPrototypeOf = __webpack_require__(2967);\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n\n/***/ }),\n\n/***/ 3238:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(7811);\nvar arrayBufferByteLength = __webpack_require__(7394);\n\nvar DataView = globalThis.DataView;\n\nmodule.exports = function (O) {\n if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n try {\n // eslint-disable-next-line no-new -- thrower\n new DataView(O);\n return false;\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 3392:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n/***/ }),\n\n/***/ 3440:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar clone = __webpack_require__(9286);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function difference(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = clone(O);\n if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n if (otherRec.includes(e)) remove(result, e);\n });\n else iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) remove(result, e);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 3463:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'string') return argument;\n throw new $TypeError('Argument is not a string');\n};\n\n\n/***/ }),\n\n/***/ 3506:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isPossiblePrototype = __webpack_require__(3925);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n/***/ }),\n\n/***/ 3579:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\n\n// `Iterator.prototype.some` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.some\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n some: function some(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n\n\n/***/ }),\n\n/***/ 3650:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar clone = __webpack_require__(9286);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function symmetricDifference(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (e) {\n if (has(O, e)) remove(result, e);\n else add(result, e);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 3706:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar isCallable = __webpack_require__(4901);\nvar store = __webpack_require__(7629);\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ 3717:\n/***/ ((__unused_webpack_module, exports) => {\n\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 3724:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n\n\n/***/ }),\n\n/***/ 3789:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar call = __webpack_require__(9565);\nvar toIntegerOrInfinity = __webpack_require__(1291);\nvar getIteratorDirect = __webpack_require__(1767);\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, intSize) {\n this.set = set;\n this.size = max(intSize, 0);\n this.has = aCallable(set.has);\n this.keys = aCallable(set.keys);\n};\n\nSetRecord.prototype = {\n getIterator: function () {\n return getIteratorDirect(anObject(call(this.keys, this.set)));\n },\n includes: function (it) {\n return call(this.has, this.set, it);\n }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n anObject(obj);\n var numSize = +obj.size;\n // NOTE: If size is undefined, then numSize will be NaN\n // eslint-disable-next-line no-self-compare -- NaN check\n if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n var intSize = toIntegerOrInfinity(numSize);\n if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n return new SetRecord(obj, intSize);\n};\n\n\n/***/ }),\n\n/***/ 3838:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar size = __webpack_require__(5170);\nvar iterate = __webpack_require__(8469);\nvar getSetRecord = __webpack_require__(3789);\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) > otherRec.size) return false;\n return iterate(O, function (e) {\n if (!otherRec.includes(e)) return false;\n }, true) !== false;\n};\n\n\n/***/ }),\n\n/***/ 3853:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isDisjointFrom = __webpack_require__(4449);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\n return !result;\n});\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n isDisjointFrom: isDisjointFrom\n});\n\n\n/***/ }),\n\n/***/ 3925:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n\n\n/***/ }),\n\n/***/ 3972:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (argument === undefined || isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object or undefined');\n};\n\n\n/***/ }),\n\n/***/ 4055:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isObject = __webpack_require__(34);\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ 4114:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar toObject = __webpack_require__(8981);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar setArrayLength = __webpack_require__(4527);\nvar doesNotExceedSafeInteger = __webpack_require__(6837);\nvar fails = __webpack_require__(9039);\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n\n\n/***/ }),\n\n/***/ 4117:\n/***/ ((module) => {\n\n\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n\n\n/***/ }),\n\n/***/ 4149:\n/***/ ((module) => {\n\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n // eslint-disable-next-line no-self-compare -- NaN check\n if (it === it) return it;\n throw new $RangeError('NaN is not allowed');\n};\n\n\n/***/ }),\n\n/***/ 4154:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\n\nvar $TypeError = TypeError;\n\n// Perform ? RequireInternalSlot(argument, [[TypedArrayName]])\n// If argument.[[TypedArrayName]] is not \"Uint8Array\", throw a TypeError exception\nmodule.exports = function (argument) {\n if (classof(argument) === 'Uint8Array') return argument;\n throw new $TypeError('Argument is not an Uint8Array');\n};\n\n\n/***/ }),\n\n/***/ 4204:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar add = (__webpack_require__(4402).add);\nvar clone = __webpack_require__(9286);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (it) {\n add(result, it);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 4209:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar wellKnownSymbol = __webpack_require__(8227);\nvar Iterators = __webpack_require__(6269);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ 4215:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* global Bun, Deno -- detection */\nvar globalThis = __webpack_require__(4576);\nvar userAgent = __webpack_require__(2839);\nvar classof = __webpack_require__(2195);\n\nvar userAgentStartsWith = function (string) {\n return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n if (userAgentStartsWith('Bun/')) return 'BUN';\n if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n if (userAgentStartsWith('Deno/')) return 'DENO';\n if (userAgentStartsWith('Node.js/')) return 'NODE';\n if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n if (classof(globalThis.process) === 'process') return 'NODE';\n if (globalThis.window && globalThis.document) return 'BROWSER';\n return 'REST';\n})();\n\n\n/***/ }),\n\n/***/ 4270:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ 4376:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(2195);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n\n\n/***/ }),\n\n/***/ 4402:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-set -- safe\n Set: Set,\n add: uncurryThis(SetPrototype.add),\n has: uncurryThis(SetPrototype.has),\n remove: uncurryThis(SetPrototype['delete']),\n proto: SetPrototype\n};\n\n\n/***/ }),\n\n/***/ 4449:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar has = (__webpack_require__(4402).has);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\nvar iteratorClose = __webpack_require__(9539);\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom\nmodule.exports = function isDisjointFrom(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n if (otherRec.includes(e)) return false;\n }, true) !== false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n\n\n/***/ }),\n\n/***/ 4483:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar getBuiltInNodeModule = __webpack_require__(9429);\nvar PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n\nvar structuredClone = globalThis.structuredClone;\nvar $ArrayBuffer = globalThis.ArrayBuffer;\nvar $MessageChannel = globalThis.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n detach = function (transferable) {\n structuredClone(transferable, { transfer: [transferable] });\n };\n} else if ($ArrayBuffer) try {\n if (!$MessageChannel) {\n WorkerThreads = getBuiltInNodeModule('worker_threads');\n if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n }\n\n if ($MessageChannel) {\n channel = new $MessageChannel();\n buffer = new $ArrayBuffer(2);\n\n $detach = function (transferable) {\n channel.port1.postMessage(null, [transferable]);\n };\n\n if (buffer.byteLength === 2) {\n $detach(buffer);\n if (buffer.byteLength === 0) detach = $detach;\n }\n }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n\n\n/***/ }),\n\n/***/ 4495:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(9519);\nvar fails = __webpack_require__(9039);\nvar globalThis = __webpack_require__(4576);\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n/***/ }),\n\n/***/ 4527:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar isArray = __webpack_require__(4376);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n\n\n/***/ }),\n\n/***/ 4549:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\n// https://github.com/tc39/ecma262/pull/3467\nmodule.exports = function (METHOD_NAME, ExpectedError) {\n var Iterator = globalThis.Iterator;\n var IteratorPrototype = Iterator && Iterator.prototype;\n var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n\n var CLOSED = false;\n\n if (method) try {\n method.call({\n next: function () { return { done: true }; },\n 'return': function () { CLOSED = true; }\n }, -1);\n } catch (error) {\n // https://bugs.webkit.org/show_bug.cgi?id=291195\n if (!(error instanceof ExpectedError)) CLOSED = false;\n }\n\n if (!CLOSED) return method;\n};\n\n\n/***/ }),\n\n/***/ 4576:\n/***/ (function(module) {\n\n\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n/***/ }),\n\n/***/ 4603:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\nvar uncurryThis = __webpack_require__(9504);\nvar toString = __webpack_require__(655);\nvar validateArgumentsLength = __webpack_require__(2812);\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $delete(this, name);\n var entries = [];\n forEach(this, function (v, k) { // also validates `this`\n push(entries, { key: k, value: v });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, { enumerable: true, unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 4628:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar newPromiseCapabilityModule = __webpack_require__(6043);\n\n// `Promise.withResolvers` method\n// https://tc39.es/ecma262/#sec-promise.withResolvers\n$({ target: 'Promise', stat: true }, {\n withResolvers: function withResolvers() {\n var promiseCapability = newPromiseCapabilityModule.f(this);\n return {\n promise: promiseCapability.promise,\n resolve: promiseCapability.resolve,\n reject: promiseCapability.reject\n };\n }\n});\n\n\n/***/ }),\n\n/***/ 4659:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar definePropertyModule = __webpack_require__(4913);\nvar createPropertyDescriptor = __webpack_require__(6980);\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n\n\n/***/ }),\n\n/***/ 4901:\n/***/ ((module) => {\n\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n\n\n/***/ }),\n\n/***/ 4913:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IE8_DOM_DEFINE = __webpack_require__(5917);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\nvar anObject = __webpack_require__(8551);\nvar toPropertyKey = __webpack_require__(6969);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 4916:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\n\nvar createSetLike = function (size) {\n return {\n size: size,\n has: function () {\n return false;\n },\n keys: function () {\n return {\n next: function () {\n return { done: true };\n }\n };\n }\n };\n};\n\nvar createSetLikeWithInfinitySize = function (size) {\n return {\n size: size,\n has: function () {\n return true;\n },\n keys: function () {\n throw new Error('e');\n }\n };\n};\n\nmodule.exports = function (name, callback) {\n var Set = getBuiltIn('Set');\n try {\n new Set()[name](createSetLike(0));\n try {\n // late spec change, early WebKit ~ Safari 17 implementation does not pass it\n // https://github.com/tc39/proposal-set-methods/pull/88\n // also covered engines with\n // https://bugs.webkit.org/show_bug.cgi?id=272679\n new Set()[name](createSetLike(-1));\n return false;\n } catch (error2) {\n if (!callback) return true;\n // early V8 implementation bug\n // https://issues.chromium.org/issues/351332634\n try {\n new Set()[name](createSetLikeWithInfinitySize(-Infinity));\n return false;\n } catch (error) {\n var set = new Set();\n set.add(1);\n set.add(2);\n return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\n }\n }\n } catch (error) {\n return false;\n }\n};\n\n\n/***/ }),\n\n/***/ 4979:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar getBuiltIn = __webpack_require__(7751);\nvar createPropertyDescriptor = __webpack_require__(6980);\nvar defineProperty = (__webpack_require__(4913).f);\nvar hasOwn = __webpack_require__(9297);\nvar anInstance = __webpack_require__(679);\nvar inheritIfRequired = __webpack_require__(3167);\nvar normalizeStringArgument = __webpack_require__(2603);\nvar DOMExceptionConstants = __webpack_require__(5002);\nvar clearErrorStack = __webpack_require__(8574);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = new Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n\n\n/***/ }),\n\n/***/ 5002:\n/***/ ((module) => {\n\n\nmodule.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n\n\n/***/ }),\n\n/***/ 5024:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar symmetricDifference = __webpack_require__(3650);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\n// `Set.prototype.symmetricDifference` method\n// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n symmetricDifference: symmetricDifference\n});\n\n\n/***/ }),\n\n/***/ 5031:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\nvar uncurryThis = __webpack_require__(9504);\nvar getOwnPropertyNamesModule = __webpack_require__(8480);\nvar getOwnPropertySymbolsModule = __webpack_require__(3717);\nvar anObject = __webpack_require__(8551);\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ 5169:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isDetached = __webpack_require__(3238);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n return it;\n};\n\n\n/***/ }),\n\n/***/ 5170:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar SetHelpers = __webpack_require__(4402);\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n return set.size;\n};\n\n\n/***/ }),\n\n/***/ 5370:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar lengthOfArrayLike = __webpack_require__(6198);\n\nmodule.exports = function (Constructor, list, $length) {\n var index = 0;\n var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\n\n/***/ }),\n\n/***/ 5397:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(7055);\nvar requireObjectCoercible = __webpack_require__(7750);\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ 5610:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ 5623:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar anUint8Array = __webpack_require__(4154);\nvar notDetached = __webpack_require__(5169);\n\nvar numberToString = uncurryThis(1.0.toString);\n\n// `Uint8Array.prototype.toHex` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n toHex: function toHex() {\n anUint8Array(this);\n notDetached(this.buffer);\n var result = '';\n for (var i = 0, length = this.length; i < length; i++) {\n var hex = numberToString(this[i], 16);\n result += hex.length === 1 ? '0' + hex : hex;\n }\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 5636:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar toIndex = __webpack_require__(7696);\nvar notDetached = __webpack_require__(5169);\nvar arrayBufferByteLength = __webpack_require__(7394);\nvar detachTransferable = __webpack_require__(4483);\nvar PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n\nvar structuredClone = globalThis.structuredClone;\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar DataView = globalThis.DataView;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n var byteLength = arrayBufferByteLength(arrayBuffer);\n var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n var fixedLength = !isResizable || !isResizable(arrayBuffer);\n var newBuffer;\n notDetached(arrayBuffer);\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n }\n if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n newBuffer = slice(arrayBuffer, 0, newByteLength);\n } else {\n var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n newBuffer = new ArrayBuffer(newByteLength, options);\n var a = new DataView(arrayBuffer);\n var b = new DataView(newBuffer);\n var copyLength = min(newByteLength, byteLength);\n for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n }\n if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n return newBuffer;\n};\n\n\n/***/ }),\n\n/***/ 5745:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar store = __webpack_require__(7629);\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n\n\n/***/ }),\n\n/***/ 5781:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar getBuiltIn = __webpack_require__(7751);\nvar validateArgumentsLength = __webpack_require__(2812);\nvar toString = __webpack_require__(655);\nvar USE_NATIVE_URL = __webpack_require__(7416);\n\nvar URL = getBuiltIn('URL');\n\n// `URL.parse` method\n// https://url.spec.whatwg.org/#dom-url-canparse\n$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {\n parse: function parse(url) {\n var length = validateArgumentsLength(arguments.length, 1);\n var urlString = toString(url);\n var base = length < 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n try {\n return new URL(urlString, base);\n } catch (error) {\n return null;\n }\n }\n});\n\n\n/***/ }),\n\n/***/ 5876:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isSubsetOf = __webpack_require__(3838);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\n return result;\n});\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issubsetof\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n isSubsetOf: isSubsetOf\n});\n\n\n/***/ }),\n\n/***/ 5917:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar fails = __webpack_require__(9039);\nvar createElement = __webpack_require__(4055);\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n\n\n/***/ }),\n\n/***/ 5966:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\nvar isNullOrUndefined = __webpack_require__(4117);\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n\n\n/***/ }),\n\n/***/ 6043:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n\n/***/ 6080:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(7476);\nvar aCallable = __webpack_require__(9306);\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 6119:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar shared = __webpack_require__(5745);\nvar uid = __webpack_require__(3392);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 6193:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar ENVIRONMENT = __webpack_require__(4215);\n\nmodule.exports = ENVIRONMENT === 'NODE';\n\n\n/***/ }),\n\n/***/ 6198:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toLength = __webpack_require__(8014);\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n/***/ }),\n\n/***/ 6269:\n/***/ ((module) => {\n\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 6279:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n\n\n/***/ }),\n\n/***/ 6319:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar anObject = __webpack_require__(8551);\nvar iteratorClose = __webpack_require__(9539);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n/***/ }),\n\n/***/ 6395:\n/***/ ((module) => {\n\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 6518:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar getOwnPropertyDescriptor = (__webpack_require__(7347).f);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar defineBuiltIn = __webpack_require__(6840);\nvar defineGlobalProperty = __webpack_require__(9433);\nvar copyConstructorProperties = __webpack_require__(7740);\nvar isForced = __webpack_require__(2796);\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ 6573:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar defineBuiltInAccessor = __webpack_require__(2106);\nvar isDetached = __webpack_require__(3238);\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\n// `ArrayBuffer.prototype.detached` getter\n// https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n configurable: true,\n get: function detached() {\n return isDetached(this);\n }\n });\n}\n\n\n/***/ }),\n\n/***/ 6699:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar definePropertyModule = __webpack_require__(4913);\nvar createPropertyDescriptor = __webpack_require__(6980);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ 6706:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar aCallable = __webpack_require__(9306);\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n\n\n/***/ }),\n\n/***/ 6801:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\nvar definePropertyModule = __webpack_require__(4913);\nvar anObject = __webpack_require__(8551);\nvar toIndexedObject = __webpack_require__(5397);\nvar objectKeys = __webpack_require__(1072);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ 6823:\n/***/ ((module) => {\n\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n/***/ }),\n\n/***/ 6837:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n/***/ }),\n\n/***/ 6840:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar definePropertyModule = __webpack_require__(4913);\nvar makeBuiltIn = __webpack_require__(283);\nvar defineGlobalProperty = __webpack_require__(9433);\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n\n\n/***/ }),\n\n/***/ 6955:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(2140);\nvar isCallable = __webpack_require__(4901);\nvar classofRaw = __webpack_require__(2195);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(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 (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ 6969:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toPrimitive = __webpack_require__(2777);\nvar isSymbol = __webpack_require__(757);\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n/***/ }),\n\n/***/ 6980:\n/***/ ((module) => {\n\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ 7040:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(4495);\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ 7055:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar fails = __webpack_require__(9039);\nvar classof = __webpack_require__(2195);\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n/***/ }),\n\n/***/ 7080:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar has = (__webpack_require__(4402).has);\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n has(it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 7347:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar call = __webpack_require__(9565);\nvar propertyIsEnumerableModule = __webpack_require__(8773);\nvar createPropertyDescriptor = __webpack_require__(6980);\nvar toIndexedObject = __webpack_require__(5397);\nvar toPropertyKey = __webpack_require__(6969);\nvar hasOwn = __webpack_require__(9297);\nvar IE8_DOM_DEFINE = __webpack_require__(5917);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ 7394:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar classof = __webpack_require__(2195);\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar TypeError = globalThis.TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n return O.byteLength;\n};\n\n\n/***/ }),\n\n/***/ 7416:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'https://a');\n var params = url.searchParams;\n var params2 = new URLSearchParams('a=1&a=2&b=3');\n var result = '';\n url.pathname = 'c%20d';\n params.forEach(function (value, key) {\n params['delete']('b');\n result += key + value;\n });\n params2['delete']('a', 2);\n // `undefined` case is a Chromium 117 bug\n // https://bugs.chromium.org/p/v8/issues/detail?id=14222\n params2['delete']('b', undefined);\n return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n || (!params.size && (IS_PURE || !DESCRIPTORS))\n || !params.sort\n || url.href !== 'https://a/c%20d?a=1&c=3'\n || params.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !params[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('https://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('https://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('https://x', undefined).host !== 'x';\n});\n\n\n/***/ }),\n\n/***/ 7476:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classofRaw = __webpack_require__(2195);\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n\n\n/***/ }),\n\n/***/ 7566:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\nvar uncurryThis = __webpack_require__(9504);\nvar toString = __webpack_require__(655);\nvar validateArgumentsLength = __webpack_require__(2812);\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $has(this, name);\n var values = getAll(this, name); // also validates `this`\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n } return false;\n }, { enumerable: true, unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 7629:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar IS_PURE = __webpack_require__(6395);\nvar globalThis = __webpack_require__(4576);\nvar defineGlobalProperty = __webpack_require__(9433);\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.42.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.42.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n/***/ }),\n\n/***/ 7642:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar difference = __webpack_require__(3440);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('difference', function (result) {\n return result.size === 0;\n});\n\n// `Set.prototype.difference` method\n// https://tc39.es/ecma262/#sec-set.prototype.difference\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n difference: difference\n});\n\n\n/***/ }),\n\n/***/ 7657:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar create = __webpack_require__(2360);\nvar getPrototypeOf = __webpack_require__(2787);\nvar defineBuiltIn = __webpack_require__(6840);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar IS_PURE = __webpack_require__(6395);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ 7680:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = uncurryThis([].slice);\n\n\n/***/ }),\n\n/***/ 7696:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\nvar toLength = __webpack_require__(8014);\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n\n\n/***/ }),\n\n/***/ 7740:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar hasOwn = __webpack_require__(9297);\nvar ownKeys = __webpack_require__(5031);\nvar getOwnPropertyDescriptorModule = __webpack_require__(7347);\nvar definePropertyModule = __webpack_require__(4913);\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n/***/ }),\n\n/***/ 7750:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isNullOrUndefined = __webpack_require__(4117);\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 7751:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isCallable = __webpack_require__(4901);\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ 7811:\n/***/ ((module) => {\n\n\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n\n\n/***/ }),\n\n/***/ 7936:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar $transfer = __webpack_require__(5636);\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transferToFixedLength: function transferToFixedLength() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n }\n});\n\n\n/***/ }),\n\n/***/ 8004:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar fails = __webpack_require__(9039);\nvar intersection = __webpack_require__(8750);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\n return result.size === 2 && result.has(1) && result.has(2);\n}) || fails(function () {\n // eslint-disable-next-line es/no-array-from, es/no-set, es/no-set-prototype-intersection -- testing\n return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://tc39.es/ecma262/#sec-set.prototype.intersection\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n intersection: intersection\n});\n\n\n/***/ }),\n\n/***/ 8014:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 8100:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar $transfer = __webpack_require__(5636);\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transfer: function transfer() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n }\n});\n\n\n/***/ }),\n\n/***/ 8111:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar anInstance = __webpack_require__(679);\nvar anObject = __webpack_require__(8551);\nvar isCallable = __webpack_require__(4901);\nvar getPrototypeOf = __webpack_require__(2787);\nvar defineBuiltInAccessor = __webpack_require__(2106);\nvar createProperty = __webpack_require__(4659);\nvar fails = __webpack_require__(9039);\nvar hasOwn = __webpack_require__(9297);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = globalThis[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n || !isCallable(NativeIterator)\n || NativeIterator.prototype !== IteratorPrototype\n // FF44- non-standard `Iterator` passes previous tests\n || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n anInstance(this, IteratorPrototype);\n if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n if (DESCRIPTORS) {\n defineBuiltInAccessor(IteratorPrototype, key, {\n configurable: true,\n get: function () {\n return value;\n },\n set: function (replacement) {\n anObject(this);\n if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n if (hasOwn(this, key)) this[key] = replacement;\n else createProperty(this, key, replacement);\n }\n });\n } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://tc39.es/ecma262/#sec-iterator\n$({ global: true, constructor: true, forced: FORCED }, {\n Iterator: IteratorConstructor\n});\n\n\n/***/ }),\n\n/***/ 8227:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar shared = __webpack_require__(5745);\nvar hasOwn = __webpack_require__(9297);\nvar uid = __webpack_require__(3392);\nvar NATIVE_SYMBOL = __webpack_require__(4495);\nvar USE_SYMBOL_AS_UID = __webpack_require__(7040);\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ 8235:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar hasOwn = __webpack_require__(9297);\n\nvar $SyntaxError = SyntaxError;\nvar $parseInt = parseInt;\nvar fromCharCode = String.fromCharCode;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar codePoints = {\n '\\\\\"': '\"',\n '\\\\\\\\': '\\\\',\n '\\\\/': '/',\n '\\\\b': '\\b',\n '\\\\f': '\\f',\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t'\n};\n\nvar IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n// eslint-disable-next-line regexp/no-control-character -- safe\nvar IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n\nmodule.exports = function (source, i) {\n var unterminated = true;\n var value = '';\n while (i < source.length) {\n var chr = at(source, i);\n if (chr === '\\\\') {\n var twoChars = slice(source, i, i + 2);\n if (hasOwn(codePoints, twoChars)) {\n value += codePoints[twoChars];\n i += 2;\n } else if (twoChars === '\\\\u') {\n i += 2;\n var fourHexDigits = slice(source, i, i + 4);\n if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n value += fromCharCode($parseInt(fourHexDigits, 16));\n i += 4;\n } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n } else if (chr === '\"') {\n unterminated = false;\n i++;\n break;\n } else {\n if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n value += chr;\n i++;\n }\n }\n if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n return { value: value, end: i };\n};\n\n\n/***/ }),\n\n/***/ 8237:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\nvar apply = __webpack_require__(8745);\nvar fails = __webpack_require__(9039);\n\nvar $TypeError = TypeError;\n\n// https://bugs.webkit.org/show_bug.cgi?id=291651\nvar FAILS_ON_INITIAL_UNDEFINED = fails(function () {\n // eslint-disable-next-line es/no-iterator-prototype-reduce, es/no-array-prototype-keys, array-callback-return -- required for testing\n [].keys().reduce(function () { /* empty */ }, undefined);\n});\n\nvar reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError('reduce', $TypeError);\n\n// `Iterator.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.reduce\n$({ target: 'Iterator', proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {\n reduce: function reduce(reducer /* , initialValue */) {\n anObject(this);\n try {\n aCallable(reducer);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n var noInitial = arguments.length < 2;\n var accumulator = noInitial ? undefined : arguments[1];\n if (reduceWithoutClosingOnEarlyError) {\n return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);\n }\n var record = getIteratorDirect(this);\n var counter = 0;\n iterate(record, function (value) {\n if (noInitial) {\n noInitial = false;\n accumulator = value;\n } else {\n accumulator = reducer(accumulator, value, counter);\n }\n counter++;\n }, { IS_RECORD: true });\n if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\n return accumulator;\n }\n});\n\n\n/***/ }),\n\n/***/ 8335:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar globalThis = __webpack_require__(4576);\nvar getBuiltIn = __webpack_require__(7751);\nvar uncurryThis = __webpack_require__(9504);\nvar call = __webpack_require__(9565);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar isArray = __webpack_require__(4376);\nvar hasOwn = __webpack_require__(9297);\nvar toString = __webpack_require__(655);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar createProperty = __webpack_require__(4659);\nvar fails = __webpack_require__(9039);\nvar parseJSONString = __webpack_require__(8235);\nvar NATIVE_SYMBOL = __webpack_require__(4495);\n\nvar JSON = globalThis.JSON;\nvar Number = globalThis.Number;\nvar SyntaxError = globalThis.SyntaxError;\nvar nativeParse = JSON && JSON.parse;\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis([].push);\n\nvar IS_DIGIT = /^\\d$/;\nvar IS_NON_ZERO_DIGIT = /^[1-9]$/;\nvar IS_NUMBER_START = /^[\\d-]$/;\nvar IS_WHITESPACE = /^[\\t\\n\\r ]$/;\n\nvar PRIMITIVE = 0;\nvar OBJECT = 1;\n\nvar $parse = function (source, reviver) {\n source = toString(source);\n var context = new Context(source, 0, '');\n var root = context.parse();\n var value = root.value;\n var endIndex = context.skip(IS_WHITESPACE, root.end);\n if (endIndex < source.length) {\n throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n }\n return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n};\n\nvar internalize = function (holder, name, reviver, node) {\n var val = holder[name];\n var unmodified = node && val === node.value;\n var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n var elementRecordsLen, keys, len, i, P;\n if (isObject(val)) {\n var nodeIsArray = isArray(val);\n var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n if (nodeIsArray) {\n elementRecordsLen = nodes.length;\n len = lengthOfArrayLike(val);\n for (i = 0; i < len; i++) {\n internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));\n }\n } else {\n keys = enumerableOwnProperties(val);\n len = lengthOfArrayLike(keys);\n for (i = 0; i < len; i++) {\n P = keys[i];\n internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n }\n }\n }\n return call(reviver, holder, name, val, context);\n};\n\nvar internalizeProperty = function (object, key, value) {\n if (DESCRIPTORS) {\n var descriptor = getOwnPropertyDescriptor(object, key);\n if (descriptor && !descriptor.configurable) return;\n }\n if (value === undefined) delete object[key];\n else createProperty(object, key, value);\n};\n\nvar Node = function (value, end, source, nodes) {\n this.value = value;\n this.end = end;\n this.source = source;\n this.nodes = nodes;\n};\n\nvar Context = function (source, index) {\n this.source = source;\n this.index = index;\n};\n\n// https://www.json.org/json-en.html\nContext.prototype = {\n fork: function (nextIndex) {\n return new Context(this.source, nextIndex);\n },\n parse: function () {\n var source = this.source;\n var i = this.skip(IS_WHITESPACE, this.index);\n var fork = this.fork(i);\n var chr = at(source, i);\n if (exec(IS_NUMBER_START, chr)) return fork.number();\n switch (chr) {\n case '{':\n return fork.object();\n case '[':\n return fork.array();\n case '\"':\n return fork.string();\n case 't':\n return fork.keyword(true);\n case 'f':\n return fork.keyword(false);\n case 'n':\n return fork.keyword(null);\n } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n },\n node: function (type, value, start, end, nodes) {\n return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n },\n object: function () {\n var source = this.source;\n var i = this.index + 1;\n var expectKeypair = false;\n var object = {};\n var nodes = {};\n while (i < source.length) {\n i = this.until(['\"', '}'], i);\n if (at(source, i) === '}' && !expectKeypair) {\n i++;\n break;\n }\n // Parsing the key\n var result = this.fork(i).string();\n var key = result.value;\n i = result.end;\n i = this.until([':'], i) + 1;\n // Parsing value\n i = this.skip(IS_WHITESPACE, i);\n result = this.fork(i).parse();\n createProperty(nodes, key, result);\n createProperty(object, key, result.value);\n i = this.until([',', '}'], result.end);\n var chr = at(source, i);\n if (chr === ',') {\n expectKeypair = true;\n i++;\n } else if (chr === '}') {\n i++;\n break;\n }\n }\n return this.node(OBJECT, object, this.index, i, nodes);\n },\n array: function () {\n var source = this.source;\n var i = this.index + 1;\n var expectElement = false;\n var array = [];\n var nodes = [];\n while (i < source.length) {\n i = this.skip(IS_WHITESPACE, i);\n if (at(source, i) === ']' && !expectElement) {\n i++;\n break;\n }\n var result = this.fork(i).parse();\n push(nodes, result);\n push(array, result.value);\n i = this.until([',', ']'], result.end);\n if (at(source, i) === ',') {\n expectElement = true;\n i++;\n } else if (at(source, i) === ']') {\n i++;\n break;\n }\n }\n return this.node(OBJECT, array, this.index, i, nodes);\n },\n string: function () {\n var index = this.index;\n var parsed = parseJSONString(this.source, this.index + 1);\n return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n },\n number: function () {\n var source = this.source;\n var startIndex = this.index;\n var i = startIndex;\n if (at(source, i) === '-') i++;\n if (at(source, i) === '0') i++;\n else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\n else throw new SyntaxError('Failed to parse number at: ' + i);\n if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\n if (at(source, i) === 'e' || at(source, i) === 'E') {\n i++;\n if (at(source, i) === '+' || at(source, i) === '-') i++;\n var exponentStartIndex = i;\n i = this.skip(IS_DIGIT, i);\n if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n }\n return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n },\n keyword: function (value) {\n var keyword = '' + value;\n var index = this.index;\n var endIndex = index + keyword.length;\n if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n return this.node(PRIMITIVE, value, index, endIndex);\n },\n skip: function (regex, i) {\n var source = this.source;\n for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;\n return i;\n },\n until: function (array, i) {\n i = this.skip(IS_WHITESPACE, i);\n var chr = at(this.source, i);\n for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;\n throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n }\n};\n\nvar NO_SOURCE_SUPPORT = fails(function () {\n var unsafeInt = '9007199254740993';\n var source;\n nativeParse(unsafeInt, function (key, value, context) {\n source = context.source;\n });\n return source !== unsafeInt;\n});\n\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n // Safari 9 bug\n return 1 / nativeParse('-0 \\t') !== -Infinity;\n});\n\n// `JSON.parse` method\n// https://tc39.es/ecma262/#sec-json.parse\n// https://github.com/tc39/proposal-json-parse-with-source\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n parse: function parse(text, reviver) {\n return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n }\n});\n\n\n/***/ }),\n\n/***/ 8469:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar iterateSimple = __webpack_require__(507);\nvar SetHelpers = __webpack_require__(4402);\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n\n\n/***/ }),\n\n/***/ 8480:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar internalObjectKeys = __webpack_require__(1828);\nvar enumBugKeys = __webpack_require__(8727);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 8527:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar has = (__webpack_require__(4402).has);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\nvar iteratorClose = __webpack_require__(9539);\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf\nmodule.exports = function isSupersetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) < otherRec.size) return false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n\n\n/***/ }),\n\n/***/ 8551:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n\n\n/***/ }),\n\n/***/ 8574:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n/***/ }),\n\n/***/ 8622:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isCallable = __webpack_require__(4901);\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n\n\n/***/ }),\n\n/***/ 8646:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar getIteratorMethod = __webpack_require__(851);\n\nmodule.exports = function (obj, stringHandling) {\n if (!stringHandling || typeof obj !== 'string') anObject(obj);\n var method = getIteratorMethod(obj);\n return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n\n\n/***/ }),\n\n/***/ 8686:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar fails = __webpack_require__(9039);\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n\n\n/***/ }),\n\n/***/ 8721:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar uncurryThis = __webpack_require__(9504);\nvar defineBuiltInAccessor = __webpack_require__(2106);\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n var count = 0;\n forEach(this, function () { count++; });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n}\n\n\n/***/ }),\n\n/***/ 8727:\n/***/ ((module) => {\n\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ 8745:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n/***/ }),\n\n/***/ 8750:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function intersection(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = new Set();\n\n if (size(O) > otherRec.size) {\n iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) add(result, e);\n });\n } else {\n iterateSet(O, function (e) {\n if (otherRec.includes(e)) add(result, e);\n });\n }\n\n return result;\n};\n\n\n/***/ }),\n\n/***/ 8773:\n/***/ ((__unused_webpack_module, exports) => {\n\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ 8981:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar requireObjectCoercible = __webpack_require__(7750);\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ 9039:\n/***/ ((module) => {\n\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 9143:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar anObjectOrUndefined = __webpack_require__(3972);\nvar aString = __webpack_require__(3463);\nvar hasOwn = __webpack_require__(9297);\nvar base64Map = __webpack_require__(2804);\nvar getAlphabetOption = __webpack_require__(944);\nvar notDetached = __webpack_require__(5169);\n\nvar base64Alphabet = base64Map.c2i;\nvar base64UrlAlphabet = base64Map.c2iUrl;\n\nvar SyntaxError = globalThis.SyntaxError;\nvar TypeError = globalThis.TypeError;\nvar at = uncurryThis(''.charAt);\n\nvar skipAsciiWhitespace = function (string, index) {\n var length = string.length;\n for (;index < length; index++) {\n var chr = at(string, index);\n if (chr !== ' ' && chr !== '\\t' && chr !== '\\n' && chr !== '\\f' && chr !== '\\r') break;\n } return index;\n};\n\nvar decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {\n var chunkLength = chunk.length;\n\n if (chunkLength < 4) {\n chunk += chunkLength === 2 ? 'AA' : 'A';\n }\n\n var triplet = (alphabet[at(chunk, 0)] << 18)\n + (alphabet[at(chunk, 1)] << 12)\n + (alphabet[at(chunk, 2)] << 6)\n + alphabet[at(chunk, 3)];\n\n var chunkBytes = [\n (triplet >> 16) & 255,\n (triplet >> 8) & 255,\n triplet & 255\n ];\n\n if (chunkLength === 2) {\n if (throwOnExtraBits && chunkBytes[1] !== 0) {\n throw new SyntaxError('Extra bits');\n }\n return [chunkBytes[0]];\n }\n\n if (chunkLength === 3) {\n if (throwOnExtraBits && chunkBytes[2] !== 0) {\n throw new SyntaxError('Extra bits');\n }\n return [chunkBytes[0], chunkBytes[1]];\n }\n\n return chunkBytes;\n};\n\nvar writeBytes = function (bytes, elements, written) {\n var elementsLength = elements.length;\n for (var index = 0; index < elementsLength; index++) {\n bytes[written + index] = elements[index];\n }\n return written + elementsLength;\n};\n\n/* eslint-disable max-statements, max-depth -- TODO */\nmodule.exports = function (string, options, into, maxLength) {\n aString(string);\n anObjectOrUndefined(options);\n var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n var lastChunkHandling = options ? options.lastChunkHandling : undefined;\n\n if (lastChunkHandling === undefined) lastChunkHandling = 'loose';\n\n if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {\n throw new TypeError('Incorrect `lastChunkHandling` option');\n }\n\n if (into) notDetached(into.buffer);\n\n var bytes = into || [];\n var written = 0;\n var read = 0;\n var chunk = '';\n var index = 0;\n\n if (maxLength) while (true) {\n index = skipAsciiWhitespace(string, index);\n if (index === string.length) {\n if (chunk.length > 0) {\n if (lastChunkHandling === 'stop-before-partial') {\n break;\n }\n if (lastChunkHandling === 'loose') {\n if (chunk.length === 1) {\n throw new SyntaxError('Malformed padding: exactly one additional character');\n }\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n } else {\n throw new SyntaxError('Missing padding');\n }\n }\n read = string.length;\n break;\n }\n var chr = at(string, index);\n ++index;\n if (chr === '=') {\n if (chunk.length < 2) {\n throw new SyntaxError('Padding is too early');\n }\n index = skipAsciiWhitespace(string, index);\n if (chunk.length === 2) {\n if (index === string.length) {\n if (lastChunkHandling === 'stop-before-partial') {\n break;\n }\n throw new SyntaxError('Malformed padding: only one =');\n }\n if (at(string, index) === '=') {\n ++index;\n index = skipAsciiWhitespace(string, index);\n }\n }\n if (index < string.length) {\n throw new SyntaxError('Unexpected character after padding');\n }\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);\n read = string.length;\n break;\n }\n if (!hasOwn(alphabet, chr)) {\n throw new SyntaxError('Unexpected character');\n }\n var remainingBytes = maxLength - written;\n if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\n // special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`\n break;\n }\n\n chunk += chr;\n if (chunk.length === 4) {\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n chunk = '';\n read = index;\n if (written === maxLength) {\n break;\n }\n }\n }\n\n return { bytes: bytes, read: read, written: written };\n};\n\n\n/***/ }),\n\n/***/ 9286:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar SetHelpers = __webpack_require__(4402);\nvar iterate = __webpack_require__(8469);\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n var result = new Set();\n iterate(set, function (it) {\n add(result, it);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 9297:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar toObject = __webpack_require__(8981);\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n/***/ }),\n\n/***/ 9306:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar tryToString = __webpack_require__(6823);\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n/***/ }),\n\n/***/ 9314:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar notANaN = __webpack_require__(4149);\nvar toPositiveInteger = __webpack_require__(9590);\nvar iteratorClose = __webpack_require__(9539);\nvar createIteratorProxy = __webpack_require__(9462);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\nvar IS_PURE = __webpack_require__(6395);\n\nvar dropWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('drop', RangeError);\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var next = this.next;\n var result, done;\n while (this.remaining) {\n this.remaining--;\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n }\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (!done) return result.value;\n});\n\n// `Iterator.prototype.drop` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.drop\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || dropWithoutClosingOnEarlyError }, {\n drop: function drop(limit) {\n anObject(this);\n var remaining;\n try {\n remaining = toPositiveInteger(notANaN(+limit));\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (dropWithoutClosingOnEarlyError) return call(dropWithoutClosingOnEarlyError, this, remaining);\n\n return new IteratorProxy(getIteratorDirect(this), {\n remaining: remaining\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 9429:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar IS_NODE = __webpack_require__(6193);\n\nmodule.exports = function (name) {\n if (IS_NODE) {\n try {\n return globalThis.process.getBuiltinModule(name);\n } catch (error) { /* empty */ }\n try {\n // eslint-disable-next-line no-new-func -- safe\n return Function('return require(\"' + name + '\")')();\n } catch (error) { /* empty */ }\n }\n};\n\n\n/***/ }),\n\n/***/ 9432:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar arrayFromConstructorAndList = __webpack_require__(5370);\nvar $fromBase64 = __webpack_require__(9143);\n\nvar Uint8Array = globalThis.Uint8Array;\n\n// `Uint8Array.fromBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (Uint8Array) $({ target: 'Uint8Array', stat: true }, {\n fromBase64: function fromBase64(string /* , options */) {\n var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);\n return arrayFromConstructorAndList(Uint8Array, result.bytes);\n }\n});\n\n\n/***/ }),\n\n/***/ 9433:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ 9462:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar create = __webpack_require__(2360);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar defineBuiltIns = __webpack_require__(6279);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar InternalStateModule = __webpack_require__(1181);\nvar getMethod = __webpack_require__(5966);\nvar IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\nvar createIterResultObject = __webpack_require__(2529);\nvar iteratorClose = __webpack_require__(9539);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n return defineBuiltIns(create(IteratorPrototype), {\n next: function next() {\n var state = getInternalState(this);\n // for simplification:\n // for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\n // for `%IteratorHelperPrototype%.next` - just a value\n if (IS_ITERATOR) return state.nextHandler();\n if (state.done) return createIterResultObject(undefined, true);\n try {\n var result = state.nextHandler();\n return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n } catch (error) {\n state.done = true;\n throw error;\n }\n },\n 'return': function () {\n var state = getInternalState(this);\n var iterator = state.iterator;\n state.done = true;\n if (IS_ITERATOR) {\n var returnMethod = getMethod(iterator, 'return');\n return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n }\n if (state.inner) try {\n iteratorClose(state.inner.iterator, 'normal');\n } catch (error) {\n return iteratorClose(iterator, 'throw', error);\n }\n if (iterator) iteratorClose(iterator, 'normal');\n return createIterResultObject(undefined, true);\n }\n });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n var IteratorProxy = function Iterator(record, state) {\n if (state) {\n state.iterator = record.iterator;\n state.next = record.next;\n } else state = record;\n state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n state.nextHandler = nextHandler;\n state.counter = 0;\n state.done = false;\n setInternalState(this, state);\n };\n\n IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n return IteratorProxy;\n};\n\n\n/***/ }),\n\n/***/ 9504:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 9519:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar userAgent = __webpack_require__(2839);\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n/***/ }),\n\n/***/ 9539:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getMethod = __webpack_require__(5966);\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n/***/ }),\n\n/***/ 9565:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n/***/ }),\n\n/***/ 9590:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n\n\n/***/ }),\n\n/***/ 9617:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIndexedObject = __webpack_require__(5397);\nvar toAbsoluteIndex = __webpack_require__(5610);\nvar lengthOfArrayLike = __webpack_require__(6198);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 9631:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar anObjectOrUndefined = __webpack_require__(3972);\nvar anUint8Array = __webpack_require__(4154);\nvar notDetached = __webpack_require__(5169);\nvar base64Map = __webpack_require__(2804);\nvar getAlphabetOption = __webpack_require__(944);\n\nvar base64Alphabet = base64Map.i2c;\nvar base64UrlAlphabet = base64Map.i2cUrl;\n\nvar charAt = uncurryThis(''.charAt);\n\n// `Uint8Array.prototype.toBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n toBase64: function toBase64(/* options */) {\n var array = anUint8Array(this);\n var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\n var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n var omitPadding = !!options && !!options.omitPadding;\n notDetached(this.buffer);\n\n var result = '';\n var i = 0;\n var length = array.length;\n var triplet;\n\n var at = function (shift) {\n return charAt(alphabet, (triplet >> (6 * shift)) & 63);\n };\n\n for (; i + 2 < length; i += 3) {\n triplet = (array[i] << 16) + (array[i + 1] << 8) + array[i + 2];\n result += at(3) + at(2) + at(1) + at(0);\n }\n if (i + 2 === length) {\n triplet = (array[i] << 16) + (array[i + 1] << 8);\n result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\n } else if (i + 1 === length) {\n triplet = array[i] << 16;\n result += at(3) + at(2) + (omitPadding ? '' : '==');\n }\n\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 9797:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar aString = __webpack_require__(3463);\nvar anUint8Array = __webpack_require__(4154);\nvar notDetached = __webpack_require__(5169);\nvar $fromHex = __webpack_require__(2303);\n\n// `Uint8Array.prototype.setFromHex` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n setFromHex: function setFromHex(string) {\n anUint8Array(this);\n aString(string);\n notDetached(this.buffer);\n var read = $fromHex(string, this).read;\n return { read: read, written: read / 2 };\n }\n});\n\n\n/***/ })\n\n/******/ });\n/************************************************************************/\n/******/ // The module cache\n/******/ var __webpack_module_cache__ = {};\n/******/ \n/******/ // The require function\n/******/ function __webpack_require__(moduleId) {\n/******/ \t// Check if module is in cache\n/******/ \tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \tif (cachedModule !== undefined) {\n/******/ \t\treturn cachedModule.exports;\n/******/ \t}\n/******/ \t// Create a new module (and put it into the cache)\n/******/ \tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t// no module.id needed\n/******/ \t\t// no module.loaded needed\n/******/ \t\texports: {}\n/******/ \t};\n/******/ \n/******/ \t// Execute the module function\n/******/ \t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \n/******/ \t// Return the exports of the module\n/******/ \treturn module.exports;\n/******/ }\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js\nvar es_array_push = __webpack_require__(4114);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.detached.js\nvar es_array_buffer_detached = __webpack_require__(6573);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer.js\nvar es_array_buffer_transfer = __webpack_require__(8100);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js\nvar es_array_buffer_transfer_to_fixed_length = __webpack_require__(7936);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.constructor.js\nvar es_iterator_constructor = __webpack_require__(8111);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.reduce.js\nvar es_iterator_reduce = __webpack_require__(8237);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.promise.try.js\nvar es_promise_try = __webpack_require__(1689);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.from-base64.js\nvar esnext_uint8_array_from_base64 = __webpack_require__(9432);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.set-from-base64.js\nvar esnext_uint8_array_set_from_base64 = __webpack_require__(1549);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.set-from-hex.js\nvar esnext_uint8_array_set_from_hex = __webpack_require__(9797);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.to-base64.js\nvar esnext_uint8_array_to_base64 = __webpack_require__(9631);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.to-hex.js\nvar esnext_uint8_array_to_hex = __webpack_require__(5623);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-exception.stack.js\nvar web_dom_exception_stack = __webpack_require__(4979);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url.parse.js\nvar web_url_parse = __webpack_require__(5781);\n;// ./src/shared/util.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n SIGNATURE: 101\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35,\n DRAW_STEP: 41\n};\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};\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};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\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};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\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};\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};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\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 setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n closePath: 3\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\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}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"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}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\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}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\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 static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (!keepEscapeSequence && charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\nif (typeof Math.sumPrecise !== \"function\") {\n Math.sumPrecise = function (numbers) {\n return numbers.reduce((a, b) => a + b, 0);\n };\n}\nif (typeof AbortSignal.any !== \"function\") {\n AbortSignal.any = function (iterable) {\n const ac = new AbortController();\n const {\n signal\n } = ac;\n for (const s of iterable) {\n if (s.aborted) {\n ac.abort(s.reason);\n return signal;\n }\n }\n for (const s of iterable) {\n s.addEventListener(\"abort\", () => {\n ac.abort(s.reason);\n }, {\n signal\n });\n }\n return signal;\n };\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js\nvar es_iterator_map = __webpack_require__(1701);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.promise.with-resolvers.js\nvar es_promise_with_resolvers = __webpack_require__(4628);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.difference.v2.js\nvar es_set_difference_v2 = __webpack_require__(7642);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.intersection.v2.js\nvar es_set_intersection_v2 = __webpack_require__(8004);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-disjoint-from.v2.js\nvar es_set_is_disjoint_from_v2 = __webpack_require__(3853);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-subset-of.v2.js\nvar es_set_is_subset_of_v2 = __webpack_require__(5876);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-superset-of.v2.js\nvar es_set_is_superset_of_v2 = __webpack_require__(2475);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.symmetric-difference.v2.js\nvar es_set_symmetric_difference_v2 = __webpack_require__(5024);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.union.v2.js\nvar es_set_union_v2 = __webpack_require__(1698);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.delete.js\nvar web_url_search_params_delete = __webpack_require__(4603);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.has.js\nvar web_url_search_params_has = __webpack_require__(7566);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.size.js\nvar web_url_search_params_size = __webpack_require__(8721);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.drop.js\nvar es_iterator_drop = __webpack_require__(9314);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.every.js\nvar es_iterator_every = __webpack_require__(1148);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js\nvar es_iterator_some = __webpack_require__(3579);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.json.parse.js\nvar esnext_json_parse = __webpack_require__(8335);\n;// ./src/display/display_utils.js\n\n\n\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\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 rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\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 = (viewBox[3] - viewBox[1]) * scale;\n height = (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 = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToViewportRectangle(rect) {\n const topLeft = [rect[0], rect[1]];\n Util.applyTransform(topLeft, this.transform);\n const bottomRight = [rect[2], rect[3]];\n Util.applyTransform(bottomRight, this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\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 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 delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n userUnit: 1,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n span.style.colorScheme = \"only light\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--total-scale-factor) * ${pageWidth}px`,\n h = `var(--total-scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const {\n pixelRatio\n } = OutputScale;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n #signatureDescriptionButton = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\",\n signature: \"pdfjs-editor-remove-signature-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n this.#addDeleteButton();\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n }\n #addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n this.#altText = altText;\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this.#uiManager._signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n const signal = this.#uiManager._signal;\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n }, {\n signal\n });\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, altTextManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this.#signatureManager = signatureManager;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#signatureManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get highlightColors() {\n return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n #displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#highlightToolbar ||= new HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#currentDrawingSession?.commitOrRemove();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n this._editorUndoBar?.hide();\n this.#updateModeCapability.resolve();\n return;\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId || editor.id === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/touch_manager.js\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #pointerDownAC = null;\n #signal;\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n if (evt.touches.length === 1) {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", stopEvent, opt);\n container.addEventListener(\"pointerup\", stopEvent, opt);\n this.#onPinchStart?.();\n }\n stopEvent(evt);\n if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo || evt.touches.length !== 2) {\n return;\n }\n stopEvent(evt);\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const distance = Math.hypot(currGapX, currGapY) || 1;\n const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n if (!this.#isPinching) {\n this.#isPinching = true;\n return;\n }\n const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n this.#onPinching?.(origin, pDistance, distance);\n }\n #onTouchEnd(evt) {\n if (evt.touches.length >= 2) {\n return;\n }\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n if (!this.#touchInfo) {\n return;\n }\n stopEvent(evt);\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #keepAspectRatio = false;\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n isSelected = false;\n _isCopy = false;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n _moveAfterPaste(baseX, baseY) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n style\n } = this.div;\n style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * width, parentHeight * height);\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n if (this.#altText) {\n await this._editToolbar.addAltText(this.#altText);\n }\n return this._editToolbar;\n }\n removeEditToolbar() {\n if (!this._editToolbar) {\n return;\n }\n this._editToolbar.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n async addAltTextButton() {\n if (this.#altText) {\n return;\n }\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n await this.addEditToolbar();\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#touchManager?.destroy();\n this.#touchManager = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n if (this.isSelected && this._editToolbar) {\n return;\n }\n this.isSelected = true;\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.id\n });\n }\n getElementForAltText() {\n return this.div;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\n\n\n\n\n\n\n\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\n\n\n\n\n\n\n\n\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\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 warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n 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 const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\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 const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n 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 checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._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 for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n constructor(translatedData, inspectFont = null) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = new Path2D(cmds || \"\");\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n}\n\n;// ./src/display/api_utils.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n return val;\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url.href;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\n\n;// ./src/shared/message_handler.js\n\n\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\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};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\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.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\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 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 targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\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 return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\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 send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\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 if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\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 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 sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\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 destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\n\n\n\n\n\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js\nvar es_iterator_filter = __webpack_require__(2489);\n;// ./src/display/filter_factory.js\n\n\n\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = updateUrlHash(url, \"\");\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\n\n\n\n\n\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/wasm_factory.js\n\n\n\n\n\n\n\n\n\nclass BaseWasmFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Wasm filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load wasm data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nif (isNodeJS) {\n let canvas;\n try {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n try {\n canvas = require(\"@napi-rs/canvas\");\n } catch (ex) {\n warn(`Cannot load \"@napi-rs/canvas\" package: \"${ex}\".`);\n }\n } catch (ex) {\n warn(`Cannot access the \\`require\\` function: \"${ex}\".`);\n }\n if (!globalThis.DOMMatrix) {\n if (canvas?.DOMMatrix) {\n globalThis.DOMMatrix = canvas.DOMMatrix;\n } else {\n warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n }\n }\n if (!globalThis.ImageData) {\n if (canvas?.ImageData) {\n globalThis.ImageData = canvas.ImageData;\n } else {\n warn(\"Cannot polyfill `ImageData`, rendering may be broken.\");\n }\n }\n if (!globalThis.Path2D) {\n if (canvas?.Path2D) {\n globalThis.Path2D = canvas.Path2D;\n } else {\n warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n }\n }\n if (!globalThis.navigator?.language) {\n globalThis.navigator = {\n language: \"en-US\",\n platform: \"\",\n userAgent: \"\"\n };\n }\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/pattern_helper.js\n\n\n\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\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}\nclass BaseShadingPattern {\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let 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 const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (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 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 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 const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n 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}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[6];\n this._background = IR[7];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let 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 (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\n this.operatorList = IR[2];\n this.matrix = IR[3];\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.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n const combinedScaleX = matrixScaleX * scale[0];\n const combinedScaleY = matrixScaleY * scale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\n\n\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\n\n\n\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst SCALE_MATRIX = new DOMMatrix();\nconst XY = new Float32Array(2);\nconst MIN_MAX_INIT = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function () {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function () {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function (x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function (x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function (a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function (a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function () {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function (angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function (rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n constructor(width, height) {\n this.clipBox = new Float32Array([0, 0, width, height]);\n this.minMax = MIN_MAX_INIT.slice();\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(MIN_MAX_INIT, 0);\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let 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 dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\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 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 === util_ImageKind.RGB_24BPP) {\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 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}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\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}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = 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 const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\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.filterFactory = filterFactory;\n this.groupStack = [];\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\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 if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\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[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdrop;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdrop;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n this[op](path);\n return;\n }\n if (!(path instanceof Path2D)) {\n const path2d = data[0] = new Path2D();\n for (let i = 0, ii = path.length; i < ii;) {\n switch (path[i++]) {\n case DrawOPS.moveTo:\n path2d.moveTo(path[i++], path[i++]);\n break;\n case DrawOPS.lineTo:\n path2d.lineTo(path[i++], path[i++]);\n break;\n case DrawOPS.curveTo:\n path2d.bezierCurveTo(path[i++], path[i++], path[i++], path[i++], path[i++], path[i++]);\n break;\n case DrawOPS.closePath:\n path2d.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${path[i - 1]}`);\n break;\n }\n }\n path = path2d;\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n this[op](path);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(path, consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n if (consumePath) {\n this.consumePath(path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke(path) {\n this.stroke(path);\n }\n fill(path, consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(path, intersect);\n }\n }\n eoFill(path) {\n this.pendingEOFill = true;\n this.fill(path);\n }\n fillStroke(path) {\n this.fill(path, false);\n this.stroke(path, false);\n this.consumePath(path);\n }\n eoFillStroke(path) {\n this.pendingEOFill = true;\n this.fillStroke(path);\n }\n closeFillStroke(path) {\n this.fillStroke(path);\n }\n closeEOFillStroke(path) {\n this.pendingEOFill = true;\n this.fillStroke(path);\n }\n endPath(path) {\n this.consumePath(path);\n }\n rawFillPath(path) {\n this.ctx.fill(path);\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n return;\n }\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\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 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 this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(matrix) {\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if (font.disableFontFace || isAddToPathSet || patternFill || patternStroke) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill || patternStroke) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n ctx.fill(this.#getScaledPath(path, currentTransform, patternFillTransform));\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let 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 showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\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 this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n } else if (this.contentVisible) {\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n this.current.patternStroke = true;\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(color) {\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent() {\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(color) {\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n }\n setFillTransparent() {\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath();\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n ctx.drawImage(mask.canvas, trans[4], trans[5]);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let 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 applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(path, clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/display/metadata.js\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n [Symbol.iterator]() {\n return this.#groups.entries();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (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 !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\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 cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : 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 this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\n\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\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 tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\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 function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\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, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\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 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.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\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;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\n\n\n\n\n\n\n\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n _responseOrigin = null;\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\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 cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\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 const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\n\n\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n _responseOrigin = null;\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\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 assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => {\n args.onError(xhr.status);\n };\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_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 if (matches) {\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n this._url = source.url;\n this._fullRequestId = manager.request({\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._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n this._url = manager.url;\n this._requestId = manager.request({\n begin,\n end,\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._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError ??= createResponseError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNodeStreamFsFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n const fs = process.getBuiltinModule(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, this._url.href);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\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 = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\n;// ./src/display/pdf_objects.js\n\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n delete this.#objs[objId];\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * OutputScale.pixelRatio;\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * OutputScale.pixelRatio;\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\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 const scaleFactorStr = \"calc(var(--total-scale-factor) *\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, style, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (util_FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/xfa_text.js\n\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const enableHWA = src.enableHWA === true;\n const useWasm = src.useWasm !== false;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n }),\n wasmFactory: useWorkerFetch ? null : new WasmFactory({\n baseUrl: wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"5.3.31\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n iccUrl,\n standardFontDataUrl,\n wasmUrl\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #progressiveDoneListeners = [];\n #progressiveReadListeners = [];\n #progressListeners = [];\n #rangeListeners = [];\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n }\n addRangeListener(listener) {\n this.#rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this.#progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this.#progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this.#progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this.#rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this.#capability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #pendingCleanup = false;\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 this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup();\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup();\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 pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass PDFWorker {\n #capability = Promise.withResolvers();\n #messageHandler = null;\n #port = null;\n #webWorker = null;\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts = new WeakMap();\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n this.fromPort = params => {\n deprecated(\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\");\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n return this.create(params);\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n if (port) {\n if (PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n PDFWorker.#workerPorts.set(port, this);\n this.#initializeFromPort(port);\n } else {\n this.#initialize();\n }\n }\n get promise() {\n return this.#capability.promise;\n }\n #resolve() {\n this.#capability.resolve();\n this.#messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this.#port;\n }\n get messageHandler() {\n return this.#messageHandler;\n }\n #initializeFromPort(port) {\n this.#port = port;\n this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this.#messageHandler.on(\"ready\", () => {});\n this.#resolve();\n }\n #initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this.#setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this.#setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this.#webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this.#messageHandler = messageHandler;\n this.#port = worker;\n this.#webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this.#setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this.#setupFakeWorker();\n }\n #setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this.#port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this.#capability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this.#webWorker?.terminate();\n this.#webWorker = null;\n PDFWorker.#workerPorts.delete(this.#port);\n this.#port = null;\n this.#messageHandler?.destroy();\n this.#messageHandler = null;\n }\n static create(params) {\n const cachedPort = this.#workerPorts.get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.wasmFactory = factory.wasmFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\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 ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\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 const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(exportedData, inspectFont);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n const factory = this[data.type];\n if (!factory) {\n throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n }\n return factory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\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 if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\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 getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\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 _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"5.3.31\";\nconst build = \"47ad820d9\";\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.flat-map.js\nvar es_iterator_flat_map = __webpack_require__(531);\n;// ./src/shared/scripting_utils.js\n\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/xfa_layer.js\n\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\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 case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n this.#popupElement?.popup.updateEdited(params);\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = this;\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n data\n } = this;\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId\n });\n });\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = this.data.password ? \"password\" : \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 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 if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n this.popup = null;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #position = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n header.append(modificationDate);\n }\n const html = this.#html;\n if (html) {\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.#contentsObj);\n popup.append(contents);\n }\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popupContent\n }) {\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popupContent) {\n this.#richText = this.#makePopupContent(popupContent);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n },\n width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n await this.#appendElement(rendered, data.id);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n async addLinkAnnotations(annotations, linkService) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n await this.#appendElement(rendered, data.id);\n }\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = canvas;\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\n };\n const savedColor = this.#color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (!super.enableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n return true;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n if (this._isCopy || this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this._moveAfterPaste(baseX, baseY);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.#color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: this.#content\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\n\n\n\nclass Outline {\n static PRECISION = 1e-4;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\n\n\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n const minMax = [lastX, lastY, lastX, lastY];\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4],\n y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bbox);\n Util.rectBoundingBox(...bbox, minMax);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass HighlightOutliner {\n #box;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = [Infinity, Infinity, -Infinity, -Infinity];\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.lastPoint = lastPoint;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n #type;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.setAttribute(\"aria-haspopup\", true);\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.setAttribute(\"aria-hidden\", true);\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.setAttribute(\"aria-multiselectable\", false);\n div.setAttribute(\"aria-orientation\", \"vertical\");\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: this.#type,\n value: color\n });\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.setAttribute(\"aria-selected\", i.next().value === color);\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #lastPoint = null;\n #opacity;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.#opacity = opa;\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: col,\n \"fill-opacity\": opa\n }\n });\n this.#colorPicker?.updateColor(col);\n };\n const savedColor = this.color;\n const savedOpacity = this.#opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.highlightColors) {\n this.#colorPicker = new ColorPicker({\n editor: this\n });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.#opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.#opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n editor.rotate(editor.parentRotation);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n const serialized = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\n };\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\n\n\n\n\n\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static #currentPointerId = NaN;\n static #currentPointerType = null;\n static #currentPointerIds = null;\n static #currentMoveTimestamp = NaN;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this.#drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, event) {\n const {\n target,\n offsetX: x,\n offsetY: y,\n pointerId,\n pointerType\n } = event;\n if (DrawingEditor.#currentPointerType && DrawingEditor.#currentPointerType !== pointerType) {\n return;\n }\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n DrawingEditor.#currentPointerId ||= pointerId;\n DrawingEditor.#currentPointerType ??= pointerType;\n window.addEventListener(\"pointerup\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._endDraw(e);\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._currentParent.endDrawingSession();\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (DrawingEditor.#currentPointerType !== e.pointerType) {\n return;\n }\n (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._currentParent.endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\n stopEvent(e);\n }\n }, {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove(event) {\n DrawingEditor.#currentMoveTimestamp = -1;\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (DrawingEditor.#currentPointerId !== pointerId) {\n return;\n }\n if (DrawingEditor.#currentPointerIds?.size >= 1) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n DrawingEditor.#currentMoveTimestamp = event.timeStamp;\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n DrawingEditor.#currentPointerType = null;\n DrawingEditor.#currentMoveTimestamp = NaN;\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n DrawingEditor.#currentPointerId = NaN;\n DrawingEditor.#currentPointerIds = null;\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n if (event?.target === parent.div) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n }\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\n\n\n\n\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n Util.pointBoundingBox(line[i], line[i + 1], bbox);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points,\n rect\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = {\n annotationType: AnnotationEditorType.INK,\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n },\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const A = buf[(i << 2) + 3];\n if (A === 0) {\n max = out[i] = 0xff;\n continue;\n }\n const pix = out[i] = buf[i << 2];\n if (pix > max) {\n max = pix;\n }\n if (pix < min) {\n min = pix;\n }\n }\n const ratio = 255 / (max - min);\n for (let i = 0; i < N; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const buf = await new Response(cs.readable).arrayBuffer();\n const bytes = new Uint8Array(buf);\n return toBase64Util(bytes);\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = fromBase64Util(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.signatureManager && this.#description !== null) {\n await toolbar.addEditSignatureButton(this._uiManager.signatureManager, this.#signatureUUID, this.#description);\n toolbar.show();\n }\n return toolbar;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.#description = description;\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [parentWidth, parentHeight] = this.parentDimensions;\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims(parentWidth * this.width, parentHeight * this.height);\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points,\n rect\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = {\n annotationType: AnnotationEditorType.SIGNATURE,\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness,\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.#description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #missingCanvas = false;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.addAltTextButton();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n editor.annotationElementId = data.id || null;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = true;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n }\n serialized.id = this.annotationElementId;\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n this.#isEnabling = false;\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n this.#isEnabling = false;\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #mapping = new Map();\n #toUpdate = new Map();\n static #id = 0;\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstChild;\n const pathElement = defs.firstChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException,\n AnnotationEditorLayer: AnnotationEditorLayer,\n AnnotationEditorParamsType: AnnotationEditorParamsType,\n AnnotationEditorType: AnnotationEditorType,\n AnnotationEditorUIManager: AnnotationEditorUIManager,\n AnnotationLayer: AnnotationLayer,\n AnnotationMode: AnnotationMode,\n AnnotationType: AnnotationType,\n build: build,\n ColorPicker: ColorPicker,\n createValidAbsoluteUrl: createValidAbsoluteUrl,\n DOMSVGFactory: DOMSVGFactory,\n DrawLayer: DrawLayer,\n FeatureTest: util_FeatureTest,\n fetchData: fetchData,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getUuid: getUuid,\n getXfaPageViewport: getXfaPageViewport,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: util_ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n MathClamp: MathClamp,\n noContextMenu: noContextMenu,\n normalizeUnicode: normalizeUnicode,\n OPS: OPS,\n OutputScale: OutputScale,\n PasswordResponses: PasswordResponses,\n PDFDataRangeTransport: PDFDataRangeTransport,\n PDFDateString: PDFDateString,\n PDFWorker: PDFWorker,\n PermissionFlag: PermissionFlag,\n PixelsPerInch: PixelsPerInch,\n RenderingCancelledException: RenderingCancelledException,\n ResponseException: ResponseException,\n setLayerDimensions: setLayerDimensions,\n shadow: shadow,\n SignatureExtractor: SignatureExtractor,\n stopEvent: stopEvent,\n SupportedImageMimeTypes: SupportedImageMimeTypes,\n TextLayer: TextLayer,\n TouchManager: TouchManager,\n updateUrlHash: updateUrlHash,\n Util: Util,\n VerbosityLevel: VerbosityLevel,\n version: version,\n XfaLayer: XfaLayer\n};\n\nexport { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, ColorPicker, DOMSVGFactory, DrawLayer, util_FeatureTest as FeatureTest, GlobalWorkerOptions, util_ImageKind as ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TouchManager, Util, VerbosityLevel, XfaLayer, build, createValidAbsoluteUrl, fetchData, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, noContextMenu, normalizeUnicode, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map"],"names":["__webpack_modules__","module","__unused_webpack_exports","isCallable","exports","it","call","aCallable","anObject","tryToString","getIteratorMethod","$TypeError","TypeError","argument","usingIterator","iteratorMethod","arguments","length","uncurryThis","fails","hasOwn","DESCRIPTORS","CONFIGURABLE_FUNCTION_NAME","inspectSource","InternalStateModule","enforceInternalState","enforce","getInternalState","get","$String","String","defineProperty","Object","stringSlice","slice","replace","join","CONFIGURABLE_LENGTH","value","TEMPLATE","split","makeBuiltIn","name","options","getter","setter","configurable","arity","constructor","writable","prototype","undefined","error","state","source","Function","toString","this","FunctionPrototype","getDescriptor","getOwnPropertyDescriptor","EXISTS","PROPER","CONFIGURABLE","getBuiltIn","record","fn","ITERATOR_INSTEAD_OF_RECORD","step","result","iterator","next","done","__unused_webpack_module","$","getIteratorDirect","getIteratorFlattenable","createIteratorProxy","iteratorClose","IS_PURE","iteratorHelperWithoutClosingOnEarlyError","flatMapWithoutClosingOnEarlyError","IteratorProxy","inner","mapper","counter","target","proto","real","forced","flatMap","test","bind","hasOwnProperty","classof","isPrototypeOf","Prototype","ceil","Math","floor","trunc","x","n","USE_SYMBOL_AS_UID","$Object","$Symbol","getMethod","isNullOrUndefined","Iterators","ITERATOR","wellKnownSymbol","alphabet","internalObjectKeys","enumBugKeys","keys","O","exec","iterate","everyWithoutClosingOnEarlyError","every","predicate","stop","IS_RECORD","INTERRUPTED","stopped","set","has","NATIVE_WEAK_MAP","globalThis","isObject","createNonEnumerableProperty","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","store","metadata","facade","STATE","getterFor","TYPE","type","number","V8","ENVIRONMENT","structuredClone","buffer","ArrayBuffer","clone","transfer","byteLength","$fromBase64","anUint8Array","Uint8Array","INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS","setFromBase64","string","read","written","apply","newPromiseCapabilityModule","perform","Promise","ACCEPT_ARGUMENTS","stat","callbackfn","args","promiseCapability","f","reject","resolve","promise","union","setMethodAcceptSetLike","callWithSafeIterationClosing","mapWithoutClosingOnEarlyError","map","obj","toIndexedObject","indexOf","push","object","names","key","i","descriptor","F","getPrototypeOf","SyntaxError","parseInt","min","NOT_HEX","into","stringLength","maxLength","bytes","hexits","activeXDocument","definePropertiesModule","html","documentCreateElement","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","document","domain","style","display","appendChild","src","contentWindow","open","create","Properties","isSupersetOf","filterWithoutClosingOnEarlyError","filter","$default","isArrayIteratorMethod","lengthOfArrayLike","getIterator","Result","ResultPrototype","iterable","unboundFunction","iterFn","index","that","AS_ENTRIES","IS_ITERATOR","condition","callFn","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","input","pref","exoticToPrim","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","toLowerCase","commonAlphabet","base64Alphabet","base64UrlAlphabet","inverse","characters","charAt","i2c","c2i","i2cUrl","c2iUrl","passed","required","navigator","userAgent","uncurryThisAccessor","requireObjectCoercible","aPossiblePrototype","setPrototypeOf","CORRECT_SETTER","Array","__proto__","$this","dummy","Wrapper","NewTarget","NewTargetPrototype","NATIVE_ARRAY_BUFFER","arrayBufferByteLength","DataView","id","postfix","random","aSet","SetHelpers","size","getSetRecord","iterateSet","iterateSimple","remove","other","otherRec","e","includes","isPossiblePrototype","someWithoutClosingOnEarlyError","some","add","keysIter","functionToString","getOwnPropertySymbols","toIntegerOrInfinity","INVALID_SIZE","$RangeError","RangeError","max","SetRecord","intSize","numSize","isDisjointFrom","createElement","setArrayLength","doesNotExceedSafeInteger","properErrorOnNonWritableLength","item","len","argCount","ArrayPrototype","userAgentStartsWith","Bun","version","Deno","process","window","val","valueOf","isArray","SetPrototype","Set","WorkerThreads","channel","$detach","getBuiltInNodeModule","PROPER_STRUCTURED_CLONE_TRANSFER","$ArrayBuffer","$MessageChannel","MessageChannel","detach","transferable","port1","postMessage","V8_VERSION","symbol","Symbol","sham","SILENT_ON_NON_WRITABLE_LENGTH_SET","METHOD_NAME","ExpectedError","Iterator","IteratorPrototype","method","CLOSED","check","self","global","defineBuiltIn","validateArgumentsLength","$URLSearchParams","URLSearchParams","URLSearchParamsPrototype","append","$delete","forEach","params","$value","entries","v","k","entry","dindex","found","entriesLength","enumerable","unsafe","withResolvers","definePropertyModule","createPropertyDescriptor","documentAll","all","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","P","Attributes","current","createSetLike","createSetLikeWithInfinitySize","Error","callback","error2","Infinity","anInstance","inheritIfRequired","normalizeStringArgument","DOMExceptionConstants","clearErrorStack","DOM_EXCEPTION","NativeDOMException","$DOMException","DOMExceptionPrototype","argumentsLength","message","stack","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","FORCED_CONSTRUCTOR","DOMException","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","constant","constantName","s","c","IndexSizeError","m","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","TimeoutError","InvalidNodeTypeError","DataCloneError","symmetricDifference","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","concat","isDetached","Constructor","list","$length","IndexedObject","integer","notDetached","numberToString","toHex","hex","toIndex","detachTransferable","ArrayBufferPrototype","DataViewPrototype","isResizable","maxByteLength","getInt8","setInt8","arrayBuffer","newLength","preserveResizability","newBuffer","newByteLength","fixedLength","a","b","copyLength","USE_NATIVE_URL","URL","parse","url","urlString","base","isSubsetOf","V","func","PromiseCapability","C","$$resolve","$$reject","NATIVE_BIND","uid","toLength","ENTRIES","defineGlobalProperty","copyConstructorProperties","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","dontCallGetSet","defineBuiltInAccessor","objectKeys","defineProperties","props","simple","nonConfigurable","nonWritable","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","toPrimitive","bitmap","NATIVE_SYMBOL","propertyIsEnumerable","propertyIsEnumerableModule","searchParams","params2","pathname","toJSON","sort","href","username","host","hash","getAll","$has","values","SHARED","versions","mode","copyright","license","difference","PrototypeOfArrayIteratorPrototype","arrayIterator","BUGGY_SAFARI_ITERATORS","ownKeys","getOwnPropertyDescriptorModule","exceptions","namespace","$transfer","transferToFixedLength","intersection","from","createProperty","CONSTRUCTOR","NativeIterator","FORCED","IteratorConstructor","defineIteratorPrototypeAccessor","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$SyntaxError","$parseInt","fromCharCode","at","codePoints","IS_4_HEX_DIGITS","IS_C0_CONTROL_CODE","unterminated","chr","twoChars","fourHexDigits","end","FAILS_ON_INITIAL_UNDEFINED","reduce","reduceWithoutClosingOnEarlyError","reducer","noInitial","accumulator","parseJSONString","JSON","Number","nativeParse","enumerableOwnProperties","IS_DIGIT","IS_NON_ZERO_DIGIT","IS_NUMBER_START","IS_WHITESPACE","internalize","holder","reviver","node","elementRecordsLen","unmodified","context","nodeIsArray","nodes","internalizeProperty","Node","Context","fork","nextIndex","skip","array","keyword","start","expectKeypair","until","expectElement","parsed","startIndex","endIndex","regex","j","NO_SOURCE_SUPPORT","unsafeInt","PROPER_BASE_PARSE","text","root","$parse","interruptible","getOwnPropertyNames","$Error","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","stringHandling","count","Reflect","$propertyIsEnumerable","NASHORN_BUG","anObjectOrUndefined","aString","base64Map","getAlphabetOption","skipAsciiWhitespace","decodeBase64Chunk","chunk","throwOnExtraBits","chunkLength","triplet","chunkBytes","writeBytes","elements","elementsLength","lastChunkHandling","remainingBytes","notANaN","toPositiveInteger","dropWithoutClosingOnEarlyError","remaining","drop","limit","IS_NODE","getBuiltinModule","arrayFromConstructorAndList","fromBase64","defineBuiltIns","createIterResultObject","ITERATOR_HELPER","WRAP_FOR_VALID_ITERATOR","setInternalState","createIteratorProxyPrototype","nextHandler","returnHandlerResult","returnMethod","WrapForValidIteratorPrototype","IteratorHelperPrototype","RETURN_HANDLER_RESULT","uncurryThisWithBind","match","v8","kind","innerResult","innerError","toAbsoluteIndex","createMethod","IS_INCLUDES","el","fromIndex","toBase64","omitPadding","shift","$fromHex","setFromHex","__webpack_module_cache__","moduleId","cachedModule","__webpack_exports__","isNodeJS","nw","electron","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorType","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","SIGNATURE","AnnotationEditorParamsType","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","HIGHLIGHT_COLOR","HIGHLIGHT_DEFAULT_COLOR","HIGHLIGHT_THICKNESS","HIGHLIGHT_FREE","HIGHLIGHT_SHOW_ALL","DRAW_STEP","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","util_ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","UNDERLINE","SQUIGGLY","STRIKEOUT","CARET","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationBorderStyleType","VerbosityLevel","ERRORS","WARNINGS","INFOS","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","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","setStrokeTransparent","setFillTransparent","rawFillPath","DrawOPS","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","assert","cond","createValidAbsoluteUrl","baseUrl","addDefaultProtocol","startsWith","dots","tryConvertEncoding","decodeURIComponent","escape","absoluteUrl","protocol","_isValidProtocol","updateUrlHash","allowRel","res","shadow","prop","nonSerializable","BaseException","PasswordException","code","super","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","subarray","stringToBytes","str","charCodeAt","util_FeatureTest","isLittleEndian","buffer8","Uint32Array","isEvalSupported","isOffscreenCanvasSupported","OffscreenCanvas","isImageDecoderSupported","ImageDecoder","platform","isAndroid","isLinux","isMac","isWindows","isFirefox","isCSSRoundSupported","CSS","supports","hexNumbers","padStart","Util","makeHexColor","r","g","scaleMinMax","minMax","m1","m2","applyTransform","p","pos","p0","p1","applyTransformToBezier","m0","m3","m4","m5","pI","pI1","applyInverseTransform","d","axialAlignedBoundingBox","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","inverseTransform","singularValueDecompose2dScale","matrix","first","second","sqrt","normalizeRect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","pointBoundingBox","y","rectBoundingBox","x0","y0","x1","y1","x2","x3","y2","y3","t","mt","tt","ttt","abs","delta","sqrtDelta","bezierBoundingBox","NormalizeRegex","NormalizationMap","normalizeUnicode","Map","replaceAll","_","p2","getUuid","crypto","randomUUID","buf","getRandomValues","AnnotationPrefix","MathClamp","toBase64Util","arr","btoa","sumPrecise","numbers","AbortSignal","any","ac","AbortController","signal","aborted","abort","reason","addEventListener","SVG_NS","PixelsPerInch","static","PDF","async","fetchData","isValidFetchUrl","baseURI","response","fetch","ok","statusText","blob","json","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","send","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","rawDims","dims","pageWidth","pageHeight","pageX","pageY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","RenderingCancelledException","extraDelay","isDataScheme","ii","trim","substring","isPdfFile","filename","getFilenameFromUrl","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reFilename","splitURI","suggestedFilename","StatTimer","started","times","time","Date","now","timeEnd","outBuf","longest","padEnd","noContextMenu","preventDefault","stopEvent","stopPropagation","PDFDateString","toDateObject","RegExp","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","getRGB","color","colorRGB","getCurrentTransform","ctx","getTransform","getCurrentTransformInverse","invertSelf","setLayerDimensions","div","viewport","mustFlip","mustRotate","useRound","w","h","widthStr","heightStr","setAttribute","OutputScale","pixelRatio","sx","sy","scaled","symmetric","limitCanvas","maxPixels","maxDim","capAreaFactor","maxAreaScale","maxWidthScale","maxHeightScale","capPixels","maxScale","devicePixelRatio","winPixels","screen","availWidth","availHeight","SupportedImageMimeTypes","EditorToolbar","editor","freeze","freetext","highlight","ink","stamp","signature","render","editToolbar","classList","_uiManager","_signal","buttons","className","position","toolbarPosition","direction","insetInlineEnd","top","_focusEventsAllowed","element","capture","hide","hideDropdown","show","shown","editorType","button","tabIndex","delete","divider","addAltText","altText","prepend","addColorPicker","colorPicker","renderButton","addEditSignatureButton","signatureManager","renderEditButton","updateEditSignatureButton","description","title","destroy","HighlightToolbar","uiManager","boxes","isLTR","lastY","lastX","box","parent","span","highlightSelection","bindEvents","IdManager","ImageManager","_isSVGFittingCanvas","getContext","willReadFrequently","image","Image","decode","then","drawImage","getImageData","rawData","refCounter","isSvg","File","file","Blob","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","onerror","readAsDataURL","createImageBitmap","getFromFile","lastModified","getFromUrl","getFromBlob","blobPromise","getFromId","getFromCanvas","canvas","offscreen","transferToImageBitmap","getSvgUrl","deleteId","transferFromImageBitmap","convertToBlob","isValidId","CommandManager","maxSize","cmd","undo","post","mustExec","NaN","overwriteIfSameType","keepUndo","splice","redo","hasSomethingToUndo","hasSomethingToRedo","cleanType","KeyboardManager","callbacks","allKeys","isMacKey","event","altKey","ctrlKey","metaKey","shiftKey","bubbles","checker","ColorManager","_colors","colors","visibility","colorScheme","body","computedColor","getComputedStyle","getColorValues","convert","rgb","matchMedia","RGB","_colorsMapping","getHexCode","AnnotationEditorUIManager","_editorUndoBar","isEditing","isEmpty","hasSelectedEditor","hasSelectedText","_keyboardManager","arrowChecker","contains","activeElement","tagName","hasSomethingToControl","textInputChecker","_self","HTMLInputElement","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","isEnterHandled","unselectAll","translateSelectedEditors","container","viewer","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","_eventBus","_on","onEditingAction","onPageChanging","onScaleChanging","onRotationChanging","onSetPreference","evt","updateParams","annotationStorage","filterFactory","viewParameters","realScale","PDF_TO_CSS_UNITS","isShiftKeyDown","_supportsPinchToZoom","layer","clear","clearTimeout","combinedSignal","useNewAltTextFlow","useNewAltTextWhenAddingImage","hcmFilter","addHCMFilter","foreground","background","pair","highlightColorNames","reverse","setCurrentDrawingSession","disableUserSelect","setMainHighlightColorPicker","editAltText","firstTime","getSignature","switchToMode","on","once","dispatch","setPreference","pageNumber","focusMainContainer","focus","findParent","layerX","layerY","getBoundingClientRect","toggle","addShouldRescale","removeShouldRescale","commitOrRemove","pagesRotation","anchorNode","nodeType","TEXT_NODE","parentElement","textLayer","currentLayer","hasTextLayer","methodOfCreation","selection","getSelection","isCollapsed","anchorOffset","focusNode","focusOffset","closest","getSelectionBoxes","empty","isNoneMode","createAndAddNewEditor","showAllEditors","addToAnnotationStorage","setValue","activeLayer","toggleDrawing","pointerup","blur","hasSelection","lastEditor","lastActiveElement","keydown","keyup","copy","cut","paste","dragOver","addEditListeners","removeEditListeners","dataTransfer","items","isHandlingMimeForPasting","dropEffect","editors","serialized","serialize","clipboardData","setData","stringify","getData","ex","newEditors","deserializedEditor","deserialize","addCommands","isEditorHandlingKeyboard","assign","setEditingState","registerEditorTypes","types","defaultPropertiesToUpdate","getId","getLayer","pageIndex","currentPageIndex","addLayer","enable","disable","removeLayer","updateMode","editId","isFromKeyboard","loadSignatures","annotationElementId","setSelected","enterInEditMode","unselect","canCreateNewEmptyEditor","addNewEditor","updateToolbar","updateColor","action","updateDefaultParams","visible","updateButton","enableWaiting","mustWait","disableClick","enableClick","promises","getEditors","getEditor","addEditor","removeEditor","setTimeout","addDeletedAnnotationElement","addChangedExistingAnnotation","deleted","isDeletedAnnotationElement","removeDeletedAnnotationElement","removeChangedExistingAnnotation","addOrRebuild","setActiveEditor","propertiesToUpdate","ed","updateUI","updateUIForDefaultProperties","toggleSelected","select","isSelected","firstSelectedEditor","cleanUndoStack","drawingEditor","endDrawingSession","commit","noCommit","totalX","totalY","translateInPage","translationDone","setUpDragSession","savedX","savedY","savedPageIndex","newX","newY","newPageIndex","endDragSession","mustBeAddedInUndoStack","move","_setParentAndPosition","dragSelectedEditors","tx","ty","drag","rebuild","changeParent","getActive","shouldGetKeyboardEvents","isActive","getMode","imageManager","rangeCount","getRangeAt","commonAncestorContainer","parentWidth","parentHeight","rotator","getAttribute","range","collapsed","getClientRects","renderAnnotationElement","annotation","editorId","getRawValue","hasBeenModified","setMissingCanvas","annotationId","setCanvas","addMissingCanvas","AltText","added","review","initialize","l10n","_l10n","label","onClick","_reportTelemetry","guessedText","finish","focusVisible","hasData","setGuessedText","generatedAltText","toggleAltTextBadge","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","disabled","tooltip","DELAY_TO_SHOW_TOOLTIP","removeAttribute","textContent","parentNode","getElementForAltText","TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","passive","MIN_TOUCH_DISTANCE_TO_PINCH","touches","pointerDownAC","opts","cancelPointerDown","pointerType","opt","onTouchEnd","touch0","touch1","identifier","touch0X","screenX","touch0Y","screenY","touch1X","touch1Y","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","hypot","pDistance","origin","AnnotationEditor","_isCopy","_editToolbar","_initialOptions","_initialData","_isVisible","_zIndex","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","parameters","_willKeepAspectRatio","isCentered","_structTreeParentId","pageRotation","pageDimensions","pageTranslation","parentDimensions","isAttachedToDOM","_type","isDrawer","_defaultLineColor","_colorManager","deleteAnnotationElement","fakeEditor","FakeEditor","getNextId","_l10nResizer","topMiddle","topRight","middleRight","bottomMiddle","bottomLeft","middleLeft","_borderLineWidth","documentElement","parseFloat","getPropertyValue","_value","mime","_isDraggable","center","parentRotation","fixAndSetPosition","setInBackground","zIndex","setInForeground","setParent","focusin","focusout","relatedTarget","isMultipleSelection","setAt","screenToPageTranslation","_moveAfterPaste","baseX","baseY","_onTranslated","_onTranslating","translate","scrollIntoView","block","findNewParent","bx","by","getBaseTranslation","left","toFixed","_hasBeenMoved","_hasBeenResized","_mustFixPosition","moveInDOM","angle","pageTranslationToScreen","parentScale","setDims","fixDims","widthPercent","endsWith","heightPercent","getInitialTranslation","classes","savedDraggable","togglePointerEvents","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","_onResized","newWidth","newHeight","_round","round","minWidth","MIN_SIZE","minHeight","rotationMatrix","transf","invRotationMatrix","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","deltaX","deltaY","ratioX","ratioY","fromKeyboard","lastScreenX","lastScreenY","oldDiag","_onResizing","altTextFinish","addEditToolbar","removeEditToolbar","addContainer","editToolbarDiv","before","getClientDimensions","addAltTextButton","altTextData","guessedAltText","setGuessedAltText","serializeAltText","hasAltText","hasAltTextData","defaultL10nId","maxWidth","maxHeight","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","pointerdown","hasDraggingStarted","cancelDrag","_onStopDragging","clientX","clientY","pointerId","_onStartDragging","isPrimary","moveEditorInDOM","getRect","shiftX","shiftY","getRectInCurrentCoords","onceAdded","enableEditMode","isInEditMode","disableEditMode","needsToBeRebuilt","isOnScreen","bottom","right","innerHeight","innerWidth","rotate","_angle","serializeDeleted","popupRef","accessibilityData","isCopy","timeout","makeResizable","children","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","firstChild","lastChild","child","stopImmediatePropagation","preventScroll","disableEditing","enableEditing","canChangeContent","dblclick","_editorType","contentDiv","setAspectRatio","aspectRatio","telemetryInitialData","telemetryFinalData","_telemetryTimeout","querySelector","nodeName","resetAnnotationElement","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","h1","h2","update","isView","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","SerializableEmpty","AnnotationStorage","onSetModified","onResetModified","onAnnotationEditor","getValue","defaultValue","resetModified","modified","print","PrintAnnotationStorage","serializable","hasBitmap","editorStats","stats","typeToEditor","counters","computeTelemetryFinalData","resetModifiedIds","modifiedIds","ids","FontLoader","ownerDocument","styleElement","_document","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","systemFontInfo","disableFontFace","_inspectFont","loadedName","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","font","attached","missingFile","createNativeFontFace","loaded","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","complete","otherRequest","_loadTestFont","atob","int32","offset","spliceString","insert","called","XXXX_VALUE","checksum","fontFamily","isFontReady","fillText","FontFaceObject","translatedData","inspectFont","compiledGlyphs","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","objs","character","objId","cmds","path","Path2D","fontExtraProperties","getFactoryUrlProp","isRefProxy","num","gen","isValidExplicitDest","validRef","validName","dest","page","zoom","argsLen","allowNull","arg","LoopbackPort","listener","rmAbort","onAbort","removeEventListener","terminate","CallbackKind","StreamKind","onFn","wrapReason","MessageHandler","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","stream","capability","try","actionName","handler","ah","transfers","sendWithPromise","sendWithStream","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","enqueue","isCancelled","lastDesiredSize","sinkCapability","ready","onPull","onCancel","success","streamController","dataReason","allSettled","BaseCanvasFactory","enableHWA","_createCanvas","reset","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","_fetch","cMapData","catch","DOMCMapReaderFactory","BaseFilterFactory","addFilter","maps","fgColor","bgColor","addAlphaFilter","addLuminosityFilter","addHighlightHCMFilter","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","contain","svg","createElementNS","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","tableR","tableG","tableB","fgRGB","bgRGB","getSteps","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","feColorMatrix","feComponentTransfer","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","require","createRequire","DOMMatrix","ImageData","language","node_utils_fetchData","fs","readFile","NodeFilterFactory","NodeCanvasFactory","createCanvas","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","PathType","applyBoundingBox","bbox","region","BaseShadingPattern","isModifyingCurrentTransform","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","pathType","pattern","ownerBBox","getClippedPathBoundingBox","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","baseTransform","fillStyle","createPattern","domMatrix","setTransform","drawTriangle","p3","c1","c2","c3","coords","rowSize","tmp","scaleX","scaleY","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","backgroundColor","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","createImageData","putImageData","Float32Array","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","PaintType","TilingPattern","canvasGraphicsFactory","operatorList","xstep","ystep","paintType","tilingType","createPatternCanvas","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","clipBbox","executeOperatorList","endDrawing","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","MAX_PATTERN_SIZE","bboxWidth","bboxHeight","strokeStyle","fillColor","strokeColor","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","FULL_CHUNK_HEIGHT","SCALE_MATRIX","XY","MIN_MAX_INIT","CachedCanvases","canvasFactory","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","patternStroke","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","clipBox","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","startNewPathAndClipBox","isEmptyClip","putBinaryImageData","imgData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","getImageSmoothingEnabled","interpolate","actualScale","fround","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","canvasCtx","commonObjs","optionalContentConfig","markedContentStack","annotationCanvasMap","stateStack","pendingClip","pendingEOFill","xobjs","groupStack","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","beginDrawing","transparency","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","nextBreakPoint","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","hcmFilterId","savedFilter","_scaleImage","img","displayWidth","displayHeight","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","_createMaskCanvas","isPatternFill","currentTransform","cacheKey","maskCanvas","mainKey","cachedImage","maskToCanvas","minX","maxX","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","dashArray","dashPhase","intent","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","cp1x","cp1y","cp2x","cp2y","mirrorContextOperations","compose","dirtyBox","smask","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","subtype","backdrop","transferMap","maskCtx","maskOffsetX","maskOffsetY","maskX","maskY","old","pop","op","path2d","consumePath","newPath","addPath","multiplySelf","rescaleAndStroke","needRestore","paths","pendingTextPaths","invTransf","preMultiplySelf","spacing","fontRefName","fontObj","fontDirection","isType3Font","typeface","fallbackName","bold","italic","browserFontSize","rise","paintChar","patternFillTransform","patternStrokeTransform","fillStrokeMode","isAddToPathSet","invPatternTransform","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","spacingLength","charProcOperatorList","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","_getPattern","getShadingPattern","inv","group","currentCtx","isolated","knockout","bounds","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","annotationCanvas","savedCtx","skewX","skewY","positions","trans","images","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","GlobalWorkerOptions","workerPort","Worker","workerSrc","Metadata","parsedData","getRaw","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","view","viewState","printState","_setVisible","internal","userSet","OptionalContentConfig","creator","order","groups","baseState","off","getHash","operator","expression","policy","setVisibility","preserveRB","rbGroup","otherId","setOCGState","hasInitialVisibility","getOrder","getGroup","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","begin","_onReceiveData","addProgressListener","total","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","rangeReader","_begin","_progressiveDataLength","_loaded","onProgress","_removeRangeReader","reader","getFullReader","queuedChunks","PDFDataTransportStreamReader","getRangeReader","PDFDataTransportStreamRangeReader","requestDataRange","cancelAllRequests","_stream","_done","_filename","_requests","_headersReady","headersReady","isRangeSupported","isStreamingSupported","contentLength","requestCapability","_end","_queuedChunk","createHeaders","isHttp","httpHeaders","headers","Headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","allowRangeRequests","suggestedLength","extractFilenameFromHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","contentDispositionStr","iter","quot","part","parts","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","TextDecoder","fatal","quotindex","extvalue","encodingend","charset","getFilenameFromContentDispositionHeader","createResponseError","validateResponseStatus","createFetchOptions","withCredentials","abortController","credentials","redirect","getArrayBuffer","PDFFetchStream","_responseOrigin","_rangeRequestReaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_headersCapability","_disableRange","_rangeChunkSize","_abortController","getReader","_readCapability","responseOrigin","NetworkManager","currXhrId","pendingRequests","xhr","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","network_getArrayBuffer","rangeHeader","getResponseHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_url","_fullRequestId","_onHeadersReceived","_onDone","_onError","_cachedChunks","_storedError","fullRequestXhrId","fullRequestXhr","responseURL","rawResponseHeaders","getAllResponseHeaders","trimStart","lengthComputable","_requestId","_close","urlRegex","PDFNodeStream","sourceUrl","pathToFileURL","parseUrlOrPath","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","_readableStream","lstat","_setReadableStream","createReadStream","_error","readableStream","INITIAL_DATA","PDFObjects","TextLayer","FontInspector","textContentSource","finally","fontFamilyMap","pump","lang","styles","onBefore","abortEx","textDivs","textContentItemsStr","geom","textDiv","textDivProperties","hasText","hasEOL","atan2","fontName","PI","fontSubstitution","fontHeight","fontAscent","sin","cos","scaleFactorStr","divStyle","dir","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","br","cleanup","alpha","cached","opacity","lineHeight","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","XfaText","xfa","walk","shouldBuildText","getDocument","task","PDFDocumentLoadingTask","location","getUrlProp","Buffer","isNaN","getDataProp","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","stopAtErrors","maxImageSize","chrome","canvasMaxAreaInBytes","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","cMapReaderFactory","standardFontDataFactory","wasmFactory","port","_worker","docParams","apiVersion","evaluatorOptions","transportParams","loadingParams","destroyed","workerIdPromise","messageHandler","networkStream","NetworkStream","workerId","transport","WorkerTransport","_transport","_capability","onPassword","_pendingDestroy","onDataRange","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","getPageIndex","ref","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getRenderingIntent","getPermissions","getMetadata","getMarkInfo","saveDocument","getDownloadInfo","downloadInfoCapability","keepLoadedFonts","startCleanup","loadingTask","cachedPageNumber","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","_intentStates","getViewport","getAnnotations","getPageJSActions","getXfa","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","intentState","streamReaderCancelTimeout","intentPrint","displayReadyCapability","lastChunk","separateAnnots","_pumpOperatorList","renderTasks","internalRenderTask","_abortOperatorList","Stats","InternalRenderTask","useRequestAnimationFrame","renderTask","initializeGraphics","operatorListChanged","getOperatorList","opListTask","opListReadCapability","streamTextContent","includeMarkedContent","disableNormalization","highWaterMark","getTextContent","getStructTree","_destroy","waitOn","force","completed","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","curCacheKey","curIntentState","_isSameOrigin","otherUrl","_createCDNWrapper","wrapper","createObjectURL","fromPort","terminateEarly","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","import","loader","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cachedPromise","isOpList","modifiedIdsHash","terminated","sink","readyReason","_numPages","htmlForXfa","updatePassword","err","exportedData","exportedError","fontAdded","imageRef","pageProxy","dataLen","imageData","refStr","results","RenderTask","onContinue","form","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","StepperManager","init","getNextBreakPoint","gfx","cancelAnimationFrame","updateOperatorList","requestAnimationFrame","build","makeColorComp","scaleAndClamp","ColorConverters","CMYK_G","G_CMYK","G_RGB","G_rgb","G_HTML","G","RGB_G","RGB_rgb","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","CMYK_rgb","CMYK_HTML","components","RGB_CMYK","BaseSVGFactory","skipDimensions","_createSVG","DOMSVGFactory","XfaLayer","setupStorage","storage","storedData","xfaOn","xfaOff","checked","option","selected","selectedIndex","setAttributes","linkService","isHTMLAnchorElement","HTMLAnchorElement","addLinkAttributes","newWindow","dataId","xfaHtml","rootHtml","isNotForRichText","rootDiv","createTextNode","childHtml","xmlns","querySelectorAll","hidden","DEFAULT_TAB_INDEX","GetElementsByNameSet","AnnotationElementFactory","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_createContainer","_createQuadrilaterals","_hasPopupData","titleObj","contentsObj","richText","_isEditable","isEditable","hasPopupData","updateEdited","popup","resetEdited","currentRect","setRotation","alternativeText","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","_commonActions","setColor","jsName","styleName","detail","colorType","colorArray","noView","noPrint","userName","readonly","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","defs","clipPath","rectWidth","rectHeight","backgroundImage","_createPopup","modificationDate","parentRect","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","maybeShow","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_editOnDoubleClick","annotationEditorType","isTooltipOnly","link","isBound","_bindNamedAction","attachment","attachmentDest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","dispatchEvent","Event","showElementAndHideCanvas","previousSibling","_getKeyModifier","_setEventListener","elementData","baseName","eventName","valueGetter","modifier","focused","_setEventListeners","Blur","Focus","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","defaultFieldValue","blurListener","scrollLeft","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","combWidth","letterSpacing","verticalAlign","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedValues","getItems","multipleSelection","findIndex","selectChild","indices","editable","changeEx","keyDown","PopupElement","elementIds","ariaHasPopup","trigger","baseColor","outlineColor","header","dateObj","contents","_formatContents","popupLines","popupContent","lineAttributes","line","lines","useParentRect","normalizedRect","popupLeft","popupTop","textPosition","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","vertices","points","polyline","inkLists","thickness","AnnotationLayer","accessibilityManager","annotationEditorUIManager","structTreeLayer","_annotationEditorUIManager","hasEditableAnnotations","contentElement","ariaAttributes","getAriaAttributes","moveElementInDOM","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","rendered","addLinkAnnotations","_defaultBorderStyle","replaceWith","after","editableAnnotation","_hasNoCanvas","getEditableAnnotations","getEditableAnnotation","rawWidth","EOL_PATTERN","FreeTextEditor","_translateEmpty","_defaultColor","_defaultFontSize","_internalPadding","setFontsize","editorDiv","savedFontsize","col","savedColor","overlayDiv","contentEditable","editorDivKeydown","editorDivFocus","editorDivBlur","editorDivInput","editorDivPaste","innerText","prevChild","childNodes","savedDisplay","savedVisibility","savedText","newText","trimEnd","setText","posX","posY","nodeValue","deleteFromDocument","insertNode","collapseToStart","startContainer","startOffset","bufferBefore","bufferAfter","newRange","Range","beforeLength","setStart","setEnd","removeAllRanges","addRange","replaceChildren","padding","structTreeParentId","Outline","toSVGPath","_rotation","_rescale","_rescaleAndSwap","_translate","svgRound","_normalizePoint","_normalizePagePoint","createBezierPoints","FreeDrawOutliner","scaleFactor","innerMargin","lastTop","lastBottom","diffX","diffY","diffD","K","nY","thX","thY","lastTopX","lastTopY","lastBottomX","lastBottomY","newFreeDrawOutline","outline","FreeDrawOutline","getOutlines","last","N","lastPoint","lastPointX","lastPointY","ltrCallback","newOutliner","getNewOutline","outliner","HighlightOutliner","EPSILON","shiftedMinX","shiftedMinY","lastEdge","edge","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","HighlightOutline","middle","y4","polygon","prevX","prevY","classNamesForOutlining","FreeHighlightOutliner","FreeHighlightOutline","ColorPicker","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","blue","green","pink","red","yellow","swatch","renderMainDropdown","dropdown","role","nextSibling","HighlightEditor","_moveCaret","_defaultThickness","_defaultOpacity","highlightId","numberOfColors","outlinerForOutline","highlightOutlines","clipPathId","drawLayer","finalizeDraw","drawOutline","rootClass","highlightOutline","free","updateProperties","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","toolbar","addUndoableEditor","mustBeSelected","draw","highlightDiv","pointerover","hovered","pointerleave","setPosition","startHighlighting","_freeHighlight","_freeHighlightId","_freeHighlightClipId","DrawingOptions","updateProperty","updateSVGProperty","toSVGProperties","updateAll","DrawingEditor","_drawId","mustBeCommitted","_addOutlines","drawOutlines","drawId","drawingOptions","_drawingOptions","defaultProperties","_mergeSVGProperties","defaultSVGProperties","p1Keys","getDefaultDrawingOptions","_options","typesMap","supportMultipleDrawings","propertyName","_defaultDrawingOptions","_currentParent","_currentDrawId","_updateProperty","savedValue","getPathResizingSVGProperties","getPathResizedSVGProperties","_x","_y","getPathTranslatedSVGProperties","moving","updateParent","pW","pH","updateRotation","updateParentDimensions","onScaleChangingWhenDrawing","drawDiv","createDrawerInstance","_parentWidth","_parentHeight","startDrawing","_isLTR","_endDraw","isCancellable","removeLastElement","_drawMove","timeStamp","startNew","_cleanup","lastElement","getLastElement","setLastElement","isAborted","_INNER_MARGIN","createDrawingOptions","_data","deserializeDraw","_pageX","_pageY","_pageWidth","_pageHeight","_innerWidth","serializeDraw","InkDrawOutliner","Float64Array","InkDrawOutline","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","serializedLines","serializedPoints","rescaleFn","newLines","margin","marginX","marginY","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","rotationTransform","PRECISION","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","InkDrawingOptions","viewerParameters","_viewParameters","InkEditor","ContourDrawOutline","SignatureExtractor","sigmaSFactor","sigmaR","kernelSize","i0","j0","Int32Array","kk","threshold","lnbd","nbd","contours","ij","pix","i2","j2","isHole","contour","contour0","shiftI","shiftJ","i1","j1","i3","j3","i4","j4","ij3","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","atan","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","sigmaS","kernel","sigmaS2","halfSize","exp","rangeValues","sigmaR2","out","histogram","sum","norm","l","neighbour","Uint8ClampedArray","M","L","spos","originalBitmap","prevWidth","prevHeight","log2","isteps","grayImage","extractContoursFromText","fontStyle","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","SCALE","uint8Buf","contourList","processDrawnLines","curves","mustSmooth","areContours","linesAndPoints","xScale","yScale","newCurves","reducedPoints","newPoints","compressSignature","bufferType","minDiff","maxDiff","outlinesLength","dx","Int8Array","Int16Array","headerLength","BYTES_PER_ELEMENT","CompressionStream","writer","getWriter","BufferCtor","diffs","Response","readable","decompressSignature","signatureData","DecompressionStream","numberOfDrawings","diffsOffset","POINTS_PROPERTIES_NUMBER","SignatureOptions","DrawnSignatureOptions","SignatureEditor","_defaultDrawnSignatureOptions","hasDescription","hasDescriptionStats","hasNoAltText","uuid","heightInPage","addSignature","setUuid","getSignaturePreview","hasBeenSaved","getFromImage","getFromText","fontInfo","getDrawnSignature","isSignature","alt","StampEditor","bitmapUrl","bitmapFile","pasteEditor","getAsFile","hasAltTextStats","fromId","alt_text_modal","alt_text_type","mlGuessAltText","updateAltTextData","isEnabledFor","copyCanvas","guess","channels","accept","files","click","bitmapId","MAX_RATIO","maxDataDimension","maxPreviewDimension","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","toUrl","toDataURL","missingCanvas","structParent","_structTree","changes","isSame","isSameAltText","stamps","area","prevData","isSamePageIndex","AnnotationEditorLayer","annotationLayer","editorTypes","_initialized","isInvisible","disableTextSelection","toggleAnnotationLayerPointerEvents","enableTextSelection","annotationElementIds","editables","changedAnnotations","resetAnnotations","attach","removePointerInTextLayer","currentMode","startDrawingSession","pause","oldRotation","DrawLayer","_svgFactory","pathId","clipPathUse","isPathUpdatable","hasClip","use","mustRemoveSelfIntersections","maskId","use1","use2","cloneNode","elementOrId","pathElement","_pdfjsTestingUtils","pdfjsLib","FeatureTest","ImageKind"],"sourceRoot":""}
|